API Reference

Upcoming Matches (Fixtures)

Scheduled men's and women's matches for today, a date, a date range, a tournament, a player or a matchup. Dataset to query: atp= men's tennis dataset across all supported levels, not only the ATP Tour. wta= women's tennis dataset across all supported levels, not only the WTA Tour. Supported coverage can include Grand Slams, ATP/WTA events, Challengers and ITF events. There is no separate itf type value.

ℹ️
What this section is for

Use this section to find scheduled matches and factual match/H2H data: by date, date range, tournament, player, matchup and round, plus factual H2H. Available on all plans: FREE / PRO / ULTRA / MEGA.

If you also need pre-match odds or prediction enrichment, use Upcoming Matches (With Predictions & Odds Data).

⚠️
Match IDs are not interchangeable

Do not assume match IDs are interchangeable between Upcoming, Predictions, and Live. To match a live event with an upcoming fixture or prediction record, use the player IDs or names together with tournament and date information.

ℹ️
Start times

Use date / startTime (ISO-8601 UTC) for clocks. timeGame is a legacy field and is often null — that does not mean the match has no start time. See Getting Started → Match start times.

Which endpoint to use

What you wantCallWhat you get
Today's schedule, a date, a range, a tournament, or a playerThe fixtures routes on this pageresult is empty until the match is played. player1 is the first-listed player, not the winner.
Finished scores, past matches, or H2HResults by date, Past matches, and H2HScore string e.g. "6-3 6-4". player1 is the winner; player2 is the loser.
ℹ️
Singles, doubles, and ITF

The default list includes doubles (names contain /). Restrict to singles with filter=PlayerGroup:singles — that is a filter value, not a separate query key. ITF and Challenger events are inside the atp / wta datasets; filter with TourRank after including tournament. Challenger/ITF > $10K is TourRank:1; Grand Slam is TourRank:4 — see GET /ranking. Passing tour_type=itf returns 400.

Copy-this recipes

GoalRequest
Today’s men’s singles/tennis/v2/atp/fixtures?filter=PlayerGroup:singles
Today’s women’s doubles/tennis/v2/wta/fixtures?filter=PlayerGroup:doubles
Fixtures for a player/tennis/v2/atp/fixtures/player/68074?filter=PlayerGroup:singles
Grand Slam calendar/tennis/v2/atp/tournament/calendar/2026?filter=TourRank:4&pageSize=20

Today's Fixtures

GET/tennis/v2/{atp|wta}/fixtures
This example uses atp. Use wtafor the women's dataset.Returns upcoming men's or women's fixtures from today onward. Drawn matches whose order of play is not published yet are included with date / startTime null (listed after dated matches); use Fixtures by Date for a single day. The example uses include=round,tournament,tournament.court,tournament.rank,tournament.country,h2h to show the full row: h2h is present only when the two players have met before.

Path Parameter

ParameterRequiredTypeDescription
atp|wtaYesstring
Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value.

Query Parameter

ParameterRequiredTypeDescription
includeNostring
Comma-separated extras. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h. If you also need pre-match odds or prediction enrichment, use Upcoming Matches (With Predictions & Odds Data) (all plans; modelPrediction requires ULTRA or MEGA).
Example: include=round,tournament.court,h2h
filterNostring
Semicolon-separated Key:value filters. Available:
  • PlayerGroup:singles | doubles | both — default includes doubles
  • TourRank:{id,id} — rank_id from GET /ranking (Grand Slam is 4). Requires tournament in include
  • TourCourt:{id,id} — requires tournament in include
  • TourCountry:{USA,FRA} — 3-letter codes; requires tournament in include
Example: filter=PlayerGroup:singles;TourCountry:USA,FRA
pageSizeNointeger
Results per page. Default: 10. Core maximum: 500 (larger values are reduced). Example: pageSize=10.
pageNoNointeger
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?include=round,tournament,tournament.court,tournament.rank,tournament.country,h2h&filter=PlayerGroup:singles;TourRank:2&pageSize=2' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

Shared objects in this response (defined once in Reusable response schemas): Player · Tournament.

FieldTypeDescription
dataarrayThe page of results. An empty array with HTTP 200 means the request was valid and nothing matched that date, filter, or page.
pageNointegerCurrent page, starting at 1. Also returned as page.
pageSizeintegerItems requested for this page. Also returned as limit. Core maximum is 500.
hasNextPagebooleantrue if another page exists. Stop when this is false or data is empty.
idintegerSchedule row ID for this fixture (same value as matchId on core fixtures).
matchIdintegerSame as id. Use with GET /tennis/v2/ms-api/matches/{matchId}/… detail aliases. Not the live hyphenated matchId.
datestringScheduled start as ISO-8601 UTC (…Z). This is the canonical start time when present.
startTimestringSame UTC instant as date (additive alias for clearer discovery).
timeGamestringLegacy start field. Prefer date/startTime for clocks; may be null or mirror date when set.
player1Id / player2IdintegerNumeric player IDs. On fixtures, player1 is only the first-listed player — not the winner.
tournamentIdintegerSeason/event ID for this week’s tournament edition.
roundIdintegerRound code. Resolve labels with GET /tennis/v2/round.
seed1 / seed2stringSeed or entry tag when set (e.g. 2, WC, Q). Null if unseeded.
livestringnull if the match has not started. A string is the in-progress score.
player1 / player2objectNested player: id, name, countryAcr. Doubles names contain /.
h2hobjectOnly with include=h2h, and omitted when the players have never met. Factual head-to-head wins: player1AllWins, player2AllWins (player1 vs player2 perspective). Not prediction data.
data[].player1.idnumberPlayer 1 ID.
data[].player1.namestringPlayer 1 name.
data[].player1.countryAcrstringPlayer 1 country code.
data[].player2.idnumberPlayer 2 ID.
data[].player2.namestringPlayer 2 name.
data[].player2.countryAcrstringPlayer 2 country code.
data[].tournamentobjectTournament object (id, name, date, level, surface, country, …).
data[].tournament.idnumberTournament season ID.
data[].tournament.namestringTournament name.
data[].tournament.courtIdnumberNumeric court-surface ID (see GET /tennis/v2/court): 1 Hard, 2 Clay, 3 Indoor hard, 5 Grass, …
data[].tournament.datestringTournament start date (ISO-8601 UTC).
data[].tournament.rankIdnumberTournament level ID (TourRank, see GET /tennis/v2/ranking): 0 ITF $10K, 1 Challenger/ITF > $10K, 2 Main tour, 3 Masters, 4 Grand Slam, 5 Davis/Fed Cup, 7 Tour finals, …
data[].tournament.countryAcrstringThree-letter country code of the tournament.
data[].tournament.courtobjectCourt surface of the tournament: { id, name } (some routes return only { name }), e.g. { "name": "Hard" }.
data[].tournament.court.idnumberCourt-surface ID.
data[].tournament.court.namestringCourt surface name, e.g. Hard, Clay, Grass, I.hard.
data[].tournament.rankobjectTournament level: { id, name }.
data[].tournament.rank.idnumberTournament level ID (TourRank).
data[].tournament.rank.namestringTournament level name, e.g. "Main tour".
data[].tournament.countryobjectCountry of the tournament: three-letter code, or { name, acronym }.
data[].tournament.country.namestringCountry name.
data[].tournament.country.acronymstringThree-letter country code.
data[].h2h.player1AllWinsnumberCareer head-to-head wins of player 1 against player 2 (all levels).
data[].h2h.player2AllWinsnumberCareer head-to-head wins of player 2 against player 1 (all levels).
data[].roundobjectRound: { id, name }.
data[].round.idnumberRound ID.
data[].round.namestringRound label, e.g. "1/4", "Final".
pagenumberCurrent page number (1-based).
limitnumberItems per page.

Fixtures by Date

GET/tennis/v2/{atp|wta}/fixtures/{date_only}
This example uses atp. Use wtafor the women's dataset.Returns fixtures scheduled on a specific date (YYYY-MM-DD). Same item shape as today's fixtures (paged with pageNo / pageSize).

Path Parameter

ParameterRequiredTypeDescription
atp|wtaYesstring
Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value.
date_onlyYesstring
Target date in YYYY-MM-DD format. Example: 2026-09-15.

Query Parameter

ParameterRequiredTypeDescription
includeNostring
Comma-separated extras. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h. If you also need pre-match odds or prediction enrichment, use Upcoming Matches (With Predictions & Odds Data) (all plans; modelPrediction requires ULTRA or MEGA).
Example: include=round,tournament.court,h2h
filterNostring
Semicolon-separated Key:value filters. Available:
  • PlayerGroup:singles | doubles | both — default includes doubles
  • TourRank:{id,id} — rank_id from GET /ranking (Grand Slam is 4). Requires tournament in include
  • TourCourt:{id,id} — requires tournament in include
  • TourCountry:{USA,FRA} — 3-letter codes; requires tournament in include
Example: filter=PlayerGroup:singles;TourCountry:USA,FRA
pageSizeNointeger
Results per page. Default: 10. Core maximum: 500 (larger values are reduced). Example: pageSize=10.
pageNoNointeger
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/2026-09-27?pageNo=1&pageSize=2&filter=PlayerGroup:singles' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
dataarrayThe page of results. An empty array with HTTP 200 means the request was valid and nothing matched that date, filter, or page.
pageNointegerCurrent page, starting at 1. Also returned as page.
pageSizeintegerItems requested for this page. Also returned as limit. Core maximum is 500.
hasNextPagebooleantrue if another page exists. Stop when this is false or data is empty.
idintegerSchedule row ID for this fixture (same value as matchId on core fixtures).
matchIdintegerSame as id. Use with GET /tennis/v2/ms-api/matches/{matchId}/… detail aliases. Not the live hyphenated matchId.
datestringScheduled start as ISO-8601 UTC (…Z). This is the canonical start time when present.
startTimestringSame UTC instant as date (additive alias for clearer discovery).
timeGamestringLegacy start field. Prefer date/startTime for clocks; may be null or mirror date when set.
player1Id / player2IdintegerNumeric player IDs. On fixtures, player1 is only the first-listed player — not the winner.
tournamentIdintegerSeason/event ID for this week’s tournament edition.
roundIdintegerRound code. Resolve labels with GET /tennis/v2/round.
seed1 / seed2stringSeed or entry tag when set (e.g. 2, WC, Q). Null if unseeded.
livestringnull if the match has not started. A string is the in-progress score.
player1 / player2objectNested player: id, name, countryAcr. Doubles names contain /.
h2hobjectOnly with include=h2h, and omitted when the players have never met. Factual head-to-head wins: player1AllWins, player2AllWins (player1 vs player2 perspective). Not prediction data.
pagenumberCurrent page number (1-based).
limitnumberItems per page.

Fixtures by Date Range

GET/tennis/v2/{atp|wta}/fixtures/{start_date_range}/{end_date_range}
This example uses atp. Use wtafor the women's dataset.Returns fixtures scheduled between two dates (inclusive). End date must be after start date.

Path Parameter

ParameterRequiredTypeDescription
atp|wtaYesstring
Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value.
start_date_rangeYesstring
Start date in YYYY-MM-DD format. Invalid formats return 400 Bad Request.
end_date_rangeYesstring
End date in YYYY-MM-DD format. Must be after start_date_range. Equal or reversed dates return 400 Bad Request.
⚠️
Date orderend_date_range must be strictly after start_date_range. Equal or reversed dates return 400.

Query Parameter

ParameterRequiredTypeDescription
includeNostring
Comma-separated extras. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h. If you also need pre-match odds or prediction enrichment, use Upcoming Matches (With Predictions & Odds Data) (all plans; modelPrediction requires ULTRA or MEGA).
Example: include=round,tournament.court,h2h
filterNostring
Semicolon-separated Key:value filters. Available:
  • PlayerGroup:singles | doubles | both — default includes doubles
  • TourRank:{id,id} — rank_id from GET /ranking (Grand Slam is 4). Requires tournament in include
  • TourCourt:{id,id} — requires tournament in include
  • TourCountry:{USA,FRA} — 3-letter codes; requires tournament in include
Example: filter=PlayerGroup:singles;TourCountry:USA,FRA
pageSizeNointeger
Results per page. Default: 10. Core maximum: 500 (larger values are reduced). Example: pageSize=10.
pageNoNointeger
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/2026-09-27/2026-09-28?pageSize=3&filter=PlayerGroup:singles' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
dataarrayThe page of results. An empty array with HTTP 200 means the request was valid and nothing matched that date, filter, or page.
pageNointegerCurrent page, starting at 1. Also returned as page.
pageSizeintegerItems requested for this page. Also returned as limit. Core maximum is 500.
hasNextPagebooleantrue if another page exists. Stop when this is false or data is empty.
idintegerSchedule row ID for this fixture (same value as matchId on core fixtures).
matchIdintegerSame as id. Use with GET /tennis/v2/ms-api/matches/{matchId}/… detail aliases. Not the live hyphenated matchId.
datestringScheduled start as ISO-8601 UTC (…Z). This is the canonical start time when present.
startTimestringSame UTC instant as date (additive alias for clearer discovery).
timeGamestringLegacy start field. Prefer date/startTime for clocks; may be null or mirror date when set.
player1Id / player2IdintegerNumeric player IDs. On fixtures, player1 is only the first-listed player — not the winner.
tournamentIdintegerSeason/event ID for this week’s tournament edition.
roundIdintegerRound code. Resolve labels with GET /tennis/v2/round.
seed1 / seed2stringSeed or entry tag when set (e.g. 2, WC, Q). Null if unseeded.
livestringnull if the match has not started. A string is the in-progress score.
player1 / player2objectNested player: id, name, countryAcr. Doubles names contain /.
h2hobjectOnly with include=h2h, and omitted when the players have never met. Factual head-to-head wins: player1AllWins, player2AllWins (player1 vs player2 perspective). Not prediction data.
pagenumberCurrent page number (1-based).
limitnumberItems per page.

Fixtures by Tournament

GET/tennis/v2/{atp|wta}/fixtures/tournament/{tournament_id}
This example uses atp. Use wtafor the women's dataset.Returns fixtures for one tournament season ID (the year-edition from the calendar, not the tournament name).

Path Parameter

ParameterRequiredTypeDescription
atp|wtaYesstring
Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value.
tournament_idYesinteger
Tournament ID must be numeric value >= 1

Query Parameter

ParameterRequiredTypeDescription
includeNostring
Comma-separated extras. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h. If you also need pre-match odds or prediction enrichment, use Upcoming Matches (With Predictions & Odds Data) (all plans; modelPrediction requires ULTRA or MEGA).
Example: include=round,tournament.court,h2h
filterNostring
Semicolon-separated Key:value filters. Available:
  • PlayerGroup:singles | doubles | both — default includes doubles
  • TourRank:{id,id} — rank_id from GET /ranking (Grand Slam is 4). Requires tournament in include
  • TourCourt:{id,id} — requires tournament in include
  • TourCountry:{USA,FRA} — 3-letter codes; requires tournament in include
Example: filter=PlayerGroup:singles;TourCountry:USA,FRA
pageSizeNointeger
Results per page. Default: 10. Core maximum: 500 (larger values are reduced). Example: pageSize=10.
pageNoNointeger
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/21355?filter=PlayerGroup:singles' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Same envelope as today's fixtures.

Response Properties

Shared objects in this response (defined once in Reusable response schemas): Player.

FieldTypeDescription
dataarrayThe page of results. An empty array with HTTP 200 means the request was valid and nothing matched that date, filter, or page.
pageNointegerCurrent page, starting at 1. Also returned as page.
pageSizeintegerItems requested for this page. Also returned as limit. Core maximum is 500.
hasNextPagebooleantrue if another page exists. Stop when this is false or data is empty.
idintegerSchedule row ID for this fixture (same value as matchId on core fixtures).
matchIdintegerSame as id. Use with GET /tennis/v2/ms-api/matches/{matchId}/… detail aliases. Not the live hyphenated matchId.
datestringScheduled start as ISO-8601 UTC (…Z). This is the canonical start time when present.
startTimestringSame UTC instant as date (additive alias for clearer discovery).
timeGamestringLegacy start field. Prefer date/startTime for clocks; may be null or mirror date when set.
player1Id / player2IdintegerNumeric player IDs. On fixtures, player1 is only the first-listed player — not the winner.
tournamentIdintegerSeason/event ID for this week’s tournament edition.
roundIdintegerRound code. Resolve labels with GET /tennis/v2/round.
seed1 / seed2stringSeed or entry tag when set (e.g. 2, WC, Q). Null if unseeded.
livestringnull if the match has not started. A string is the in-progress score.
player1 / player2objectNested player: id, name, countryAcr. Doubles names contain /.
h2hobjectOnly with include=h2h, and omitted when the players have never met. Factual head-to-head wins: player1AllWins, player2AllWins (player1 vs player2 perspective). Not prediction data.
data[].player1.idnumberPlayer 1 ID.
data[].player1.namestringPlayer 1 name.
data[].player1.countryAcrstringPlayer 1 country code.
data[].player2.idnumberPlayer 2 ID.
data[].player2.namestringPlayer 2 name.
data[].player2.countryAcrstringPlayer 2 country code.
pagenumberCurrent page number (1-based).
limitnumberItems per page.

Fixtures by Player

GET/tennis/v2/{atp|wta}/fixtures/player/{player_id}
This example uses atp. Use wtafor the women's dataset.Returns upcoming fixtures for one player. Path needs a numeric player ID, not a display name.

Path Parameter

ParameterRequiredTypeDescription
atp|wtaYesstring
Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value.
player_idYesinteger
Player ID (≥ 1). Take it from Rankings (player.id), Fixtures (player1Id), or the core player list. Search returns names, not IDs.

Query Parameter

ParameterRequiredTypeDescription
includeNostring
Comma-separated extras. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h. If you also need pre-match odds or prediction enrichment, use Upcoming Matches (With Predictions & Odds Data) (all plans; modelPrediction requires ULTRA or MEGA).
Example: include=round,tournament.court,h2h
filterNostring
Semicolon-separated Key:value filters. Available:
  • PlayerGroup:singles | doubles | both — default includes doubles
  • TourRank:{id,id} — rank_id from GET /ranking (Grand Slam is 4). Requires tournament in include
  • TourCourt:{id,id} — requires tournament in include
  • TourCountry:{USA,FRA} — 3-letter codes; requires tournament in include
Example: filter=PlayerGroup:singles;TourCountry:USA,FRA
pageSizeNointeger
Results per page. Default: 10. Core maximum: 500 (larger values are reduced). Example: pageSize=10.
pageNoNointeger
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'

Same envelope as today's fixtures.

Response Properties

Shared objects in this response (defined once in Reusable response schemas): Player.

FieldTypeDescription
dataarrayThe page of results. An empty array with HTTP 200 means the request was valid and nothing matched that date, filter, or page.
pageNointegerCurrent page, starting at 1. Also returned as page.
pageSizeintegerItems requested for this page. Also returned as limit. Core maximum is 500.
hasNextPagebooleantrue if another page exists. Stop when this is false or data is empty.
idintegerSchedule row ID for this fixture (same value as matchId on core fixtures).
matchIdintegerSame as id. Use with GET /tennis/v2/ms-api/matches/{matchId}/… detail aliases. Not the live hyphenated matchId.
datestringScheduled start as ISO-8601 UTC (…Z). This is the canonical start time when present.
startTimestringSame UTC instant as date (additive alias for clearer discovery).
timeGamestringLegacy start field. Prefer date/startTime for clocks; may be null or mirror date when set.
player1Id / player2IdintegerNumeric player IDs. On fixtures, player1 is only the first-listed player — not the winner.
tournamentIdintegerSeason/event ID for this week’s tournament edition.
roundIdintegerRound code. Resolve labels with GET /tennis/v2/round.
seed1 / seed2stringSeed or entry tag when set (e.g. 2, WC, Q). Null if unseeded.
livestringnull if the match has not started. A string is the in-progress score.
player1 / player2objectNested player: id, name, countryAcr. Doubles names contain /.
h2hobjectOnly with include=h2h, and omitted when the players have never met. Factual head-to-head wins: player1AllWins, player2AllWins (player1 vs player2 perspective). Not prediction data.
data[].player1.idnumberPlayer 1 ID.
data[].player1.namestringPlayer 1 name.
data[].player1.countryAcrstringPlayer 1 country code.
data[].player2.idnumberPlayer 2 ID.
data[].player2.namestringPlayer 2 name.
data[].player2.countryAcrstringPlayer 2 country code.
pagenumberCurrent page number (1-based).
limitnumberItems per page.

Upcoming Fixtures Between Two Players by Player IDs

GET/tennis/v2/{atp|wta}/fixtures/h2h/{player1_id}/{player2_id}
This example uses atp. Use wtafor the women's dataset.Returns current-board fixtures between two numeric player IDs (today/upcoming table), not the career H2H archive. Empty data is a valid 200 when that pair is not on the current board. Use /h2h/matches for completed meetings.

Path Parameter

ParameterRequiredTypeDescription
atp|wtaYesstring
Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value.
player1_idYesinteger
First Player ID (≥ 1).
player2_idYesinteger
Second Player ID (≥ 1).

Query Parameter

ParameterRequiredTypeDescription
includeNostring
Comma-separated extras. Available: round, tournament, tournament.court, tournament.rank, tournament.country, h2h. If you also need pre-match odds or prediction enrichment, use Upcoming Matches (With Predictions & Odds Data) (all plans; modelPrediction requires ULTRA or MEGA).
Example: include=round,tournament.court,h2h
filterNostring
Semicolon-separated Key:value filters. Available:
  • PlayerGroup:singles | doubles | both — default includes doubles
  • TourRank:{id,id} — rank_id from GET /ranking (Grand Slam is 4). Requires tournament in include
  • TourCourt:{id,id} — requires tournament in include
  • TourCountry:{USA,FRA} — 3-letter codes; requires tournament in include
Example: filter=PlayerGroup:singles;TourCountry:USA,FRA
pageSizeNointeger
Results per page. Default: 10. Core maximum: 500 (larger values are reduced). Example: pageSize=10.
pageNoNointeger
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/39309' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Same list envelope as today's fixtures. player1 is the first-listed player, not the winner.

Response Properties

FieldTypeDescription
dataarrayThe page of results. An empty array with HTTP 200 means the request was valid and nothing matched that date, filter, or page.
pageNointegerCurrent page, starting at 1. Also returned as page.
pageSizeintegerItems requested for this page. Also returned as limit. Core maximum is 500.
hasNextPagebooleantrue if another page exists. Stop when this is false or data is empty.
idintegerSchedule row ID for this fixture (same value as matchId on core fixtures).
matchIdintegerSame as id. Use with GET /tennis/v2/ms-api/matches/{matchId}/… detail aliases. Not the live hyphenated matchId.
datestringScheduled start as ISO-8601 UTC (…Z). This is the canonical start time when present.
startTimestringSame UTC instant as date (additive alias for clearer discovery).
timeGamestringLegacy start field. Prefer date/startTime for clocks; may be null or mirror date when set.
player1Id / player2IdintegerNumeric player IDs. On fixtures, player1 is only the first-listed player — not the winner.
tournamentIdintegerSeason/event ID for this week’s tournament edition.
roundIdintegerRound code. Resolve labels with GET /tennis/v2/round.
seed1 / seed2stringSeed or entry tag when set (e.g. 2, WC, Q). Null if unseeded.
livestringnull if the match has not started. A string is the in-progress score.
player1 / player2objectNested player: id, name, countryAcr. Doubles names contain /.
h2hobjectOnly with include=h2h, and omitted when the players have never met. Factual head-to-head wins: player1AllWins, player2AllWins (player1 vs player2 perspective). Not prediction data.
pagenumberCurrent page number (1-based).
limitnumberItems per page.