API Reference

Fixtures

Scheduled ATP/WTA matches for today, a date, a date range, a tournament, or a player. 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.

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 H2HPast 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 ATP/WTA data; 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/fixtures?filter=PlayerGroup:singles
This example uses atp. Use wtafor the women's dataset.Returns today's upcoming ATP or WTA fixtures. There is no date in the path โ€” the list is always for today, so names change. The sample JSON below is a real singles row from 2026-09-08 so the documented body stays stable.

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 extra objects to add to each item. Available: round (human-readable tournament round for roundId, e.g. Quarter-Final, Semi-Final, Final โ€” full lookup: GET /tennis/v2/round), tournament, tournament.court, tournament.rank, tournament.country, h2h, odds (pre-match odds when present).
Example: include=round,tournament.court,h2h,odds
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?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. Do not send it to live odds or point-by-point routes.
datestringScheduled date/time as an ISO-8601 string. May be null if the time is not set yet.
player1Id / player2IdintegerNumeric player IDs. On upcoming lists, 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.
livestringnull if the match has not started. A string is the in-progress score.
player1 / player2objectNested player: id, name, countryAcr. Doubles names contain /.
oddsobjectPresent when include contains odds and odds exist for that fixture. Omitted when none are available.

Fixtures by Date

GET/tennis/v2/atp/fixtures/2026-09-19
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 extra objects to add to each item. Available: round (human-readable tournament round for roundId, e.g. Quarter-Final, Semi-Final, Final โ€” full lookup: GET /tennis/v2/round), tournament, tournament.court, tournament.rank, tournament.country, h2h, odds (pre-match odds when present).
Example: include=round,tournament.court,h2h,odds
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-19' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Fixtures by Date Range

GET/tennis/v2/atp/fixtures/2026-09-19/2026-09-20
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 extra objects to add to each item. Available: round (human-readable tournament round for roundId, e.g. Quarter-Final, Semi-Final, Final โ€” full lookup: GET /tennis/v2/round), tournament, tournament.court, tournament.rank, tournament.country, h2h, odds (pre-match odds when present).
Example: include=round,tournament.court,h2h,odds
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-19/2026-09-20' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Fixtures by Tournament

GET/tennis/v2/atp/fixtures/tournament/22030?filter=PlayerGroup:singles
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 extra objects to add to each item. Available: round (human-readable tournament round for roundId, e.g. Quarter-Final, Semi-Final, Final โ€” full lookup: GET /tennis/v2/round), tournament, tournament.court, tournament.rank, tournament.country, h2h, odds (pre-match odds when present).
Example: include=round,tournament.court,h2h,odds
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/22030?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.

Fixtures by Player

GET/tennis/v2/atp/fixtures/player/68074
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 extra objects to add to each item. Available: round (human-readable tournament round for roundId, e.g. Quarter-Final, Semi-Final, Final โ€” full lookup: GET /tennis/v2/round), tournament, tournament.court, tournament.rank, tournament.country, h2h, odds (pre-match odds when present).
Example: include=round,tournament.court,h2h,odds
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.

Historical H2H Fixtures by Player IDs

GET/tennis/v2/atp/fixtures/h2h/30496/55828
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 extra objects to add to each item. Available: round (human-readable tournament round for roundId, e.g. Quarter-Final, Semi-Final, Final โ€” full lookup: GET /tennis/v2/round), tournament, tournament.court, tournament.rank, tournament.country, h2h, odds (pre-match odds when present).
Example: include=round,tournament.court,h2h,odds
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/30496/55828' \
	--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. Do not send it to live odds or point-by-point routes.
datestringScheduled date/time as an ISO-8601 string. May be null if the time is not set yet.
player1Id / player2IdintegerNumeric player IDs. On upcoming lists, 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.
livestringnull if the match has not started. A string is the in-progress score.
player1 / player2objectNested player: id, name, countryAcr. Doubles names contain /.
oddsobjectPresent when include contains odds and odds exist for that fixture. Omitted when none are available.