API Reference
Fixtures
The Fixtures module provides access to today's scheduled matches and upcoming fixtures. Filter by date, date range, tournament, player, or retrieve head-to-head fixture history between two players.
{type} path parameter. Use atp for men's matches and wta for women's matches.
Endpoint Summary
| Method | Path | Description |
|---|---|---|
| GET | /tennis/v2/{type}/fixtures | Today's upcoming fixtures |
| GET | /tennis/v2/{type}/fixtures/{date} | Fixtures for a specific date |
| GET | /tennis/v2/{type}/fixtures/{startdate}/{enddate} | Fixtures within a date range |
| GET | /tennis/v2/{type}/fixtures/tournament/{tournamentId} | Fixtures for a tournament |
| GET | /tennis/v2/{type}/fixtures/player/{playerId} | Fixtures for a player |
| GET | /tennis/v2/{type}/fixtures/h2h/{player1Id}/{player2Id} | H2H fixture history |
How Fixtures Work
The database maintains two completely separate tables for match data:
| Table | Purpose | Result field | player1 convention |
|---|---|---|---|
Today (ATP/WTA) |
Live & upcoming schedule β what the Fixtures endpoints query | Always "" (empty string) for upcoming matches. The API filters out any row where result is not empty, so you only receive truly unplayed fixtures. |
First-listed player. No winner/loser convention yet. |
Game (ATP/WTA) |
Complete historical match archive β used by H2H and past-matches endpoints | Score string e.g. "6-3 6-4" |
Always the winner. player2 is always the loser. This is a strict convention across the entire archive. |
player1 is always the winner. In upcoming fixtures from the Today table, it is simply the first-listed player with no implied advantage.
{type} path parameter only accepts atp or wta. There is no itf tour type. ITF-level tournaments are included within ATP and WTA data β use rankId=0 (ITF $10K) or rankId=1 (Challengers / ITF >$10K) to filter to ITF-level events. Passing itf or ITF as the type will return a 400 error.
Today's Fixtures
Path Parameters
| Parameter | Type | Description |
|---|---|---|
type Required |
string | Tour: atp or wta |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
include Optional |
string | Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.Example: include=round,tournament.court,h2h |
filter Optional |
string | Semicolon-separated filters in Key:value format. Available filters:
filter=PlayerGroup:singles;TourCountry:USA,FRA |
pageSize Optional |
integer | Results per page. Default: 10. |
pageNo Optional |
integer | Page number, 1-indexed. Default: 1. Use hasNextPage in the response to check for more pages. |
Example Request
curl --request GET \
--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/fixtures' \
--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com'
Example Response
{
"data": {
"data": [
{
"id": 1310,
"date": null,
"roundId": 12,
"player1Id": 129332,
"player2Id": 95126,
"tournamentId": 21332,
"timeGame": null,
"seed1": "ALT",
"seed2": null,
"live": null,
"player1": {
"id": 129332,
"name": "Daniil Glinka/Stefanos Sakellaridis",
"countryAcr": "N/A"
},
"player2": {
"id": 95126,
"name""Yannick Hanfmann/Jan-Lennard Struff",
"countryAcr""N/A"
}
}
],
"hasNextPage": true
}
}
Response Properties
| Property | Type | Description |
|---|---|---|
id | integer | Unique fixture row ID. |
date | datetime | null | Scheduled match date/time as ISO 8601 UTC string. May be null for some fixtures. |
roundId | integer | Foreign key for round type. Cross-reference with Rounds. |
player1Id / player2Id | integer | Foreign keys into the Player table. Pass these to Players or H2H endpoints. |
tournamentId | integer | Foreign key to the Tournament table. Use with Tournaments endpoints. |
timeGame | datetime | null | Match time or last update timestamp. Usually null. |
seed1 / seed2 | string | null | Tournament seeding as a string. Numeric seeds ("1"β"32") or special codes: "ALT" alternate, "WC" wild card, "Q" qualifier, "LL" lucky loser, "SE" special exempt, "PR" protected ranking. |
live | string | null | null for upcoming pre-match fixtures. When a match is in progress, this field contains the current live score string. |
player1 / player2 | object | Embedded player summary: { id, name, countryAcr }. Saves a separate player lookup for basic display. |
hasNextPage | boolean | Indicates whether more fixtures are available on the next page (use with pageNo parameter). |
Note: Additional properties like tournament, round, h2h, result, complete, draw, and odd1/odd2 are only included when using the include query parameter.
Fixtures by Date
Path Parameters
| Parameter | Type | Description |
|---|---|---|
type Required |
string | atp or wta |
date Required |
date | Target date in YYYY-MM-DD format. Example: 2025-06-02. Invalid formats return 400 Bad Request. |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
include Optional |
string | Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.Example: include=round,tournament.court,h2h |
filter Optional |
string | Semicolon-separated filters in Key:value format. Available filters:
filter=PlayerGroup:singles;TourCountry:USA,FRA |
pageSize Optional |
integer | Results per page. Default: 10. |
pageNo Optional |
integer | Page number, 1-indexed. Default: 1. Use hasNextPage in the response to check for more pages. |
Example Request
curl --request GET \
--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/fixtures/2025-06-02' \
--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com'
Returns an array of fixture objects β same structure as Today's Fixtures above.
Fixtures by Date Range
Path Parameters
| Parameter | Type | Description |
|---|---|---|
type Required |
string | atp or wta |
startdate Required |
date | Start date in YYYY-MM-DD format. Invalid formats return 400 Bad Request. |
enddate Required |
date | End date in YYYY-MM-DD format. Must be after startdate. Invalid formats or equal/reversed dates return 400 Bad Request. |
enddate is strictly after startdate. Providing equal or reversed dates returns a 400 Bad Request.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
include Optional |
string | Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.Example: include=round,tournament.court,h2h |
filter Optional |
string | Semicolon-separated filters in Key:value format. Available filters:
filter=PlayerGroup:singles;TourCountry:USA,FRA |
pageSize Optional |
integer | Results per page. Default: 10. |
pageNo Optional |
integer | Page number, 1-indexed. Default: 1. Use hasNextPage in the response to check for more pages. |
Example Request
curl --request GET \
--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/fixtures/2025-06-01/2025-06-07' \
--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com'
Returns { data: [...], hasNextPage } β each item in data is a fixture object with the same structure as Today's Fixtures above.
Fixtures by Tournament
Path Parameters
| Parameter | Type | Description |
|---|---|---|
type Required |
string | atp or wta |
tournamentId Required |
integer | Tournament ID (β₯ 1). Obtain from the Tournaments module. |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
include Optional |
string | Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.Example: include=round,tournament.court,h2h |
filter Optional |
string | Semicolon-separated filters in Key:value format. Available filters:
filter=PlayerGroup:singles;TourCountry:USA,FRA |
pageSize Optional |
integer | Results per page. Default: 10. |
pageNo Optional |
integer | Page number, 1-indexed. Default: 1. Use hasNextPage in the response to check for more pages. |
Example Request
curl --request GET \
--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/fixtures/tournament/20340' \
--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com'
Returns { data: [...], hasNextPage } β same fixture object structure as Today's Fixtures.
Fixtures by Player
Path Parameters
| Parameter | Type | Description |
|---|---|---|
type Required |
string | atp or wta |
playerId Required |
integer | Player ID (β₯ 1). Obtain from the Players module. |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
include Optional |
string | Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.Example: include=round,tournament.court,h2h |
filter Optional |
string | Semicolon-separated filters in Key:value format. Available filters:
filter=PlayerGroup:singles;TourCountry:USA,FRA |
pageSize Optional |
integer | Results per page. Default: 10. |
pageNo Optional |
integer | Page number, 1-indexed. Default: 1. Use hasNextPage in the response to check for more pages. |
Example Request
curl --request GET \
--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/fixtures/player/68074' \
--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com'
Returns { data: [...], hasNextPage } β same fixture object structure as Today's Fixtures.
H2H Fixture History
Path Parameters
| Parameter | Type | Description |
|---|---|---|
type Required |
string | atp or wta |
player1Id Required |
integer | First player ID (β₯ 1). |
player2Id Required |
integer | Second player ID (β₯ 1). |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
include Optional |
string | Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.Example: include=round,tournament.court,h2h |
filter Optional |
string | Semicolon-separated filters in Key:value format. Available filters:
filter=PlayerGroup:singles;TourCountry:USA,FRA |
pageSize Optional |
integer | Results per page. Default: 10. |
pageNo Optional |
integer | Page number, 1-indexed. Default: 1. Use hasNextPage in the response to check for more pages. |
Example Request
curl --request GET \
--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/fixtures/h2h/68074/47275' \
--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com'
Example Response
[
{
"id": 390145,
"date": "2024-11-17T14:00:00.000Z",
"result": "6-4 6-3",
"player1Id": 68074,
"player2Id": 47275,
"tournamentId": 7201,
"roundId": 1,
"player1": { "id": 68074, "name": "Carlos Alcaraz", "countryAcr": "ESP" },
"player2": { "id": 47275, "name": "Jannik Sinner", "countryAcr": "ITA" }
}
]
player1 is always the winner and player2 is always the loser β the response above shows Alcaraz defeating Sinner.
Response Properties
| Property | Type | Description |
|---|---|---|
id | integer | Unique match record ID. |
date | datetime | Match date as ISO 8601 UTC string. |
result | string | Score string for completed matches, e.g. "6-4 6-3". Each space-separated token is a set score. |
player1Id / player2Id | integer | Player IDs. In historical archive data player1 is always the winner. |
player1 / player2 | object | Embedded player summary: { id, name, countryAcr }. |
tournamentId | integer | Foreign key to the Tournament table. |
roundId | integer | Round ID for this match (1 = Final, 2 = Semi-Final, 3 = QF, etc.). |
hasNextPage | boolean | Pagination flag. true if more results exist beyond the current page. Use pageNo query parameter to fetch the next page. |