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 requiredAll fixture endpoints require a {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:

TablePurposeResult fieldplayer1 convention
Today (ATP/WTA)Live & upcoming schedule — what the Fixtures endpoints queryAlways "" (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 endpointsScore 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 ≠ "home team"

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.

â„šī¸
About ITF coverage

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

GET/tennis/v2/{tour_type}/fixtures
Returns today's upcoming ATP or WTA fixtures

Path Parameter

ParameterRequiredDescription
tour_typeYes
Tour category. Allowed values: atp, wta.

Query Parameter

ParameterRequiredDescription
includeNo
Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.
Example: include=round,tournament.court,h2h
filterNo
Semicolon-sep arated filters in Key:value format. Available filters:
  • PlayerGroup:singles | doubles | both
  • TourRank:{id, id} — requires tournament in include
  • TourCourt:{id, id} — requires tournament in include
  • TourCountry:{USA, FRA} — requires tournament in include
Example: filter=PlayerGroup:singles;TourCountry:USA,FRA
pageSizeNo
Results per page. Default: 10. Example: pageSize=10.
pageNoNo
Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/fixtures' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Get Fixtures By Date

GET/tennis/v2/{tour_type}/fixtures/{date_only}
Returns all fixtures scheduled on a specific date

Path Parameter

ParameterRequiredDescription
tour_typeYes
Tour category. Allowed values: atp, wta.
date_onlyYes
Target date in "YYYY-MM-DD" format. Example: 2025-06-02.

Query Parameter

ParameterRequiredDescription
includeNo
Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.
Example: include=round,tournament.court,h2h
filterNo
Semicolon-separated filters in Key:value format. Available filters:
  • PlayerGroup:singles | doubles | both
  • TourRank:{id, id} — requires tournament in include
  • TourCourt:{id, id} — requires tournament in include
  • TourCountry:USA, FRA — requires tournament in include
Example: filter=PlayerGroup:singles;TourCountry:USA,FRA
pageSizeNo
Results per page. Default: 10. Example: pageSize=10.
pageNoNo
Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/fixtures/2025-06-02' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Returns an array of fixture objects — same structure as Today's Fixtures above.

Get Fixtures By Date Range

GET/tennis/v2/{tour_type}/fixtures/{start_date_range}/{end_date_range}
Returns fixtures scheduled between two dates (inclusive)

Path Parameter

ParameterRequiredDescription
tour_typeYes
Tour category. Allowed values: atp, wta.
start_date_rangeYes
start_date_range in YYYY-MM-DD format. Invalid formats return 400 Bad Request.
end_date_rangeYes
end_date_range in YYYY-MM-DD format. Must be after start_date_range. Invalid formats or equal/reversed dates return 400 Bad Request.
âš ī¸
Date order validationThe API validates that enddate is strictly after startdate. Providing equal or reversed dates returns a 400 Bad Request.

Query Parameter

ParameterRequiredDescription
includeNo
Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.
Example: include=round,tournament.court,h2h
filterNo
Semicolon-separated filters in Key:value format. Available filters:
  • PlayerGroup:singles | doubles | both
  • TourRank:id, id — requires tournament in include
  • TourCourt:id, id — requires tournament in include
  • TourCountry:USA, FRA — requires tournament in include
Example: filter=PlayerGroup:singles;TourCountry:USA,FRA
pageSizeNo
Results per page. Default: 10. Example: pageSize=10.
pageNoNo
Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages.
Example Request: CURL
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-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

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

GET/tennis/v2/{tour_type}/fixtures/tournament/{tournament_id}
Returns all fixtures belonging to a specific tournament

Path Parameter

ParameterRequiredDescription
tour_typeYes
Tour category. Allowed values: atp, wta.
tournament_idYes
Tournament ID must be numeric value >= 1

Query Parameter

ParameterRequiredDescription
includeNo
Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.
Example: include=round,tournament.court,h2h
filterNo
Semicolon-separated filters in Key:value format. Available filters:
  • PlayerGroup:singles | doubles | both
  • TourRank:id, id — requires tournament in include
  • TourCourt:id, id — requires tournament in include
  • TourCountry:USA, FRA — requires tournament in include
Example: filter=PlayerGroup:singles;TourCountry:USA,FRA
pageSizeNo
Results per page. Default: 10. Example: pageSize=10.
pageNoNo
Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/fixtures/tournament/20340' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Returns data: [...], hasNextPage — same fixture object structure as Today's All Fixtures.

Get Fixtures By Player ID

GET/tennis/v2/{tour_type}/fixtures/player/{player_id}
Returns all fixtures belonging to a specific tournament

Path Parameter

ParameterRequiredDescription
tour_typeYes
Tour category. Allowed values: atp, wta.
player_idYes
Player ID (â‰Ĩ 1). Obtain from the Players module.

Query Parameter

ParameterRequiredDescription
includeNo
Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.
Example: include=round,tournament.court,h2h
filterNo
Semicolon-separated filters in Key:value format. Available filters:
  • PlayerGroup:singles | doubles | both
  • TourRank:id, id — requires tournament in include
  • TourCourt:id, id — requires tournament in include
  • TourCountry:USA, FRA — requires tournament in include
Example: filter=PlayerGroup:singles;TourCountry:USA,FRA
pageSizeNo
Results per page. Default: 10. Example: pageSize=10.
pageNoNo
Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/fixtures/player/68074' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Returns data: [...], hasNextPage — same fixture object structure as Today's All Fixtures.

Get H2H Fixture History

GET/tennis/v2/{tour_type}/fixtures/h2h/{player1_id}/{player2_id}
Returns the historical match fixtures between two players.

Path Parameter

ParameterRequiredDescription
tour_typeYes
Tour category. Allowed values: atp, wta.
player1_idYes
First Player ID (â‰Ĩ 1).
player2_idYes
Second Player ID (â‰Ĩ 1).

Query Parameter

ParameterRequiredDescription
includeNo
Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.
Example: include=round,tournament.court,h2h
filterNo
Semicolon-separated filters in Key:value format. Available filters:
  • PlayerGroup:singles | doubles | both
  • TourRank:id, id — requires tournament in include
  • TourCourt:id, id — requires tournament in include
  • TourCountry:USA, FRA — requires tournament in include
Example: filter=PlayerGroup:singles;TourCountry:USA,FRA
pageSizeNo
Results per page. Default: 10. Example: pageSize=10.
pageNoNo
Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/fixtures/h2h/68074/47275' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'
âš ī¸
Historical data: player1 = winner

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.