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.
{tour_type} path parameter. Use atp for men's matches and wta for women's matches.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. |
In historical data (H2H matches, past results) player1 is always the winner. In upcoming fixtures from the Today table, it is simply the first-listed player with no implied advantage.
Although the API is listed as "Tennis API (ATP, WTA, ITF)", the {tour_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.
Get Today's All Fixtures
/tennis/v2/{tour_type}/fixturesPath Parameter
| Parameter | Required | Description |
|---|---|---|
tour_type | Yes | Tour category. Allowed values: atp, wta. |
Query Parameter
| Parameter | Required | Description |
|---|---|---|
include | No | Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.Example: include=round,tournament.court,h2h |
filter | No | Semicolon-sep arated filters in Key:value format. Available filters:
filter=PlayerGroup:singles;TourCountry:USA,FRA |
pageSize | No | Results per page. Default: 10. Example: pageSize=10. |
pageNo | No | Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages. |
Get Fixtures By Date
/tennis/v2/{tour_type}/fixtures/{date_only}Path Parameter
| Parameter | Required | Description |
|---|---|---|
tour_type | Yes | Tour category. Allowed values: atp, wta. |
date_only | Yes | Target date in "YYYY-MM-DD" format. Example: 2025-06-02. |
Query Parameter
| Parameter | Required | Description |
|---|---|---|
include | No | Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.Example: include=round,tournament.court,h2h |
filter | No | Semicolon-separated filters in Key:value format. Available filters:
filter=PlayerGroup:singles;TourCountry:USA,FRA |
pageSize | No | Results per page. Default: 10. Example: pageSize=10. |
pageNo | No | Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages. |
Returns an array of fixture objects â same structure as Today's Fixtures above.
Get Fixtures By Date Range
/tennis/v2/{tour_type}/fixtures/{start_date_range}/{end_date_range}Path Parameter
| Parameter | Required | Description |
|---|---|---|
tour_type | Yes | Tour category. Allowed values: atp, wta. |
start_date_range | Yes | start_date_range in YYYY-MM-DD format. Invalid formats return 400 Bad Request. |
end_date_range | Yes | end_date_range in YYYY-MM-DD format. Must be after start_date_range. 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 Parameter
| Parameter | Required | Description |
|---|---|---|
include | No | Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.Example: include=round,tournament.court,h2h |
filter | No | Semicolon-separated filters in Key:value format. Available filters:
filter=PlayerGroup:singles;TourCountry:USA,FRA |
pageSize | No | Results per page. Default: 10. Example: pageSize=10. |
pageNo | No | Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages. |
Returns data: [...], hasNextPage â each item in data is a fixture object with the same structure as Today's Fixtures above.
Get Fixtures By Tournament ID
/tennis/v2/{tour_type}/fixtures/tournament/{tournament_id}Path Parameter
| Parameter | Required | Description |
|---|---|---|
tour_type | Yes | Tour category. Allowed values: atp, wta. |
tournament_id | Yes | Tournament ID must be numeric value >= 1 |
Query Parameter
| Parameter | Required | Description |
|---|---|---|
include | No | Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.Example: include=round,tournament.court,h2h |
filter | No | Semicolon-separated filters in Key:value format. Available filters:
filter=PlayerGroup:singles;TourCountry:USA,FRA |
pageSize | No | Results per page. Default: 10. Example: pageSize=10. |
pageNo | No | Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages. |
Returns data: [...], hasNextPage â same fixture object structure as Today's All Fixtures.
Get Fixtures By Player ID
/tennis/v2/{tour_type}/fixtures/player/{player_id}Path Parameter
| Parameter | Required | Description |
|---|---|---|
tour_type | Yes | Tour category. Allowed values: atp, wta. |
player_id | Yes | Player ID (âĨ 1). Obtain from the Players module. |
Query Parameter
| Parameter | Required | Description |
|---|---|---|
include | No | Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.Example: include=round,tournament.court,h2h |
filter | No | Semicolon-separated filters in Key:value format. Available filters:
filter=PlayerGroup:singles;TourCountry:USA,FRA |
pageSize | No | Results per page. Default: 10. Example: pageSize=10. |
pageNo | No | Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages. |
Returns data: [...], hasNextPage â same fixture object structure as Today's All Fixtures.
Get H2H Fixture History
/tennis/v2/{tour_type}/fixtures/h2h/{player1_id}/{player2_id}Path Parameter
| Parameter | Required | Description |
|---|---|---|
tour_type | Yes | Tour category. Allowed values: atp, wta. |
player1_id | Yes | First Player ID (âĨ 1). |
player2_id | Yes | Second Player ID (âĨ 1). |
Query Parameter
| Parameter | Required | Description |
|---|---|---|
include | No | Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.Example: include=round,tournament.court,h2h |
filter | No | Semicolon-separated filters in Key:value format. Available filters:
filter=PlayerGroup:singles;TourCountry:USA,FRA |
pageSize | No | Results per page. Default: 10. Example: pageSize=10. |
pageNo | No | Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages. |
This endpoint queries the Game archive (historical matches), not the Today table. In historical data player1 is always the winner and player2 is always the loser â the response above shows Alcaraz defeating Sinner.
Returns data: [...], hasNextPage â same fixture object structure as Today's All Fixtures.