API Reference
Alternative Endpoints (Name or ID)
These endpoints accept a player or tournament name (URL-encoded, e.g. Carlos%20Alcaraz) or a numeric ID, where the core endpoints need numeric IDs. They return a different response format from the core endpoints, so they are not drop-in replacements. If you already have numeric IDs, prefer the core endpoints in the main groups.
Alternatives to core endpoints
Each of these serves the same purpose as a core endpoint:
Full Player Profile by Name or ID
GET
Returns bio, ranking, prize money, photos, and finals years for one player. Path is a URL-encoded display name or numeric ID โ not a slug./tennis/v2/profile/Carlos%20AlcarazPath Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
player_id_or_name | Yes | string | URL-encoded display name ( Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}. |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
type | No | string | Use with a numeric player ID to choose the ATP or WTA player with that ID: atp or wta. Example: type=wta. Not needed when you pass a player name. |
Response Properties
| Field | Type | Description |
|---|---|---|
name | string | Display name. Reuse this (URL-encoded) on other advanced routes. |
birthday | string | Date of birth as ISO-8601. |
information | object | Bio: turnedPro, height, plays, coach, playerStatus, social links. |
currentRank | integer | Current ranking position. |
careerMoney | integer | Career prize money (whole currency units). |
type | string | Tour of this profile: atp or wta. |
image | string | Photo path, e.g. /tennis/v2/ms-api/uploads/Photo/atp/05992.jpg. GET that URL for the JPEG. |
finalYears | array | Years that have finals data for this player. |
Player Surface Summary by Name or ID
GET
Retrieve a player's year-by-year win/loss record across all court surfaces, including overall results, hard courts, indoor hard courts, clay courts, and grass courts./tennis/v2/profile/Novak%20Djokovic/surface-summaryPath Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
player_id_or_name | Yes | string | URL-encoded display name ( Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}. |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
type | No | string | Use with a numeric player ID to choose the ATP or WTA player with that ID: atp or wta. Example: type=wta. Not needed when you pass a player name. |
includeAll | No | boolean | Include Challenger/ITF and full history where supported. Example: includeAll=true |
Response Properties
| Field | Type | Description |
|---|---|---|
year | string | Season year, or career. |
sum / hard / ihard / clay / grass | object | Win/loss counts on that surface for that year. |
Player Match History by Name or ID
GET
Returns this playerโs match history split into singles, doubles, and qualifying. Not a profile object./tennis/v2/profile/Carlos%20Alcaraz/matches-played?page=1&limit=10Path Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
player_id_or_name | Yes | string | URL-encoded display name ( Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}. |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
type | No | string | Use with a numeric player ID to choose the ATP or WTA player with that ID: atp or wta. Example: type=wta. Not needed when you pass a player name. |
court | No | string | Surface name. Prefer this over surface. Example: court=Clay. |
surface | No | string | Filter by surface name. Alias of court. Example: surface=clay or court=Clay. |
year | No | integer | Filter to a specific year. Example: year=2026 |
tournament | No | string | Filter by tournament name. Example: tournament=EFG%20Swiss%20Open%20-%20Gstaad |
includeAll | No | boolean | Include Challenger/ITF and full history where supported. Example: includeAll=true |
page | No | integer | Page number on advanced routes, starting at 1. Do not send pageNo here. Example: page=1 |
limit | No | integer | Results per page on advanced routes (use page + limit, not pageNo + pageSize). Default varies by endpoint. Example: limit=10 |
level | No | integer | Tournament level id. Example: level=4. |
round | No | string | Round filter. Example: round=Final. |
week | No | integer | Tour week number when supported. Example: week=12. |
Response Properties
| Field | Type | Description |
|---|---|---|
singles / doubles / qualifying | array | Match rows for that draw. On completed rows player1 is the winner. |
page / pageNo / pageSize / limit | integer | Pagination. page + limit (pageNo / pageSize are accepted as aliases). |
total / totalPages / singlesCount | integer | Totals for walking pages. |
Player Finals by Year (Name or ID)
GET
Returns all tournament finals the player reached in the given year, with result (won/lost)./tennis/v2/profile/Novak%20Djokovic/finals/2024Path Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
player_id_or_name | Yes | string | URL-encoded display name ( Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}. |
year | Yes | integer | 4-digit season year, e.g. "2024" |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
type | No | string | Use with a numeric player ID to choose the ATP or WTA player with that ID: atp or wta. Example: type=wta. Not needed when you pass a player name. |
Player Match Stats by Year (Name or ID)
GET
Retrieve a player's detailed match statistics for a specific season, including service performance, return performance, break point efficiency, total games played, and overall points won./tennis/v2/profile/Novak%20Djokovic/match-stat/2024Path Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
player_id_or_name | Yes | string | URL-encoded display name ( Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}. |
year | Yes | string | integer | 4-digit year (e.g. "2024") or "all" for career totals |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
type | No | string | Use with a numeric player ID to choose the ATP or WTA player with that ID: atp or wta. Example: type=wta. Not needed when you pass a player name. |
surface | No | string | Filter by surface name. Alias of court. Example: surface=clay or court=Clay. |
court | No | string | Surface name. Prefer this over surface. Example: court=Clay. |
round | No | string | Round filter. Example: round=Final. |
level | No | integer | Tournament level id. Example: level=4. |
includeAll | No | boolean | Include Challenger/ITF and full history where supported. Example: includeAll=true |
Response Properties
| Field | Type | Description |
|---|---|---|
games | integer | Matches included in the aggregate. |
playerWins / opponentWins | integer | Wins for this player vs opponents in the filtered set. |
serviceStats / returnStats | object | Per-game serve and return rates (acesGm, firstServe, โฆ). |
breakPointsServe / breakPointsRtn | object | Break-point save/convert and hold rates. |
Player Performance Breakdown by Name or ID
GET
Returns win/loss records broken down by round, tournament level, and opponent ranking range./tennis/v2/profile/Novak%20Djokovic/breakdownPath Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
player_id_or_name | Yes | string | URL-encoded display name ( Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}. |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
type | No | string | Use with a numeric player ID to choose the ATP or WTA player with that ID: atp or wta. Example: type=wta. Not needed when you pass a player name. |
includeAll | No | boolean | Include all career years (default: current season), e.g. includeAll=true |
Response Properties
| Field | Type | Description |
|---|---|---|
{year} or career | object | One object per season year, plus a career bucket. |
court / round / rank / level / levelFinals | object | Win/loss maps keyed by surface, round, rank band, or tournament level. |
Player Filter Options by Name or ID
GET
Retrieve all available filter options for tennis statistics and search endpoints, including court surfaces, tournament rounds, competition levels, and available seasons/years. Use these values to build valid filter queries for other API endpoints./tennis/v2/profile/Novak%20Djokovic/filtersPath Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
player_id_or_name | Yes | string | URL-encoded display name ( Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}. |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
type | No | string | Use with a numeric player ID to choose the ATP or WTA player with that ID: atp or wta. Example: type=wta. Not needed when you pass a player name. |
Interesting H2H for Player by Name or ID
GET
Retrieve a player's most notable head-to-head rivalries, including the opponent's name, overall head-to-head record, tour type, and player profile images./tennis/v2/profile/Novak%20Djokovic/interestingPath Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
player_id_or_name | Yes | string | URL-encoded display name ( Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}. |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
type | No | string | Use with a numeric player ID to choose the ATP or WTA player with that ID: atp or wta. Example: type=wta. Not needed when you pass a player name. |
Advanced H2H Statistics by Name or ID
GET
This example uses /tennis/v2/h2h/stats/atp/Novak%20Djokovic/Carlos%20Alcarazatp. Use wtafor the women's dataset.Career head-to-head aggregates for two players: match record, serve and return stats, break points, tiebreaks, deciding-set and first-set trends, tournament-level splits, and surface wins. Optional filters: court (preferred; surface is an alias), year, tournament, round, and level.Path Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value. |
player1_id_or_name | Yes | string | First player: URL-encoded display name ( Carlos%20Alcaraz) or numeric ID. |
player2_id_or_name | Yes | string | Second player: URL-encoded display name ( Jannik%20Sinner) or numeric ID. |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
court | No | string | Surface name. Prefer this over surface. Example: court=Clay. |
surface | No | string | Filter by surface name. Alias of court. Example: surface=clay or court=Clay. |
year | No | integer | Filter to a specific year. Example: year=2026 |
tournament | No | string | Filter by tournament name. Example: tournament=EFG%20Swiss%20Open%20-%20Gstaad |
includeAll | No | boolean | Include Challenger/ITF and full history where supported. Example: includeAll=true |
page | No | integer | Page number on advanced routes, starting at 1. Do not send pageNo here. Example: page=1 |
limit | No | integer | Results per page on advanced routes (use page + limit, not pageNo + pageSize). Default varies by endpoint. Example: limit=10 |
level | No | integer | Tournament level id. Example: level=4. |
round | No | string | Round filter. Example: round=Final. |
week | No | integer | Tour week number when supported. Example: week=12. |
Full H2H History by Name or ID
GET
This example uses /tennis/v2/h2h/history/atp/Novak%20Djokovic/Carlos%20Alcaraz?surface=hardatp. Use wtafor the women's dataset.Returns a full history of past matches played between two playersPath Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value. |
player1_id_or_name | Yes | string | First player: URL-encoded display name ( Carlos%20Alcaraz) or numeric ID. |
player2_id_or_name | Yes | string | Second player: URL-encoded display name ( Jannik%20Sinner) or numeric ID. |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
court | No | string | Surface name. Prefer this over surface. Example: court=Clay. |
surface | No | string | Filter by surface name. Alias of court. Example: surface=clay or court=Clay. |
year | No | integer | Filter to a specific year. Example: year=2026 |
tournament | No | string | Filter by tournament name. Example: tournament=EFG%20Swiss%20Open%20-%20Gstaad |
includeAll | No | boolean | Include Challenger/ITF and full history where supported. Example: includeAll=true |
page | No | integer | Page number on advanced routes, starting at 1. Do not send pageNo here. Example: page=1 |
limit | No | integer | Results per page on advanced routes (use page + limit, not pageNo + pageSize). Default varies by endpoint. Example: limit=10 |
level | No | integer | Tournament level id. Example: level=4. |
round | No | string | Round filter. Example: round=Final. |
week | No | integer | Tour week number when supported. Example: week=12. |
H2H Filter Options by Name or ID
GET
This example uses /tennis/v2/h2h/filters/Novak%20Djokovic/Jannik%20Sinner/atpatp. Use wtafor the women's dataset.Retrieve all available filter options for head-to-head comparisons, including court surfaces, tournament rounds, competition levels, tournaments, and seasons. Use these values to build valid filter queries for H2H endpoints.Path Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
player1_id_or_name | Yes | string | First player: URL-encoded display name ( Carlos%20Alcaraz) or numeric ID. |
player2_id_or_name | Yes | string | Second player: URL-encoded display name ( Jannik%20Sinner) or numeric ID. |
atp|wta | Yes | string | Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value. |
Tournament Details by Name and Year
GET
This example uses /tennis/v2/tournament/atp/EFG%20Swiss%20Open%20-%20Gstaad/2026atp. Use wtafor the women's dataset.Returns general tournament info (surface, level, prize money, dates) for a specific yearPath Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value. |
tournament | Yes | string | Tournament name ("EFG%20Swiss%20Open%20-%20Gstaad") |
year | Yes | integer | Year Value(2026) |
Past Champions by Name and Year
GET
This example uses /tennis/v2/tournament/atp/EFG%20Swiss%20Open%20-%20Gstaad/2026/past-championsatp. Use wtafor the women's dataset.Returns a list of all previous winners up to and including the specified year.Path Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value. |
tournament | Yes | string | Tournament name ("EFG%20Swiss%20Open%20-%20Gstaad") |
year | Yes | integer | Year Value(2026) |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
includeAll | No | boolean | Include Challenger/ITF and full history where supported. Example: includeAll=true |
Tournament Calendar with Filters
level is a name, not an id
level must match a name from /calendar/{tour}/filters (for example Grand Slam or Masters series). Passing the numeric id (level=3) returns an empty list.
GET
This example uses /tennis/v2/calendar/atp/2026?level=Grand%20Slam&page=1&limit=10atp. Use wtafor the women's dataset.Returns the tournament calendar for a year. Each item can include matches played at that event. Filter level by name from /calendar/{tour}/filters โ not by numeric id.Path Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value. |
year | Yes | integer | Year Value(2026) |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
level | No | string | Tournament level name from /calendar/{tour}/filters. Example: level=Grand Slam. Numeric ids return an empty list. |
surfaces | No | string | Surface name from filters, e.g. Hard, Clay, I.hard. |
surface | No | string | Filter by surface name. Alias of court. Example: surface=clay or court=Clay. |
search | No | string | Tournament name search. Example: search=Open. |
sortOrder | No | string | Date sort: ASC or DESC. |
page | No | integer | Page number on advanced routes, starting at 1. Do not send pageNo here. Example: page=1 |
limit | No | integer | Results per page on advanced routes (use page + limit, not pageNo + pageSize). Default varies by endpoint. Example: limit=10 |
Response Properties
| Field | Type | Description |
|---|---|---|
(root) | array | A JSON array of tournaments (not wrapped in data). |
name | string | Tournament name. Reuse this (URL-encoded) on advanced tournament routes. |
date | string | Start date as ISO-8601. |
prize | string | Prize-money label when published. |
court / rank | object | Surface and level objects (id + name). |
games | array | Matches played at that event, with nested player objects and stats when available. |
Detailed Player Search
GET
Returns detailed player search results matching the provided search keyword. Results are grouped by category and include each player's name, nationality, and date of birth./tennis/v2/search/DjokovicPath Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
query | Yes | string | URL-encoded search text in the path. Example: Djokovic |
Response Properties
| Field | Type | Description |
|---|---|---|
category | string | player_atp, player_wta, tournament_atp, or tournament_wta. |
total | integer | Total hits in that bucket (the result array is capped). |
result | array | Players: name, birthday, countryAcr. Tournaments: name, date. |