API Reference
Fixtures
Scheduled ATP/WTA matches for today, a date, a date range, a tournament, or a player. 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.
Which endpoint to use
| What you want | Call | What you get |
|---|---|---|
| Today's schedule, a date, a range, a tournament, or a player | The fixtures routes on this page | result is empty until the match is played. player1 is the first-listed player, not the winner. |
| Finished scores, past matches, or H2H | Past matches and H2H | Score string e.g. "6-3 6-4". player1 is the winner; player2 is the loser. |
The default list includes doubles (names contain /). Restrict to singles with filter=PlayerGroup:singles โ that is a filter value, not a separate query key. ITF and Challenger events are inside ATP/WTA data; filter with TourRank after including tournament. Challenger/ITF > $10K is TourRank:1; Grand Slam is TourRank:4 โ see GET /ranking. Passing tour_type=itf returns 400.
Copy-this recipes
| Goal | Request |
|---|---|
| Todayโs menโs singles | /tennis/v2/atp/fixtures?filter=PlayerGroup:singles |
| Todayโs womenโs doubles | /tennis/v2/wta/fixtures?filter=PlayerGroup:doubles |
| Fixtures for a player | /tennis/v2/atp/fixtures/player/68074?filter=PlayerGroup:singles |
| Grand Slam calendar | /tennis/v2/atp/tournament/calendar/2026?filter=TourRank:4&pageSize=20 |
Today's Fixtures
/tennis/v2/atp/fixtures?filter=PlayerGroup:singlesatp. Use wtafor the women's dataset.Returns today's upcoming ATP or WTA fixtures. There is no date in the path โ the list is always for today, so names change. The sample JSON below is a real singles row from 2026-09-08 so the documented body stays stable.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. |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
include | No | string | Comma-separated extra objects to add to each item. Available: round (human-readable tournament round for roundId, e.g. Quarter-Final, Semi-Final, Final โ full lookup: GET /tennis/v2/round), tournament, tournament.court, tournament.rank, tournament.country, h2h, odds (pre-match odds when present).Example: include=round,tournament.court,h2h,odds |
filter | No | string | Semicolon-separated Key:value filters. Available:
filter=PlayerGroup:singles;TourCountry:USA,FRA |
pageSize | No | integer | Results per page. Default: 10. Core maximum: 500 (larger values are reduced). Example: pageSize=10. |
pageNo | No | integer | Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages. |
Response Properties
| Field | Type | Description |
|---|---|---|
data | array | The page of results. An empty array with HTTP 200 means the request was valid and nothing matched that date, filter, or page. |
pageNo | integer | Current page, starting at 1. Also returned as page. |
pageSize | integer | Items requested for this page. Also returned as limit. Core maximum is 500. |
hasNextPage | boolean | true if another page exists. Stop when this is false or data is empty. |
id | integer | Schedule row ID for this fixture. Do not send it to live odds or point-by-point routes. |
date | string | Scheduled date/time as an ISO-8601 string. May be null if the time is not set yet. |
player1Id / player2Id | integer | Numeric player IDs. On upcoming lists, player1 is only the first-listed player โ not the winner. |
tournamentId | integer | Season/event ID for this weekโs tournament edition. |
roundId | integer | Round code. Resolve labels with GET /tennis/v2/round. |
live | string | null if the match has not started. A string is the in-progress score. |
player1 / player2 | object | Nested player: id, name, countryAcr. Doubles names contain /. |
odds | object | Present when include contains odds and odds exist for that fixture. Omitted when none are available. |
Fixtures by Date
/tennis/v2/atp/fixtures/2026-09-19atp. Use wtafor the women's dataset.Returns fixtures scheduled on a specific date (YYYY-MM-DD). Same item shape as today's fixtures (paged with pageNo / pageSize).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. |
date_only | Yes | string | Target date in YYYY-MM-DD format. Example: 2026-09-15. |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
include | No | string | Comma-separated extra objects to add to each item. Available: round (human-readable tournament round for roundId, e.g. Quarter-Final, Semi-Final, Final โ full lookup: GET /tennis/v2/round), tournament, tournament.court, tournament.rank, tournament.country, h2h, odds (pre-match odds when present).Example: include=round,tournament.court,h2h,odds |
filter | No | string | Semicolon-separated Key:value filters. Available:
filter=PlayerGroup:singles;TourCountry:USA,FRA |
pageSize | No | integer | Results per page. Default: 10. Core maximum: 500 (larger values are reduced). Example: pageSize=10. |
pageNo | No | integer | Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages. |
Fixtures by Date Range
/tennis/v2/atp/fixtures/2026-09-19/2026-09-20atp. Use wtafor the women's dataset.Returns fixtures scheduled between two dates (inclusive). End date must be after start date.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. |
start_date_range | Yes | string | Start date in YYYY-MM-DD format. Invalid formats return 400 Bad Request. |
end_date_range | Yes | string | End date in YYYY-MM-DD format. Must be after start_date_range. Equal or reversed dates return 400 Bad Request. |
end_date_range must be strictly after start_date_range. Equal or reversed dates return 400.Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
include | No | string | Comma-separated extra objects to add to each item. Available: round (human-readable tournament round for roundId, e.g. Quarter-Final, Semi-Final, Final โ full lookup: GET /tennis/v2/round), tournament, tournament.court, tournament.rank, tournament.country, h2h, odds (pre-match odds when present).Example: include=round,tournament.court,h2h,odds |
filter | No | string | Semicolon-separated Key:value filters. Available:
filter=PlayerGroup:singles;TourCountry:USA,FRA |
pageSize | No | integer | Results per page. Default: 10. Core maximum: 500 (larger values are reduced). Example: pageSize=10. |
pageNo | No | integer | Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages. |
Fixtures by Tournament
/tennis/v2/atp/fixtures/tournament/22030?filter=PlayerGroup:singlesatp. Use wtafor the women's dataset.Returns fixtures for one tournament season ID (the year-edition from the calendar, not the tournament name).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_id | Yes | integer | Tournament ID must be numeric value >= 1 |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
include | No | string | Comma-separated extra objects to add to each item. Available: round (human-readable tournament round for roundId, e.g. Quarter-Final, Semi-Final, Final โ full lookup: GET /tennis/v2/round), tournament, tournament.court, tournament.rank, tournament.country, h2h, odds (pre-match odds when present).Example: include=round,tournament.court,h2h,odds |
filter | No | string | Semicolon-separated Key:value filters. Available:
filter=PlayerGroup:singles;TourCountry:USA,FRA |
pageSize | No | integer | Results per page. Default: 10. Core maximum: 500 (larger values are reduced). Example: pageSize=10. |
pageNo | No | integer | Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages. |
Same envelope as today's fixtures.
Fixtures by Player
/tennis/v2/atp/fixtures/player/68074atp. Use wtafor the women's dataset.Returns upcoming fixtures for one player. Path needs a numeric player ID, not a display name.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. |
player_id | Yes | integer |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
include | No | string | Comma-separated extra objects to add to each item. Available: round (human-readable tournament round for roundId, e.g. Quarter-Final, Semi-Final, Final โ full lookup: GET /tennis/v2/round), tournament, tournament.court, tournament.rank, tournament.country, h2h, odds (pre-match odds when present).Example: include=round,tournament.court,h2h,odds |
filter | No | string | Semicolon-separated Key:value filters. Available:
filter=PlayerGroup:singles;TourCountry:USA,FRA |
pageSize | No | integer | Results per page. Default: 10. Core maximum: 500 (larger values are reduced). Example: pageSize=10. |
pageNo | No | integer | Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages. |
Same envelope as today's fixtures.
Historical H2H Fixtures by Player IDs
/tennis/v2/atp/fixtures/h2h/30496/55828atp. Use wtafor the women's dataset.Returns current-board fixtures between two numeric player IDs (today/upcoming table), not the career H2H archive. Empty data is a valid 200 when that pair is not on the current board. Use /h2h/matches for completed meetings.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 | Yes | integer | First Player ID (โฅ 1). |
player2_id | Yes | integer | Second Player ID (โฅ 1). |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
include | No | string | Comma-separated extra objects to add to each item. Available: round (human-readable tournament round for roundId, e.g. Quarter-Final, Semi-Final, Final โ full lookup: GET /tennis/v2/round), tournament, tournament.court, tournament.rank, tournament.country, h2h, odds (pre-match odds when present).Example: include=round,tournament.court,h2h,odds |
filter | No | string | Semicolon-separated Key:value filters. Available:
filter=PlayerGroup:singles;TourCountry:USA,FRA |
pageSize | No | integer | Results per page. Default: 10. Core maximum: 500 (larger values are reduced). Example: pageSize=10. |
pageNo | No | integer | Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages. |
Same list envelope as today's fixtures. player1 is the first-listed player, not the winner.
Response Properties
| Field | Type | Description |
|---|---|---|
data | array | The page of results. An empty array with HTTP 200 means the request was valid and nothing matched that date, filter, or page. |
pageNo | integer | Current page, starting at 1. Also returned as page. |
pageSize | integer | Items requested for this page. Also returned as limit. Core maximum is 500. |
hasNextPage | boolean | true if another page exists. Stop when this is false or data is empty. |
id | integer | Schedule row ID for this fixture. Do not send it to live odds or point-by-point routes. |
date | string | Scheduled date/time as an ISO-8601 string. May be null if the time is not set yet. |
player1Id / player2Id | integer | Numeric player IDs. On upcoming lists, player1 is only the first-listed player โ not the winner. |
tournamentId | integer | Season/event ID for this weekโs tournament edition. |
roundId | integer | Round code. Resolve labels with GET /tennis/v2/round. |
live | string | null if the match has not started. A string is the in-progress score. |
player1 / player2 | object | Nested player: id, name, countryAcr. Doubles names contain /. |
odds | object | Present when include contains odds and odds exist for that fixture. Omitted when none are available. |