Data
Coverage
Data quality and serve-stats coverage across the canonical match database.
Coverage by year
| Year | Matches | With serve stats | Coverage |
|---|---|---|---|
| 2026 | 11,953 | 5,207 | 43.6% |
| 2025 | 43,512 | 13,112 | 30.1% |
| 2024 | 32,334 | 14,268 | 44.1% |
| 2023 | 30,751 | 13,417 | 43.6% |
| 2022 | 28,959 | 12,653 | 43.7% |
| 2021 | 22,003 | 10,097 | 45.9% |
| 2020 | 9,333 | 4,671 | 50.0% |
| 2019 | 28,010 | 11,350 | 40.5% |
| 2018 | 30,146 | 12,689 | 42.1% |
| 2017 | 30,544 | 11,503 | 37.7% |
| 2016 | 32,626 | 12,235 | 37.5% |
| 2015 | 31,127 | 8,430 | 27.1% |
| 2014 | 29,948 | 8,627 | 28.8% |
| 2013 | 29,352 | 8,873 | 30.2% |
| 2012 | 27,975 | 9,155 | 32.7% |
| 2011 | 25,985 | 8,829 | 34.0% |
| 2010 | 24,695 | 9,181 | 37.2% |
| 2009 | 31 | 0 | 0.0% |
Tournaments in 2017
Source breakdown
| Source | Match count |
|---|---|
| sackmann | 413,569 |
| itf | 36,188 |
| atp | 19,528 |
Fill failures
Total failures 75
Resolved 68
Unresolved 7
By reason
| Reason | Total | Resolved | Unresolved |
|---|---|---|---|
no_canonical_match | 71 | 65 | 6 |
player_resolution | 4 | 3 | 1 |
Recent unresolved
| Player A | Player B | Competition | Reason | Scan date |
|---|---|---|---|---|
| Svyatoslav Gulin | Denys Klok | Shymkent Challenger 2026 | no_canonical_match | 2026-04-26 |
| Blake Ellis | Rigele Te | Jiujiang Challenger 2026 | no_canonical_match | 2026-04-26 |
| Oleg Prihodko | Alexandr Binda | Shymkent Challenger 2026 | no_canonical_match | 2026-04-26 |
| Manas Dhamne | Nikita Belozertsev | Shymkent Challenger 2026 | player_resolution | 2026-04-26 |
| Diego Dedura-Palomero | Billy Harris | Mauthausen Challenger 2026 | no_canonical_match | 2026-04-26 |
| Maxim Shin | Denys Klok | Shymkent Challenger 2026 | no_canonical_match | 2026-04-25 |
| Tai Leonard Sach | Hayato Matsuoka | Gwangju Challenger 2026 | no_canonical_match | 2026-04-18 |
Canonical overrides
| Kind | Source | Expected name | Reason | Created |
|---|---|---|---|---|
| player | atp | Alex de Minaur | 835: ATP bootstrap dup Alex De Minaur (10007632) vs TML Alex de Minaur (10013677) -- pin ATP to TML canonical | 2026-04-26 18:25 |
| player | atp | Mackenzie McDonald | 835: ATP bootstrap dup Mackenzie Mcdonald (10001890) vs TML Mackenzie McDonald (10013601) -- pin ATP to TML canonical | 2026-04-26 18:25 |
| player | atp | Jesper de Jong | 835: ATP bootstrap dup Jesper De Jong (10009200) vs TML Jesper de Jong (10013597) -- pin ATP to TML canonical | 2026-04-26 18:25 |
| player | atp | Botic van de Zandschulp | 835: ATP bootstrap dup Botic Van De Zandschulp (10003782) vs TML Botic van de Zandschulp (10013646) -- pin ATP to TML canonical | 2026-04-26 18:25 |
| player | sackmann | Albert Ramos-Vinolas | Sackmann short-name dup: Albert Ramos (sack:105077, 973 matches) is Albert Ramos-Vinolas (atp:r772, 27 matches) | 2026-04-26 18:25 |
| player | sackmann | Ricardo Rodriguez - Pace | Sackmann short-name dup: Ricardo Rodriguez (sack:106175, 727 matches) is Ricardo Rodriguez - Pace (atp:rb00) | 2026-04-26 18:25 |
| player | sackmann | Victor Estrella Burgos | Sackmann short-name dup: Victor Estrella (sack:103607, 503 matches) is Victor Estrella Burgos (atp:e224) | 2026-04-26 18:25 |
| player | sackmann | Jose Hernandez-Fernandez | Sackmann short-name dup: Jose Hernandez (sack:105497, 498 matches) is Jose Hernandez-Fernandez (atp:h896) | 2026-04-26 18:25 |
| player | sackmann | Roberto Cid Subervi | Sackmann short-name dup: Roberto Cid (sack:106232, 482 matches) is Roberto Cid Subervi (atp:cf88, 38 matches) | 2026-04-26 18:25 |
| player | sackmann | Alex Bogomolov Jr. | Sackmann short-name dup: Alex Bogomolov Jr (sack:104166) is Alex Bogomolov Jr. (atp:b842, 326 matches) -- period-only diff | 2026-04-26 18:25 |
| player | sackmann | Arklon Huertas Del Pino Cordova | Sackmann short-name dup: Arklon Huertas Del Pino (sack:207736, 252 matches) is Arklon Huertas Del Pino Cordova (atp:h0c9, 37 matches) | 2026-04-26 18:25 |
| player | sackmann | Ignacio Parisca Romera | Sackmann short-name dup: Ignacio Parisca (sack:212306, 124 matches) is Ignacio Parisca Romera (atp:p0i5) | 2026-04-26 18:25 |
| player | sackmann | Daniel Merida | Sackmann long-name dup: Daniel Merida Aguilar (sack:210017, 226 matches pre-2025) is Daniel Merida (atp:m0n7, 101 matches 2025+) | 2026-04-26 18:25 |
| player | sackmann | Marcelo Zormann | Sackmann long-name dup: Marcelo Zormann Da Silva (sack:110774, 264 matches pre-2025) is Marcelo Zormann (atp:z363, 3 matches 2025+) | 2026-04-26 18:25 |
| player | sackmann | Amr Elsayed | Sackmann long-name dup: Amr Elsayed Abdou Ahmed Mohamed (sack:209871, 175 matches pre-2025) is Amr Elsayed (atp:a0g8, 77 matches 2025+) | 2026-04-26 18:25 |
| player | sackmann | Jordan Correia | Sackmann long-name dup: Jordan Correia Passos Do Carmo (sack:144756, 187 matches pre-2025) is Jordan Correia (atp:cn08, 3 matches 2025+) | 2026-04-26 18:25 |
| player | sackmann | Younes Lalami | Sackmann long-name dup: Younes Lalami Laaroussi (sack:207794, 61 matches pre-2025) is Younes Lalami (atp:l0ck, 71 matches 2025+) | 2026-04-26 18:25 |
| player | sackmann | Diego Dedura | Sackmann long-name dup: Diego Dedura Palomero (sack:212309, 79 matches pre-2025) is Diego Dedura (atp:d0lj, 56 matches 2025+) | 2026-04-26 18:25 |
| player | sackmann | Daniel Salazar | Sackmann long-name dup: Daniel Salazar Martinez (sack:202369, 37 matches pre-2025) is Daniel Salazar (atp:s0gm, 71 matches 2025+) | 2026-04-26 18:25 |
| player | sackmann | Nicolas Villalon | Sackmann long-name dup: Nicolas Villalon Valdes (sack:211477, 88 matches pre-2025) is Nicolas Villalon (atp:v0f6, 40 matches 2025+) | 2026-04-26 18:25 |
| player | sackmann | Luis Carlos Alvarez | Sackmann long-name dup: Luis Carlos Alvarez Valdes (sack:211468, 46 matches pre-2025) is Luis Carlos Alvarez (atp:a0iy, 17 matches 2025+) | 2026-04-26 18:25 |
| player | sackmann | Johan Alexander Rodriguez | Sackmann long-name dup: Johan Alexander Rodriguez Rodriguez (sack:208909, 101 matches) is Johan Alexander Rodriguez (atp:r0f1, 29 matches 2025+) | 2026-04-26 18:25 |
| player | sackmann | Michael Quintero | Sackmann long-name dup: Michael Quintero Aguilar (sack:209376, 7 matches) is Michael Quintero (sack:103590 + atp:q017, 193 matches) | 2026-04-26 18:25 |
| player | sackmann | Darrshan Suresh | Sackmann long-name dup: Darrshan Suresh Kumar (sack:212578, 2 matches) is Darrshan Suresh (sack:207559 + atp:s0gg, 77 matches) | 2026-04-26 18:25 |
| player | sackmann | Yi Zhou | Sackmann long-name dup: Yi Zhou Liu (sack:207528, 1 match) is Yi Zhou (atp:z0cq, 154 matches) | 2026-04-26 18:25 |
| player | sackmann | Arkadiusz Kocyla | Sackmann data corruption: 'Arkadiusz Kocyla Kd20' (sack:106258) has ATP ID 'Kd20' embedded in name -- same as Arkadiusz Kocyla (sack:111177 + atp:kd20, 118 matches) | 2026-04-26 18:25 |
| player | itf | Justin Roberts | ITF typo: 'Justin Robertsm' (itf:800602232, 9 matches) is Justin Roberts (sack:134490 + atp:rh17, 201 matches) -- trailing 'm' is garbage in raw ITF CSV | 2026-04-26 18:25 |
| player | sackmann | Dimitar Grabul | Sackmann truncation dup: Dimitar Grabuloski (sack:103872, 126 matches) is Dimitar Grabul (atp:g580) -- ATP truncated surname | 2026-04-26 18:25 |
| player | atp | Miloslav Mecir Jr | ATP name-variant dup: Miloslav Mecir (atp:mf36) is Miloslav Mecir Jr (sack:105080, DOB:1988-01-20) -- ATP drops 'Jr', father is sack:101036 (DOB:1964) | 2026-04-26 18:25 |
| player | sackmann | Jaime Fermosell Delgado | Sackmann double-entry dup: Jaime Fermosell (sack:126744) and Jaime Fermosell Delgado (sack:126222, atp:fa33) share DOB 1997-12-06 ESP -- same person, two sackmann IDs | 2026-04-26 18:25 |
| player | sackmann | Mubarak Shannan Zayid | Sackmann long-name dup: Mubarak Shannan Zayid Alharrasi (sack:212512, 9 matches QAT) is Mubarak Shannan Zayid (sack:122570, DOB:1995-04-14 QAT, 89 matches) -- tribal name variant | 2026-04-26 18:25 |
| player | sackmann | Nils Brinkmann | Sackmann truncation dup: Nils Brinkman (sack:121777, 93 matches) is Nils Brinkmann (atp:bj48) -- missing final 'n' | 2026-04-26 18:25 |
| player | sackmann | Pruchya Isaro | Sackmann truncation dup: Pruchya Isarow (sack:111181, 213 matches) is Pruchya Isaro (atp:i326) -- trailing 'w' in sackmann | 2026-04-26 18:25 |
| player | sackmann | Inigo Cervantes | sackmann/atp name mismatch: Inigo Cervantes Huegun (sack:105438) is Inigo Cervantes (atp:ca33) β dropped 'Huegun' | 2026-04-26 18:25 |
| player | sackmann | Soonwoo Kwon | sackmann/atp name mismatch: Soon Woo Kwon (sack:126952) is Soonwoo Kwon (atp:kf17) β spacing | 2026-04-26 18:25 |
| player | sackmann | Gonzalo Oliveira | sackmann/atp name mismatch: Goncalo Oliveira (sack:123819) is Gonzalo Oliveira (atp:o482) β spelling | 2026-04-26 18:25 |
| player | sackmann | Rubin Statham | sackmann/atp name mismatch: Jose Rubin Statham (sack:104907) is Rubin Statham (atp:sf89) β dropped 'Jose' | 2026-04-26 18:25 |
| player | sackmann | Mukund Sasikumar | sackmann/atp name mismatch: Sasi Kumar Mukund (sack:124154) is Mukund Sasikumar (atp:mp13) β name reorder + spacing | 2026-04-26 18:25 |
| player | sackmann | Duckhee Lee | sackmann/atp name mismatch: Duck Hee Lee (sack:117353) is Duckhee Lee (atp:le01) β spacing | 2026-04-26 18:25 |
| player | sackmann | Fred Gil | sackmann/atp name mismatch: Frederico Gil (sack:104523) is Fred Gil (atp:g717) β Frederico β Fred | 2026-04-26 18:25 |
| player | sackmann | J.J. Wolf | sackmann/atp name mismatch: J J Wolf (sack:200670) is J.J. Wolf (atp:w09g) β formatting (real name Jeffrey John Wolf) | 2026-04-26 18:25 |
| player | sackmann | Yun seong Chung | sackmann/atp name mismatch: Yunseong Chung (sack:126283) is Yun seong Chung (atp:ch90) β spacing | 2026-04-26 18:25 |
| player | sackmann | Santiago Rodriguez Taverna | sackmann/atp name mismatch: Santiago Fa Rodriguez Taverna (sack:144973) is Santiago Rodriguez Taverna (atp:rh59) β dropped 'Fa' | 2026-04-26 18:25 |
| player | sackmann | Seongchan Hong | sackmann/atp name mismatch: Seong Chan Hong (sack:111805) is Seongchan Hong (atp:hc21) β spacing | 2026-04-26 18:25 |
| player | sackmann | JiSung Nam | sackmann/atp name mismatch: Ji Sung Nam (sack:106227) is JiSung Nam (atp:n652) β spacing | 2026-04-26 18:25 |
| player | sackmann | Yunchaokete Bu | sackmann/atp name mismatch: Bu Yunchaokete (sack:207352) is Yunchaokete Bu (atp:y09v) β name order reversed | 2026-04-26 18:25 |
| player | sackmann | Murkel Dellien | sackmann/atp name mismatch: Murkel Alejandro Dellien Velasco (sack:123961) is Murkel Dellien (atp:dc48) β dropped middle/last | 2026-04-26 18:25 |
| player | sackmann | Abdullah Shelbayh | sackmann/atp name mismatch: Abedallah Shelbayh (sack:209406) is Abdullah Shelbayh (atp:s0nv) β Abedallah β Abdullah | 2026-04-26 18:25 |
| player | sackmann | Alafia Ayeni | sackmann/atp name mismatch: Olukayode Alafia Damina Ayeni (sack:200366) is Alafia Ayeni (atp:a09p) β shortened | 2026-04-26 18:25 |
| player | sackmann | Miloslav Mecir | sackmann/atp name mismatch: Miloslav Mecir Jr (sack:105080) is Miloslav Mecir (atp:mf36) β dropped Jr suffix | 2026-04-26 18:25 |