v2

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 required All fixture endpoints require a {type} path parameter. Use atp for men's matches and wta for women's matches.

Endpoint Summary

MethodPathDescription
GET/tennis/v2/{type}/fixturesToday'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:

TablePurposeResult fieldplayer1 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 β‰  "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 {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

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

Path Parameters

ParameterTypeDescription
type Required string Tour: atp or wta

Query Parameters

ParameterTypeDescription
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:
  • 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 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
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

JSON
{
  "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

PropertyTypeDescription
idintegerUnique fixture row ID.
datedatetime | nullScheduled match date/time as ISO 8601 UTC string. May be null for some fixtures.
roundIdintegerForeign key for round type. Cross-reference with Rounds.
player1Id / player2IdintegerForeign keys into the Player table. Pass these to Players or H2H endpoints.
tournamentIdintegerForeign key to the Tournament table. Use with Tournaments endpoints.
timeGamedatetime | nullMatch time or last update timestamp. Usually null.
seed1 / seed2string | nullTournament 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.
livestring | nullnull for upcoming pre-match fixtures. When a match is in progress, this field contains the current live score string.
player1 / player2objectEmbedded player summary: { id, name, countryAcr }. Saves a separate player lookup for basic display.
hasNextPagebooleanIndicates 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

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

Path Parameters

ParameterTypeDescription
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

ParameterTypeDescription
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:
  • 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 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
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

GET /tennis/v2/{type}/fixtures/{startdate}/{enddate} Returns fixtures scheduled between two dates (inclusive)

Path Parameters

ParameterTypeDescription
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.
⚠️
Date order validation The API validates that enddate is strictly after startdate. Providing equal or reversed dates returns a 400 Bad Request.

Query Parameters

ParameterTypeDescription
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:
  • 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 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
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

GET /tennis/v2/{type}/fixtures/tournament/{tournamentId} Returns all fixtures belonging to a specific tournament

Path Parameters

ParameterTypeDescription
type Required string atp or wta
tournamentId Required integer Tournament ID (β‰₯ 1). Obtain from the Tournaments module.

Query Parameters

ParameterTypeDescription
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:
  • 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 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
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

GET /tennis/v2/{type}/fixtures/player/{playerId} Returns upcoming scheduled fixtures involving a specific player

Path Parameters

ParameterTypeDescription
type Required string atp or wta
playerId Required integer Player ID (β‰₯ 1). Obtain from the Players module.

Query Parameters

ParameterTypeDescription
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:
  • 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 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
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

GET /tennis/v2/{type}/fixtures/h2h/{player1Id}/{player2Id} Returns the historical match fixtures between two players

Path Parameters

ParameterTypeDescription
type Required string atp or wta
player1Id Required integer First player ID (β‰₯ 1).
player2Id Required integer Second player ID (β‰₯ 1).

Query Parameters

ParameterTypeDescription
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:
  • 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 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
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

JSON
[
  {
    "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" }
  }
]
⚠️
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.

Response Properties

PropertyTypeDescription
idintegerUnique match record ID.
datedatetimeMatch date as ISO 8601 UTC string.
resultstringScore string for completed matches, e.g. "6-4 6-3". Each space-separated token is a set score.
player1Id / player2IdintegerPlayer IDs. In historical archive data player1 is always the winner.
player1 / player2objectEmbedded player summary: { id, name, countryAcr }.
tournamentIdintegerForeign key to the Tournament table.
roundIdintegerRound ID for this match (1 = Final, 2 = Semi-Final, 3 = QF, etc.).
hasNextPagebooleanPagination flag. true if more results exist beyond the current page. Use pageNo query parameter to fetch the next page.