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
|
|
|
|
|
|
H2H Summary by Player IDs
GET
This example uses /tennis/v2/atp/h2h/info/68074/47275atp. 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
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | 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 | Yes | string | First player: numeric ID or URL-encoded display name. Example: 68074 or Carlos%20Alcaraz. |
player2_id | Yes | string | Second player: numeric ID or URL-encoded display name. Example: 47275 or Jannik%20Sinner. |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
includeAll | No | boolean | 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 |
Response Properties
| Field | Type | Description |
|---|---|---|
data | array | One object per court surface where these two players have met. |
courtId | integer | Surface ID. Resolve names with GET /tennis/v2/court. |
court | string | Surface label, e.g. Hard, Clay, I.hard, Grass. |
player1wins | string | Wins on this surface for the first path player. |
player2wins | string | Wins on this surface for the second path player. |
H2H Matches by Player IDs
GET
This example uses /tennis/v2/atp/h2h/matches/68074/47275atp. 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
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | 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 | Yes | string | First player: numeric ID or URL-encoded display name. Example: 68074 or Carlos%20Alcaraz. |
player2_id | Yes | string | Second player: numeric ID or URL-encoded display name. Example: 47275 or Jannik%20Sinner. |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
includeAll | No | boolean | 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 |
include | No | string | 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 |
filter | No | string | Semicolon-separated filters in Key:value format. Available filters:
filter=GameYear:2024,2025;TourRank:4 |
surface | No | string | Filter by surface name. Alias of court. Example: surface=clay or court=Clay. |
pageSize | No | integer | Results per page. Default: 10. Core maximum: 500 (larger values are reduced). Example: pageSize=10. |
pageNo | No | integer | Page number, 1-indexed. Default: 1. Example: pageNo=1. Use hasNextPage in the response to check for more pages. |
Response Properties
| Field | Type | Description |
|---|---|---|
data | array | The page of results. An empty array with HTTP 200 means the request was valid and nothing matched that date, filter, or page. |
pageNo | integer | Current page, starting at 1. Also returned as page. |
pageSize | integer | Items requested for this page. Also returned as limit. Core maximum is 500. |
hasNextPage | boolean | true if another page exists. Stop when this is false or data is empty. |
id | integer | Completed-match archive ID (not a live event id). |
date | string | Match date/time as ISO-8601. |
result | string | Score string, e.g. 6-4 6-3. |
player1Id / player2Id | integer | On completed matches, player1 is always the winner and player2 the loser. |
tournamentId / roundId | integer | Event edition and round. |
odd1 / odd2 | string | Pre-match odds when available; often null on older matches. |
H2H Aggregate Stats by Player IDs
GET
This example uses /tennis/v2/atp/h2h/stats/68074/47275atp. 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
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | 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 | Yes | string | First player: numeric ID or URL-encoded display name. Example: 68074 or Carlos%20Alcaraz. |
player2_id | Yes | string | Second player: numeric ID or URL-encoded display name. Example: 47275 or Jannik%20Sinner. |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
includeAll | No | boolean | 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 |
surface | No | string | Only hard, clay, grass, or carpet on this core route. Other values (including I.hard) return 400. |
Response Properties
| Field | Type | Description |
|---|---|---|
data.matchesCount | integer | Meetings included in this aggregate. |
data.player1Stats | object | Totals for the first path player (wins, aces, surface wins, โฆ). |
data.player2Stats | object | Totals for the second path player, same shape. |
H2H Filter Options by Player IDs
GET
This example uses /tennis/v2/atp/h2h/filter/68074/47275atp. 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
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | 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 | Yes | string | First player: numeric ID or URL-encoded display name. Example: 68074 or Carlos%20Alcaraz. |
player2_id | Yes | string | Second player: numeric ID or URL-encoded display name. Example: 47275 or Jannik%20Sinner. |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
includeAll | No | boolean | 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 |
Response Properties
Returns the distinct filter values present in the two players' H2H match history โ used to build filter UI panels.
| Field | Type | Description |
|---|---|---|
rounds | array | Distinct rounds played: each item is roundId, round. |
courts | array | Distinct court surfaces: each item is courtId, court. |
tournaments | array | Distinct tournaments where matches were played: each item is tournamentId, tournament, tournamentDate. |
tournamentRanks | array | Distinct tournament tiers: each item is rankId, rank. |
gameYears | array<number> | Distinct calendar years in which matches occurred, sorted descending. |
Player vs All Stats
GET
This example uses /tennis/v2/atp/h2h/vs-all-stats/68074atp. 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
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | 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 | Yes | integer |
Response Properties
| Field | Type | Description |
|---|---|---|
data.matchesCount | string | Matches included in this aggregate. |
data.playerStats | object | This player's totals (wins, serve, return, points). |
data.opponentStats | object | Combined totals for everyone they faced โ not per-opponent rows. |
H2H Match Stats by Tournament
GET
This example uses /tennis/v2/atp/h2h/match-stats/20340/68074/47275atp. 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
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | 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_id | Yes | integer | Tournament ID must be numeric value >= 1 |
player1_id | Yes | string | First player: numeric ID or URL-encoded display name. Example: 68074 or Carlos%20Alcaraz. |
player2_id | Yes | string | Second player: numeric ID or URL-encoded display name. Example: 47275 or Jannik%20Sinner. |
Response Properties
| Field | Type | Description |
|---|---|---|
data.player1Stats | object | Stats for the first path player in that tournament meeting. |
data.player2Stats | object | Stats for the second path player. |
aces / firstServe / winners / โฆ | integer | Per-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
Retrieve the tour type of a player, indicating whether they compete on the ATP or WTA tour./tennis/v2/h2h/playerType/Novak%20DjokovicPath Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
player_id_or_name | Yes | string | URL-encoded display name ( Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}. |
Upcoming H2H Match
GET
This example uses /tennis/v2/h2h/upcoming/atp/Lucas%20Poullain/Clement%20Chidekhatp. Use wtafor the women's dataset.Returns the next scheduled meeting between two players, including odds, round, and tournament.Path Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | 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_name | Yes | string | First player: URL-encoded display name ( Carlos%20Alcaraz) or numeric ID. |
player2_id_or_name | Yes | string | Second player: URL-encoded display name ( Jannik%20Sinner) or numeric ID. |
Response Properties
| Field | Type | Description |
|---|---|---|
id | integer | Fixture id for this meeting. |
date | string | Scheduled start as ISO-8601. |
player1 / player2 | object | First-listed and second-listed players (not winner/loser). |
tournament / round | object | Event name, date, court, and round label. |
odd1 / odd2 | number | Pre-match odds when present. |
Recent Event Between Players
GET
This example uses /tennis/v2/h2h/player-vs-player/recent-event/atp/Lucas%20Poullain/Clement%20Chidekhatp. Use wtafor the women's dataset.Returns the most recent or next meeting between two players, with form and prize-money context.Path Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | 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_name | Yes | string | First player: URL-encoded display name ( Carlos%20Alcaraz) or numeric ID. |
player2_id_or_name | Yes | string | Second player: URL-encoded display name ( Jannik%20Sinner) or numeric ID. |
Response Properties
| Field | Type | Description |
|---|---|---|
id | integer | Fixture id for this meeting. |
date | string | Scheduled start as ISO-8601. |
player1 / player2 | object | First-listed and second-listed players (not winner/loser). |
tournament / round | object | Event name, date, court, and round label. |
odd1 / odd2 | number | Pre-match odds when present. |
Current Event H2H Statistics
GET
This example uses /tennis/v2/h2h/current/atp/Lucas%20Poullain/Clement%20Chidekhatp. 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
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | 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_name | Yes | string | First player: URL-encoded display name ( Carlos%20Alcaraz) or numeric ID. |
player2_id_or_name | Yes | string | Second player: URL-encoded display name ( Jannik%20Sinner) or numeric ID. |
Response Properties
| Field | Type | Description |
|---|---|---|
name / tourName / country / court | string | Player and current-event context. |
matchesPlayed | integer | Matches this player has completed at the event. |
winsCountOnWin1 / winsCountOnWin2 | integer | Win counts in the current-event split. |
serviceHold / breakPointsSaved / totalPointsWon | mixed | In-event hold, break-save, and points totals with matching *Of and *Percentage fields. |
Paired Player Profiles
GET
This example uses /tennis/v2/h2h/profile/atp/Novak%20Djokovic/Jannik%20Sinner/falseatp. 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
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | 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_name | Yes | string | First player: URL-encoded display name ( Carlos%20Alcaraz) or numeric ID. |
player2_id_or_name | Yes | string | Second player: URL-encoded display name ( Jannik%20Sinner) or numeric ID. |
limit | Yes | string | Path flag: true limits recent matches, false returns full history. |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
includeAll | No | boolean | Include Challenger/ITF and full history where supported. Example: includeAll=true |
Response Properties
| Field | Type | Description |
|---|---|---|
player1 / player2 | object | Full profile for each path player. |
player1.contryAcr | string | 3-letter country code. The key is spelled contryAcr (no u) in the live payload. |
player1.playerStat | object | Win/loss by level: maintourWin, slamWin, โฆ |
surfaceData | object | H2H wins by surface. Suffix 1 is player1, suffix 2 is player2 (hard1, clay1, โฆ). |
Player Surface Breakdown (H2H View)
GET
This example uses /tennis/v2/h2h/surfaceBreakdown/atp/Novak%20Djokovicatp. Use wtafor the women's dataset.Returns this player's win/loss split by surface. Path takes one player, not two.Path Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | 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_name | Yes | string | URL-encoded display name ( Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}. |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
court | No | string | Surface name. Prefer this over surface. Example: court=Clay. |
surface | No | string | Filter by surface name. Alias of court. Example: surface=clay or court=Clay. |
year | No | integer | Filter to a specific year. Example: year=2026 |
tournament | No | string | Filter by tournament name. Example: tournament=EFG%20Swiss%20Open%20-%20Gstaad |
includeAll | No | boolean | Include Challenger/ITF and full history where supported. Example: includeAll=true |
page | No | integer | Page number on advanced routes, starting at 1. Do not send pageNo here. Example: page=1 |
limit | No | integer | Results per page on advanced routes (use page + limit, not pageNo + pageSize). Default varies by endpoint. Example: limit=10 |
level | No | integer | Tournament level id. Example: level=4. |
round | No | string | Round filter. Example: round=Final. |
week | No | integer | Tour week number when supported. Example: week=12. |
Recent H2H Records
GET
This example uses /tennis/v2/h2h/recent/atp/Novak%20Djokovicatp. Use wtafor the women's dataset.Returns this player's recent completed matches (one player in the path).Path Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | 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_name | Yes | string | URL-encoded display name ( Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}. |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
court | No | string | Surface name. Prefer this over surface. Example: court=Clay. |
surface | No | string | Filter by surface name. Alias of court. Example: surface=clay or court=Clay. |
year | No | integer | Filter to a specific year. Example: year=2026 |
tournament | No | string | Filter by tournament name. Example: tournament=EFG%20Swiss%20Open%20-%20Gstaad |
includeAll | No | boolean | Include Challenger/ITF and full history where supported. Example: includeAll=true |
page | No | integer | Page number on advanced routes, starting at 1. Do not send pageNo here. Example: page=1 |
limit | No | integer | Results per page on advanced routes (use page + limit, not pageNo + pageSize). Default varies by endpoint. Example: limit=10 |
level | No | integer | Tournament level id. Example: level=4. |
round | No | string | Round filter. Example: round=Final. |
week | No | integer | Tour week number when supported. Example: week=12. |
Recent Player Stats
GET
This example uses /tennis/v2/h2h/recent-stats/atp/Carlos%20Alcarazatp. 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
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | 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_name | Yes | string | URL-encoded display name ( Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}. |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
court | No | string | Surface name. Prefer this over surface. Example: court=Clay. |
surface | No | string | Filter by surface name. Alias of court. Example: surface=clay or court=Clay. |
year | No | integer | Filter to a specific year. Example: year=2026 |
tournament | No | string | Filter by tournament name. Example: tournament=EFG%20Swiss%20Open%20-%20Gstaad |
includeAll | No | boolean | Include Challenger/ITF and full history where supported. Example: includeAll=true |
page | No | integer | Page number on advanced routes, starting at 1. Do not send pageNo here. Example: page=1 |
limit | No | integer | Results per page on advanced routes (use page + limit, not pageNo + pageSize). Default varies by endpoint. Example: limit=10 |
level | No | integer | Tournament level id. Example: level=4. |
round | No | string | Round filter. Example: round=Final. |
week | No | integer | Tour week number when supported. Example: week=12. |
Player H2H Breakdown
GET
This example uses /tennis/v2/h2h/breakdown/atp/Carlos%20Alcarazatp. 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
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | 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_name | Yes | string | URL-encoded display name ( Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}. |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
court | No | string | Surface name. Prefer this over surface. Example: court=Clay. |
surface | No | string | Filter by surface name. Alias of court. Example: surface=clay or court=Clay. |
year | No | integer | Filter to a specific year. Example: year=2026 |
tournament | No | string | Filter by tournament name. Example: tournament=EFG%20Swiss%20Open%20-%20Gstaad |
includeAll | No | boolean | Include Challenger/ITF and full history where supported. Example: includeAll=true |
page | No | integer | Page number on advanced routes, starting at 1. Do not send pageNo here. Example: page=1 |
limit | No | integer | Results per page on advanced routes (use page + limit, not pageNo + pageSize). Default varies by endpoint. Example: limit=10 |
level | No | integer | Tournament level id. Example: level=4. |
round | No | string | Round filter. Example: round=Final. |
week | No | integer | Tour week number when supported. Example: week=12. |
Response Properties
| Field | Type | Description |
|---|---|---|
name | string | The single player in the path โ this is not a two-player H2H. |
matchesCount | integer | Matches included in this breakdown. |
matchesWon1 / matchesWon2 | integer | Suffix 1 is this playerโs wins; suffix 2 is losses (or the complementary count). |
hard1, clay1, grass1, iHard1 | integer | This playerโs wins on each surface. Matching *2 fields are losses. |
ytdWon / ytdLost | integer | Year-to-date win/loss. |
aces / firstServePercentage / โฆ | number | Career serve, return, tiebreak, and pressure stats for this player. |
H2H Filter Options (Player-v-Player Mode)
GET
This example uses /tennis/v2/h2h/filters/Novak%20Djokovic/Carlos%20Alcaraz/atp/vsatp. 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
| Parameter | Required | Type | Description |
|---|---|---|---|
player1_id_or_name | Yes | string | First player: URL-encoded display name ( Carlos%20Alcaraz) or numeric ID. |
player2_id_or_name | Yes | string | Second player: URL-encoded display name ( Jannik%20Sinner) or numeric ID. |
atp|wta | Yes | string | 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. |
Last Match Played
GET
This example uses /tennis/v2/h2h/last-match-played/atp/Carlos%20Alcarazatp. 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
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | 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_name | Yes | string | URL-encoded display name ( Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}. |
Response Properties
| Field | Type | Description |
|---|---|---|
player1 / player2 | string | Display names. player1 is this path player. |
result | string | won or lost from this playerโs side. |
score | string | Set score string. |
round | integer | Round id (not the label). |
tournament | string | Event name. |
matchtime | string | Duration/time string. Can be a zero date such as 0000-00-00 04:28:00 when only duration is known. |
Player Rivalries
GET
This example uses /tennis/v2/h2h/rivalries/atp/Novak%20Djokovicatp. Use wtafor the women's dataset.A player's biggest rivalries. includeAll=true adds Challenger/ITF meetings.Path Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | 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_name | Yes | string | URL-encoded display name ( Carlos%20Alcaraz) or numeric ID (68074). Hyphenated slugs such as alcaraz-carlos return {"err":"Player not found"}. |
Query Parameter
| Parameter | Required | Type | Description |
|---|---|---|---|
includeAll | No | boolean | Include Challenger/ITF and full history where supported. Example: includeAll=true |
limit | No | integer | Results per page on advanced routes (use page + limit, not pageNo + pageSize). Default varies by endpoint. Example: limit=10 |
Interesting H2H: Notable Rivalries (Tour-Wide)
GET
This example uses /tennis/v2/interesting-h2h/atpatp. 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
| Parameter | Required | Type | Description |
|---|---|---|---|
atp|wta | Yes | string | 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
| Parameter | Required | Type | Description |
|---|---|---|---|
includeAll | No | boolean | Include Challenger/ITF and full history where supported. Example: includeAll=true |
top | No | number | Maximum number of top potential matchups to return. Example: top=10 |
page | No | integer | Page number on advanced routes, starting at 1. Do not send pageNo here. Example: page=1 |
limit | No | integer | Results per page on advanced routes (use page + limit, not pageNo + pageSize). Default varies by endpoint. Example: limit=10 |