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 {tourType} 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 coverageAlthough the API is listed as "Tennis API (ATP, WTA, ITF)", the {tourType} 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/{tourType}/fixtures
Returns today's upcoming ATP or WTA fixtures

Path Parameter

ParameterType
{tourType}Requiredstring
ENUM("atp", "wta")

Query Parameter

ParameterType
{include}Optionalstring
Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.
Example: include=round,tournament.court,h2h
{filter}Optionalstring
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
{pageSize}Optionalinteger
Results per page. Default: 10. Example: pageSize=10.
{pageNo}Optionalinteger
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'
Example Response: JSON
{
  "data": [
    {
      "id": 1226,
      "date": null,
      "roundId": 9,
      "player1Id": 56123,
      "player2Id": 115425,
      "tournamentId": 21339,
      "timeGame": null,
      "seed1": null,
      "seed2": null,
      "live": null,
      "player1": {
        "id": 56123,
        "name": "Andrea Pellegrino/Andrea Vavassori",
        "countryAcr": "N/A"
      },
      "player2": {
        "id": 115425,
        "name": "Vasil Kirkov/Bart Stevens",
        "countryAcr": "N/A"
      }
    }
  ],
  "hasNextPage": true
}

Get Fixtures By Date

GET/tennis/v2/{tourType}/fixtures/{dateOnly}
Returns all fixtures scheduled on a specific date

Path Parameter

ParameterType
{tourType}Requiredstring
ENUM("atp", "wta")
{dateOnly}Requiredinteger
Target date in "YYYY-MM-DD" format. Example: 2025-06-02. Invalid formats return 400 Bad Request.

Query Parameter

ParameterType
{include}Optionalstring
Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.
Example: include=round,tournament.court,h2h
{filter}Optionalstring
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
{pageSize}Optionalinteger
Results per page. Default: 10. Example: pageSize=10.
{pageNo}Optionalinteger
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/{tourType}/fixtures/{startDate}/{endDate}
Returns fixtures scheduled between two dates (inclusive)

Path Parameter

ParameterType
{tourType}Requiredstring
ENUM("atp", "wta")
{startDate}Requireddate
Start date in YYYY-MM-DD format. Invalid formats return 400 Bad Request.
{endDate}Requireddate
End date in YYYY-MM-DD format. Must be after startdate. 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

ParameterType
{include}Optionalstring
Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.
Example: include=round,tournament.court,h2h
{filter}Optionalstring
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
{pageSize}Optionalinteger
Results per page. Default: 10. Example: pageSize=10.
{pageNo}Optionalinteger
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/{tourType}/fixtures/tournament/{tourId}
Returns all fixtures belonging to a specific tournament

Path Parameter

ParameterType
{tourType}Requiredstring
ENUM("atp", "wta")
{startDate}Requireddate
Start date in YYYY-MM-DD format. Invalid formats return 400 Bad Request.
{tourId}Requiredinteger
Tournament ID (β‰₯ 1). Obtain from the Tournaments module.

Query Parameter

ParameterType
{include}Optionalstring
Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.
Example: include=round,tournament.court,h2h
{filter}Optionalstring
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
{pageSize}Optionalinteger
Results per page. Default: 10. Example: pageSize=10.
{pageNo}Optionalinteger
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/{tourType}/fixtures/player/{playerId}
Returns all fixtures belonging to a specific tournament

Path Parameter

ParameterType
{tourType}Requiredstring
ENUM("atp", "wta")
{playerId}Requiredinteger
Player ID (β‰₯ 1). Obtain from the Players module.

Query Parameter

ParameterType
{include}Optionalstring
Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.
Example: include=round,tournament.court,h2h
{filter}Optionalstring
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
{pageSize}Optionalinteger
Results per page. Default: 10. Example: pageSize=10.
{pageNo}Optionalinteger
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/{tourType}/fixtures/h2h/{player1Id}/{player2Id}
Returns the historical match fixtures between two players.

Path Parameter

ParameterType
{tourType}Requiredstring
ENUM("atp", "wta")
{player1Id}Requiredinteger
First Player ID (β‰₯ 1).
{player2Id}Requiredinteger
Second Player ID (β‰₯ 1).

Query Parameter

ParameterType
{include}Optionalstring
Comma-separated relations to load. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h.
Example: include=round,tournament.court,h2h
{filter}Optionalstring
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
{pageSize}Optionalinteger
Results per page. Default: 10. Example: pageSize=10.
{pageNo}Optionalinteger
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 = winnerThis 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.