API Reference

H2H & Match Analysis

Use the core routes for H2H wins, match lists, aggregated stats, and filters. Paths accept a numeric ID or a URL-encoded display name.

Endpoint Summary

GET/tennis/v2/{atp|wta}/h2h/info/{player1_id}/{player2_id}
GET/tennis/v2/{atp|wta}/h2h/filter/{player1_id}/{player2_id}
GET/tennis/v2/{atp|wta}/h2h/matches/{player1_id}/{player2_id}
GET/tennis/v2/{atp|wta}/h2h/stats/{player1_id}/{player2_id}
GET/tennis/v2/{atp|wta}/h2h/vs-all-stats/{player_id}
GET/tennis/v2/{atp|wta}/h2h/match-stats/{tournamentId}/{player1_id}/{player2_id}

H2H Summary by Player IDs

GET/tennis/v2/atp/h2h/info/68074/47275
This example uses atp. Use wtafor the women's dataset.Returns how many times each player has beaten the other, split by court surface. Path accepts numeric IDs or URL-encoded display names. Counts official H2H matches only by default; add includeAll=true to include Challenger, ITF and qualifying matches.

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_idYesstring
First player: numeric ID or URL-encoded display name. Example: 68074 or Carlos%20Alcaraz.
player2_idYesstring
Second player: numeric ID or URL-encoded display name. Example: 47275 or Jannik%20Sinner.

Query Parameter

ParameterRequiredTypeDescription
includeAllNoboolean
Default false: only official H2H matches count (tour level: Grand Slams, Masters, ATP/WTA Tour, Tour Finals, Davis Cup / BJK Cup, Olympics). Challenger, Futures/ITF and qualifying-round matches are left out, matching the official ATP/WTA head-to-head. Set includeAll=true to include them. Example: includeAll=true
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/h2h/info/68074/47275' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
dataarrayOne object per court surface where these two players have met.
courtIdintegerSurface ID. Resolve names with GET /tennis/v2/court.
courtstringSurface label, e.g. Hard, Clay, I.hard, Grass.
player1winsstringWins on this surface for the first path player.
player2winsstringWins on this surface for the second path player.

H2H Matches by Player IDs

GET/tennis/v2/atp/h2h/matches/68074/47275
This example uses atp. Use wtafor the women's dataset.Returns the full list of past matches between two players. On these rows player1 is the winner. Path accepts numeric IDs or URL-encoded names. Counts official H2H matches only by default; add includeAll=true to include Challenger, ITF and qualifying matches.

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_idYesstring
First player: numeric ID or URL-encoded display name. Example: 68074 or Carlos%20Alcaraz.
player2_idYesstring
Second player: numeric ID or URL-encoded display name. Example: 47275 or Jannik%20Sinner.

Query Parameter

ParameterRequiredTypeDescription
includeAllNoboolean
Default false: only official H2H matches count (tour level: Grand Slams, Masters, ATP/WTA Tour, Tour Finals, Davis Cup / BJK Cup, Olympics). Challenger, Futures/ITF and qualifying-round matches are left out, matching the official ATP/WTA head-to-head. Set includeAll=true to include them. Example: includeAll=true
includeNostring
Comma-separated extra objects to add. round returns the human-readable tournament round associated with roundId, for example Quarter-Final, Semi-Final or Final (full lookup: GET /tennis/v2/round). Also tournament, tournament.court, tournament.rank, tournament.country, stat (per-match serve & return statistics).
Example: include=round,tournament.court
filterNostring
Semicolon-separated filters in Key:value format. Available filters:
  • GameYear:2024, 2025 โ€” filter by year(s)
  • GameRound:1, 2 โ€” filter by round ID(s)
  • GameCourt:1, 2 โ€” requires tournament in include
  • TourRank:4 โ€” rank_id from GET /ranking (Grand Slam is 4). Requires tournament in include
  • GameTour:20340 โ€” filter by specific tournament ID(s)
Example: filter=GameYear:2024,2025;TourRank:4
surfaceNostring
Filter by surface name. Alias of court. Example: surface=clay or court=Clay.
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/h2h/matches/68074/47275' \
	--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.
idintegerCompleted-match archive ID (not a live event id).
datestringMatch date/time as ISO-8601.
resultstringScore string, e.g. 6-4 6-3.
player1Id / player2IdintegerOn completed matches, player1 is always the winner and player2 the loser.
tournamentId / roundIdintegerEvent edition and round.
odd1 / odd2stringPre-match odds when available; often null on older matches.

H2H Aggregate Stats by Player IDs

GET/tennis/v2/atp/h2h/stats/68074/47275
This example uses atp. Use wtafor the women's dataset.Returns aggregated serve and return statistics comparing the two players over all their meetings. player1Stats is the first path player. Counts official H2H matches only by default; add includeAll=true to include Challenger, ITF and qualifying matches.

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_idYesstring
First player: numeric ID or URL-encoded display name. Example: 68074 or Carlos%20Alcaraz.
player2_idYesstring
Second player: numeric ID or URL-encoded display name. Example: 47275 or Jannik%20Sinner.

Query Parameter

ParameterRequiredTypeDescription
includeAllNoboolean
Default false: only official H2H matches count (tour level: Grand Slams, Masters, ATP/WTA Tour, Tour Finals, Davis Cup / BJK Cup, Olympics). Challenger, Futures/ITF and qualifying-round matches are left out, matching the official ATP/WTA head-to-head. Set includeAll=true to include them. Example: includeAll=true
surfaceNostring
Only hard, clay, grass, or carpet on this core route. Other values (including I.hard) return 400.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/h2h/stats/68074/47275' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
data.matchesCountintegerMeetings included in this aggregate.
data.player1StatsobjectTotals for the first path player (wins, aces, surface wins, โ€ฆ).
data.player2StatsobjectTotals for the second path player, same shape.

H2H Filter Options by Player IDs

GET/tennis/v2/atp/h2h/filter/68074/47275
This example uses atp. Use wtafor the women's dataset.Returns available filter options for an H2H comparison (surfaces, years, rounds, etc.). Counts official H2H matches only by default; add includeAll=true to include Challenger, ITF and qualifying matches.

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_idYesstring
First player: numeric ID or URL-encoded display name. Example: 68074 or Carlos%20Alcaraz.
player2_idYesstring
Second player: numeric ID or URL-encoded display name. Example: 47275 or Jannik%20Sinner.

Query Parameter

ParameterRequiredTypeDescription
includeAllNoboolean
Default false: only official H2H matches count (tour level: Grand Slams, Masters, ATP/WTA Tour, Tour Finals, Davis Cup / BJK Cup, Olympics). Challenger, Futures/ITF and qualifying-round matches are left out, matching the official ATP/WTA head-to-head. Set includeAll=true to include them. Example: includeAll=true
Example Request: JAVASCRIPT
const response = await fetch("https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/h2h/filter/68074/47275", {
   method: "GET",
   headers: {
      "X-RapidAPI-Key": "YOUR_RAPIDAPI_KEY",
      "X-RapidAPI-Host": "tennis-api-atp-wta-itf.p.rapidapi.com",
   },
});

const result = await response.json();
console.log(result);

Response Properties

Returns the distinct filter values present in the two players' H2H match history โ€” used to build filter UI panels.

FieldTypeDescription
roundsarrayDistinct rounds played: each item is roundId, round.
courtsarrayDistinct court surfaces: each item is courtId, court.
tournamentsarrayDistinct tournaments where matches were played: each item is tournamentId, tournament, tournamentDate.
tournamentRanksarrayDistinct tournament tiers: each item is rankId, rank.
gameYearsarray<number>Distinct calendar years in which matches occurred, sorted descending.

Player vs All Stats

GET/tennis/v2/atp/h2h/vs-all-stats/68074
This example uses atp. Use wtafor the women's dataset.Returns this player's aggregated stats versus the combined field of all opponents (not a list of each rival). Path needs a numeric player ID.

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.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/h2h/vs-all-stats/68074' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
data.matchesCountstringMatches included in this aggregate.
data.playerStatsobjectThis player's totals (wins, serve, return, points).
data.opponentStatsobjectCombined totals for everyone they faced โ€” not per-opponent rows.

H2H Match Stats by Tournament

GET/tennis/v2/atp/h2h/match-stats/20340/68074/47275
This example uses atp. Use wtafor the women's dataset.Returns serve/return stats for the completed match between these two players at that tournament season ID. player1Stats is the first path player.

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
player1_idYesstring
First player: numeric ID or URL-encoded display name. Example: 68074 or Carlos%20Alcaraz.
player2_idYesstring
Second player: numeric ID or URL-encoded display name. Example: 47275 or Jannik%20Sinner.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/h2h/match-stats/20340/68074/47275' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
data.player1StatsobjectStats for the first path player in that tournament meeting.
data.player2StatsobjectStats for the second path player.
aces / firstServe / winners / โ€ฆintegerPer-match counting stats. Null means that metric is not available for the match.

Extra H2H endpoints

These are not replacements for the core H2H info, matches, stats, or filters above.

Detect Player Tour

GET/tennis/v2/h2h/playerType/Novak%20Djokovic
Retrieve the tour type of a player, indicating whether they compete on the ATP or WTA tour.

Path Parameter

ParameterRequiredTypeDescription
player_id_or_nameYesstring
URL-encoded display name (Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/h2h/playerType/Novak%20Djokovic' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Upcoming H2H Match

GET/tennis/v2/h2h/upcoming/atp/Lucas%20Poullain/Clement%20Chidekh
This example uses atp. Use wtafor the women's dataset.Returns the next scheduled meeting between two players, including odds, round, and tournament.

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_id_or_nameYesstring
First player: URL-encoded display name (Carlos%20Alcaraz) or numeric ID.
player2_id_or_nameYesstring
Second player: URL-encoded display name (Jannik%20Sinner) or numeric ID.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/h2h/upcoming/atp/Lucas%20Poullain/Clement%20Chidekh' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
idintegerFixture id for this meeting.
datestringScheduled start as ISO-8601.
player1 / player2objectFirst-listed and second-listed players (not winner/loser).
tournament / roundobjectEvent name, date, court, and round label.
odd1 / odd2numberPre-match odds when present.

Recent Event Between Players

GET/tennis/v2/h2h/player-vs-player/recent-event/atp/Lucas%20Poullain/Clement%20Chidekh
This example uses atp. Use wtafor the women's dataset.Returns the most recent or next meeting between two players, with form and prize-money context.

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_id_or_nameYesstring
First player: URL-encoded display name (Carlos%20Alcaraz) or numeric ID.
player2_id_or_nameYesstring
Second player: URL-encoded display name (Jannik%20Sinner) or numeric ID.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/h2h/player-vs-player/recent-event/atp/Lucas%20Poullain/Clement%20Chidekh' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
idintegerFixture id for this meeting.
datestringScheduled start as ISO-8601.
player1 / player2objectFirst-listed and second-listed players (not winner/loser).
tournament / roundobjectEvent name, date, court, and round label.
odd1 / odd2numberPre-match odds when present.

Current Event H2H Statistics

GET/tennis/v2/h2h/current/atp/Lucas%20Poullain/Clement%20Chidekh
This example uses atp. Use wtafor the women's dataset.Returns this playerโ€™s stats at the tournament both players are currently in โ€” holds, break saves, points, and match counts.

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_id_or_nameYesstring
First player: URL-encoded display name (Carlos%20Alcaraz) or numeric ID.
player2_id_or_nameYesstring
Second player: URL-encoded display name (Jannik%20Sinner) or numeric ID.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/h2h/current/atp/Lucas%20Poullain/Clement%20Chidekh' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
name / tourName / country / courtstringPlayer and current-event context.
matchesPlayedintegerMatches this player has completed at the event.
winsCountOnWin1 / winsCountOnWin2integerWin counts in the current-event split.
serviceHold / breakPointsSaved / totalPointsWonmixedIn-event hold, break-save, and points totals with matching *Of and *Percentage fields.

Paired Player Profiles

GET/tennis/v2/h2h/profile/atp/Novak%20Djokovic/Jannik%20Sinner/false
This example uses atp. Use wtafor the women's dataset.Profiles for both players in a matchup, plus surface H2H. Add includeAll=true to include Challenger/ITF in the aggregates. Path limit is true or false (not a page size).

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_id_or_nameYesstring
First player: URL-encoded display name (Carlos%20Alcaraz) or numeric ID.
player2_id_or_nameYesstring
Second player: URL-encoded display name (Jannik%20Sinner) or numeric ID.
limitYesstring
Path flag: true limits recent matches, false returns full history.

Query Parameter

ParameterRequiredTypeDescription
includeAllNoboolean
Include Challenger/ITF and full history where supported. Example: includeAll=true
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/h2h/profile/atp/Novak%20Djokovic/Jannik%20Sinner/false' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
player1 / player2objectFull profile for each path player.
player1.contryAcrstring3-letter country code. The key is spelled contryAcr (no u) in the live payload.
player1.playerStatobjectWin/loss by level: maintourWin, slamWin, โ€ฆ
surfaceDataobjectH2H wins by surface. Suffix 1 is player1, suffix 2 is player2 (hard1, clay1, โ€ฆ).

Player Surface Breakdown (H2H View)

GET/tennis/v2/h2h/surfaceBreakdown/atp/Novak%20Djokovic
This example uses atp. Use wtafor the women's dataset.Returns this player's win/loss split by surface. Path takes one player, not two.

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_id_or_nameYesstring
URL-encoded display name (Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}.

Query Parameter

ParameterRequiredTypeDescription
courtNostring
Surface name. Prefer this over surface. Example: court=Clay.
surfaceNostring
Filter by surface name. Alias of court. Example: surface=clay or court=Clay.
yearNointeger
Filter to a specific year. Example: year=2026
tournamentNostring
Filter by tournament name. Example: tournament=EFG%20Swiss%20Open%20-%20Gstaad
includeAllNoboolean
Include Challenger/ITF and full history where supported. Example: includeAll=true
pageNointeger
Page number on advanced routes, starting at 1. Do not send pageNo here. Example: page=1
limitNointeger
Results per page on advanced routes (use page + limit, not pageNo + pageSize). Default varies by endpoint. Example: limit=10
levelNointeger
Tournament level id. Example: level=4.
roundNostring
Round filter. Example: round=Final.
weekNointeger
Tour week number when supported. Example: week=12.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/h2h/surfaceBreakdown/atp/Novak%20Djokovic' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Recent H2H Records

GET/tennis/v2/h2h/recent/atp/Novak%20Djokovic
This example uses atp. Use wtafor the women's dataset.Returns this player's recent completed matches (one player in the path).

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_id_or_nameYesstring
URL-encoded display name (Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}.

Query Parameter

ParameterRequiredTypeDescription
courtNostring
Surface name. Prefer this over surface. Example: court=Clay.
surfaceNostring
Filter by surface name. Alias of court. Example: surface=clay or court=Clay.
yearNointeger
Filter to a specific year. Example: year=2026
tournamentNostring
Filter by tournament name. Example: tournament=EFG%20Swiss%20Open%20-%20Gstaad
includeAllNoboolean
Include Challenger/ITF and full history where supported. Example: includeAll=true
pageNointeger
Page number on advanced routes, starting at 1. Do not send pageNo here. Example: page=1
limitNointeger
Results per page on advanced routes (use page + limit, not pageNo + pageSize). Default varies by endpoint. Example: limit=10
levelNointeger
Tournament level id. Example: level=4.
roundNostring
Round filter. Example: round=Final.
weekNointeger
Tour week number when supported. Example: week=12.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/h2h/recent/atp/Novak%20Djokovic' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Recent Player Stats

GET/tennis/v2/h2h/recent-stats/atp/Carlos%20Alcaraz
This example uses atp. Use wtafor the women's dataset.Returns this player's recent form stats (one player in the path โ€” not vs a named opponent).

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_id_or_nameYesstring
URL-encoded display name (Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}.

Query Parameter

ParameterRequiredTypeDescription
courtNostring
Surface name. Prefer this over surface. Example: court=Clay.
surfaceNostring
Filter by surface name. Alias of court. Example: surface=clay or court=Clay.
yearNointeger
Filter to a specific year. Example: year=2026
tournamentNostring
Filter by tournament name. Example: tournament=EFG%20Swiss%20Open%20-%20Gstaad
includeAllNoboolean
Include Challenger/ITF and full history where supported. Example: includeAll=true
pageNointeger
Page number on advanced routes, starting at 1. Do not send pageNo here. Example: page=1
limitNointeger
Results per page on advanced routes (use page + limit, not pageNo + pageSize). Default varies by endpoint. Example: limit=10
levelNointeger
Tournament level id. Example: level=4.
roundNostring
Round filter. Example: round=Final.
weekNointeger
Tour week number when supported. Example: week=12.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/h2h/recent-stats/atp/Carlos%20Alcaraz' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Player H2H Breakdown

GET/tennis/v2/h2h/breakdown/atp/Carlos%20Alcaraz
This example uses atp. Use wtafor the women's dataset.Retrieve a single player's career H2H-style breakdown (titles, surfaces, serve/return). This path takes one player โ€” two names return "No such player". Use /h2h/stats for two-player stats.

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_id_or_nameYesstring
URL-encoded display name (Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}.

Query Parameter

ParameterRequiredTypeDescription
courtNostring
Surface name. Prefer this over surface. Example: court=Clay.
surfaceNostring
Filter by surface name. Alias of court. Example: surface=clay or court=Clay.
yearNointeger
Filter to a specific year. Example: year=2026
tournamentNostring
Filter by tournament name. Example: tournament=EFG%20Swiss%20Open%20-%20Gstaad
includeAllNoboolean
Include Challenger/ITF and full history where supported. Example: includeAll=true
pageNointeger
Page number on advanced routes, starting at 1. Do not send pageNo here. Example: page=1
limitNointeger
Results per page on advanced routes (use page + limit, not pageNo + pageSize). Default varies by endpoint. Example: limit=10
levelNointeger
Tournament level id. Example: level=4.
roundNostring
Round filter. Example: round=Final.
weekNointeger
Tour week number when supported. Example: week=12.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/h2h/breakdown/atp/Carlos%20Alcaraz' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
namestringThe single player in the path โ€” this is not a two-player H2H.
matchesCountintegerMatches included in this breakdown.
matchesWon1 / matchesWon2integerSuffix 1 is this playerโ€™s wins; suffix 2 is losses (or the complementary count).
hard1, clay1, grass1, iHard1integerThis playerโ€™s wins on each surface. Matching *2 fields are losses.
ytdWon / ytdLostintegerYear-to-date win/loss.
aces / firstServePercentage / โ€ฆnumberCareer serve, return, tiebreak, and pressure stats for this player.

H2H Filter Options (Player-v-Player Mode)

GET/tennis/v2/h2h/filters/Novak%20Djokovic/Carlos%20Alcaraz/atp/vs
This example uses atp. Use wtafor the women's dataset.Retrieve all available filter options for head-to-head player comparisons, including court surfaces, tournament rounds, competition levels, tournaments, and seasons. Use these values to build valid filter queries for player-vs-player H2H endpoints.

Path Parameter

ParameterRequiredTypeDescription
player1_id_or_nameYesstring
First player: URL-encoded display name (Carlos%20Alcaraz) or numeric ID.
player2_id_or_nameYesstring
Second player: URL-encoded display name (Jannik%20Sinner) or numeric ID.
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.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/h2h/filters/Novak%20Djokovic/Carlos%20Alcaraz/atp/vs' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Last Match Played

GET/tennis/v2/h2h/last-match-played/atp/Carlos%20Alcaraz
This example uses atp. Use wtafor the women's dataset.Returns this player's most recently completed match (one player in the path โ€” not a two-player H2H).

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_id_or_nameYesstring
URL-encoded display name (Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/h2h/last-match-played/atp/Carlos%20Alcaraz' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
player1 / player2stringDisplay names. player1 is this path player.
resultstringwon or lost from this playerโ€™s side.
scorestringSet score string.
roundintegerRound id (not the label).
tournamentstringEvent name.
matchtimestringDuration/time string. Can be a zero date such as 0000-00-00 04:28:00 when only duration is known.

Player Rivalries

GET/tennis/v2/h2h/rivalries/atp/Novak%20Djokovic
This example uses atp. Use wtafor the women's dataset.A player's biggest rivalries. includeAll=true adds Challenger/ITF 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.
player_id_or_nameYesstring
URL-encoded display name (Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}.

Query Parameter

ParameterRequiredTypeDescription
includeAllNoboolean
Include Challenger/ITF and full history where supported. Example: includeAll=true
limitNointeger
Results per page on advanced routes (use page + limit, not pageNo + pageSize). Default varies by endpoint. Example: limit=10
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/h2h/rivalries/atp/Novak%20Djokovic' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Interesting H2H: Notable Rivalries (Tour-Wide)

GET/tennis/v2/interesting-h2h/atp
This example uses atp. Use wtafor the women's dataset.Retrieves the most interesting potential head-to-head matchups based on the current potential fixtures. Each result includes both players, their career head-to-head record, and the tour where the matchup could occur.

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
includeAllNoboolean
Include Challenger/ITF and full history where supported. Example: includeAll=true
topNonumber
Maximum number of top potential matchups to return. Example: top=10
pageNointeger
Page number on advanced routes, starting at 1. Do not send pageNo here. Example: page=1
limitNointeger
Results per page on advanced routes (use page + limit, not pageNo + pageSize). Default varies by endpoint. Example: limit=10
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/interesting-h2h/atp' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'