API Reference

Tournaments & Draws

The Tournaments module provides tournament metadata, season history, past champions, results, and a full year calendar for men's and women's events.

ℹ️
Season IDs vs tournament names

Core tournament routes take a seasonid — one year-edition of an event (Wimbledon 2025 is a different ID from Wimbledon 2024). Discover IDs from the Tours Calendar (Men & Women) endpoint. Draw and seed routes take the exact tournament name from the calendar (URL-encoded) and a year, or the numeric season ID in place of the name: an ID returns exactly that edition (a name can match two editions in one year).

ℹ️
Past champions path

Core past champions is /tournament/past-champions/{season_id}. The original misspelled path /tournament/past-champtions/{season_id} keeps working.

ℹ️
Tournament levels (rankId vs tier)

rankId is the integer from GET /ranking. Grand Slam is 4. Challenger/ITF > $10K is 1. ATP 250 and ATP 500 both use rankId 2 (Main tour); the calendar tier string is the marketing label. Use filter=TourRank:4 for slams — not TourRank:1.

ℹ️
Year calendar primary home

The year tournament calendar is documented under Tours Calendar (Men & Women). This page covers draws, info, seasons, past champions, and results for a season ID.

Endpoint Summary

GET/tennis/v2/{atp|wta}/tournament/calendar/{year}
GET/tennis/v2/calendar/active
GET/tennis/v2/{atp|wta}/tournament/info/{season_id}
GET/tennis/v2/{atp|wta}/tournament/seasons/{season_id}
GET/tennis/v2/{atp|wta}/tournament/past-champions/{season_id}
GET/tennis/v2/{atp|wta}/tournament/results/{season_id}
GET/tennis/v2/tournament/{atp|wta}/{name}/{year}/draws

Tournament Details by Season ID

GET/tennis/v2/{atp|wta}/tournament/info/{season_id}
This example uses atp. Use wtafor the women's dataset.Returns details for one tournament season ID (this year’s edition). Prize-money breakdown is added with include=singlesPrize.

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.
season_idYesnumber
Tournament season ID (≥ 1). Non-numeric or zero IDs return 400 Bad Request. An ID that does not exist returns 200 with an empty result.

Query Parameter

ParameterRequiredTypeDescription
includeNostring
Comma-separated extras to load. court, rank, and country are always included by default. Additional available options:
  • rating — ranking points per round (winner, finalist, SF, QF, R16, R32, R64, qualifying)
  • singlesPrize — USD prize money per round (ATP only)
Example: include=rating,singlesPrize
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/tournament/info/21317?include=singlesPrize' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
idintegerSeason ID for this year’s edition. Use it on /tournament/info/{season_id}.
namestringTournament name. URL-encode this exact string on advanced draw/seed routes.
datestringStart date as ISO-8601.
tier / rankIdstringtier is the display label (e.g. ATP 250). rankId is the integer from GET /ranking — Grand Slam is 4, not 1.
court / courtIdobjectSurface object (id, name) and its ID.
roundobjectTournament level object (id, name), e.g. Grand Slam, Masters 1000.
countryobjectHost country: acronym (3-letter code) and name.
linkintegerTournament link ID shared across editions (the event, not the season).
singlesPrizeobjectUSD prize money per round when include=singlesPrize (ATP).
dataobjectResponse payload: the list or object documented in the rows below.
data.idnumberNumeric ID of this item (see the parent object: match, player, tournament, live event, …).
data.namestringDisplay name.
data.courtIdnumberNumeric court-surface ID (see GET /tennis/v2/court): 1 Hard, 2 Clay, 3 Indoor hard, 5 Grass, …
data.datestringDate/time as ISO-8601 UTC. On match rows this is the scheduled or played start; on tournaments, the start date.
data.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.tierstringTournament tier/series label, or null.
data.linknumberID of the previous edition of the same tournament (used to chain seasons), or null.
data.courtobjectCourt surface: { id, name }.
data.court.idnumberCourt-surface ID.
data.court.namestringCourt-surface name, e.g. Hard, Clay, Grass, I.hard.
data.roundobjectRound: { id, name }.
data.round.idnumberRound ID.
data.round.namestringRound label, e.g. "1/4", "Final".
data.countryobjectCountry: { name, acronym }.
data.country.acronymstringThree-letter country code.
data.country.namestringCountry name.
data.singlesPrizeobjectSingles prize money per finishing round, in the tournament's currency (numbers; null when unknown).
data.singlesPrize.winnernumberPrize (or points) for the champion.
data.singlesPrize.finalistnumberPrize (or points) for the runner-up.
data.singlesPrize.semiFinalistnumberPrize (or points) for losing in the semifinal.
data.singlesPrize.quarterFinalistnumberPrize (or points) for losing in the quarterfinal.
data.singlesPrize.fourthnumberPrize (or points) for losing in the fourth round.
data.singlesPrize.thirdnumberPrize (or points) for losing in the third round.
data.singlesPrize.secondnumberPrize (or points) for losing in the second round.
data.singlesPrize.firstnumberPrize (or points) for losing in the first round.
data.singlesPrize.qualifyingnumberPoints and prize for qualifying into the main draw.
data.singlesPrize.qualifyingSecondnumberPrize (or points) for losing in the second qualifying round.
data.singlesPrize.qualifyingFirstnullPrize (or points) for losing in the first qualifying round.
data.singlesPrize.preQualifyingnumberPrize (or points) for losing in pre-qualifying.

Tournament Seasons

GET/tennis/v2/{atp|wta}/tournament/seasons/{season_id}
This example uses atp. Use wtafor the women's dataset.Returns all yearly editions (seasons) of the same tournament event.

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.
season_idYesnumber
Tournament season ID (≥ 1). Non-numeric or zero IDs return 400 Bad Request. An ID that does not exist returns 200 with an empty result.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/tournament/seasons/21317' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
dataarrayResponse payload: the list or object documented in the rows below.
data[]objectOne item of `data`; its fields are listed below.
data[].idnumberNumeric ID of this item (see the parent object: match, player, tournament, live event, …).
data[].namestringDisplay name.
data[].datestringDate/time as ISO-8601 UTC. On match rows this is the scheduled or played start; on tournaments, the start date.

Past Champions by Season ID

GET/tennis/v2/{atp|wta}/tournament/past-champions/{season_id}
This example uses atp. Use wtafor the women's dataset.Returns a list of past winners (champions) for a recurring tournament.
ℹ️
Old spelling still works

The original misspelled path /tournament/past-champtions/{season_id} keeps working for existing integrations; both return the same response.

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.
season_idYesnumber
Tournament season ID (≥ 1). Non-numeric or zero IDs return 400 Bad Request. An ID that does not exist returns 200 with an empty result.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/tournament/past-champions/21317' \
	--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
dataobjectResponse payload: the list or object documented in the rows below.
data.singlesarraySingles main-draw result rows.
data.singles[]objectOne item of `data.singles`; its fields are listed below.
data.singles[].idstringNumeric ID of this item (see the parent object: match, player, tournament, live event, …).
data.singles[].matchIdstringMatch ID (same value as id on core match rows).
data.singles[].datestringDate/time as ISO-8601 UTC. On match rows this is the scheduled or played start; on tournaments, the start date.
data.singles[].roundIdnumberNumeric round ID (see GET /tennis/v2/round): e.g. 4 = First, 5 = Second, 9 = 1/4, 10 = 1/2, 12 = Final; 0–3 are qualifying rounds.
data.singles[].player1IdnumberNumeric ID of player 1.
data.singles[].player2IdnumberNumeric ID of player 2.
data.singles[].tournamentIdnumberNumeric tournament season ID (one edition of an event).
data.singles[].match_winnernumberPlayer ID of the match winner.
data.singles[].resultstringScore string, e.g. "6-3 6-4"; empty string until the match is played.
data.singles[].result_typestringHow the match ended: completed, retired, walkover or default.
data.singles[].best_ofnullBest-of sets (3 or 5) when known, otherwise null.
data.singles[].odd1nullOne stored pre-match price for player 1 (one bookmaker only), often null. Use oddsAvailable / links.odds for the full archived odds.
data.singles[].odd2nullPre-match/closing odds retained for player 2, or null when not available.
data.singles[].player1objectPlayer 1 (first-listed player). On completed archive rows (results, match history, H2H) player1 is the winner; live-service responses (point-by-point, statistics) keep the live feed's order, so map sides by name or ID there.
data.singles[].player1.idnumberPlayer 1 ID.
data.singles[].player1.namestringPlayer 1 name.
data.singles[].player1.countryAcrstringPlayer 1 country code.
data.singles[].player2objectPlayer 2 (second-listed player). On completed archive rows player2 is the loser; live-service responses keep the live feed's order.
data.singles[].player2.idnumberPlayer 2 ID.
data.singles[].player2.namestringPlayer 2 name.
data.singles[].player2.countryAcrstringPlayer 2 country code.
data.singles[].tournamentobjectTournament object (id, name, date, level, surface, country, …).
data.singles[].tournament.idnumberTournament season ID.
data.singles[].tournament.namestringTournament name.
data.singles[].tournament.courtIdnumberNumeric court-surface ID (see GET /tennis/v2/court): 1 Hard, 2 Clay, 3 Indoor hard, 5 Grass, …
data.singles[].tournament.datestringTournament start date (ISO-8601 UTC).
data.singles[].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.singles[].tournament.countryAcrstringThree-letter country code of the tournament.
data.singles[].tournament.prizestringPrize money as shown by the source, e.g. "$48.9M" (string), or null.
data.singles[].tournament.courtnullCourt surface of the tournament: { id, name } (some routes return only { name }), e.g. { "name": "Hard" }.
data.singles[].tournament.ranknullTournament level: { id, name }.
data.singles[].tournament.countrynullCountry of the tournament: three-letter code, or { name, acronym }.
data.doublesarrayDoubles main-draw result rows.
data.doubles[]objectOne item of `data.doubles`; its fields are listed below.
data.doubles[].idstringNumeric ID of this item (see the parent object: match, player, tournament, live event, …).
data.doubles[].matchIdstringMatch ID (same value as id on core match rows).
data.doubles[].datestringDate/time as ISO-8601 UTC. On match rows this is the scheduled or played start; on tournaments, the start date.
data.doubles[].roundIdnumberNumeric round ID (see GET /tennis/v2/round): e.g. 4 = First, 5 = Second, 9 = 1/4, 10 = 1/2, 12 = Final; 0–3 are qualifying rounds.
data.doubles[].player1IdnumberNumeric ID of player 1.
data.doubles[].player2IdnumberNumeric ID of player 2.
data.doubles[].tournamentIdnumberNumeric tournament season ID (one edition of an event).
data.doubles[].match_winnernumberPlayer ID of the match winner.
data.doubles[].resultstringScore string, e.g. "6-3 6-4"; empty string until the match is played.
data.doubles[].result_typestringHow the match ended: completed, retired, walkover or default.
data.doubles[].best_ofnullBest-of sets (3 or 5) when known, otherwise null.
data.doubles[].odd1stringOne stored pre-match price for player 1 (one bookmaker only), often null. Use oddsAvailable / links.odds for the full archived odds.
data.doubles[].odd2stringPre-match/closing odds retained for player 2, or null when not available.
data.doubles[].player1objectPlayer 1 (first-listed player). On completed archive rows (results, match history, H2H) player1 is the winner; live-service responses (point-by-point, statistics) keep the live feed's order, so map sides by name or ID there.
data.doubles[].player1.idnumberPlayer 1 ID.
data.doubles[].player1.namestringPlayer 1 name.
data.doubles[].player1.countryAcrstringPlayer 1 country code.
data.doubles[].player2objectPlayer 2 (second-listed player). On completed archive rows player2 is the loser; live-service responses keep the live feed's order.
data.doubles[].player2.idnumberPlayer 2 ID.
data.doubles[].player2.namestringPlayer 2 name.
data.doubles[].player2.countryAcrstringPlayer 2 country code.
data.doubles[].tournamentobjectTournament object (id, name, date, level, surface, country, …).
data.doubles[].tournament.idnumberTournament season ID.
data.doubles[].tournament.namestringTournament name.
data.doubles[].tournament.courtIdnumberNumeric court-surface ID (see GET /tennis/v2/court): 1 Hard, 2 Clay, 3 Indoor hard, 5 Grass, …
data.doubles[].tournament.datestringTournament start date (ISO-8601 UTC).
data.doubles[].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.doubles[].tournament.countryAcrstringThree-letter country code of the tournament.
data.doubles[].tournament.prizestringPrize money as shown by the source, e.g. "$48.9M" (string), or null.
data.doubles[].tournament.courtnullCourt surface of the tournament: { id, name } (some routes return only { name }), e.g. { "name": "Hard" }.
data.doubles[].tournament.ranknullTournament level: { id, name }.
data.doubles[].tournament.countrynullCountry of the tournament: three-letter code, or { name, acronym }.

Tournament Results

GET/tennis/v2/{atp|wta}/tournament/results/{season_id}
This example uses atp. Use wtafor the women's dataset.Returns the full match results draw for a tournament season.

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.
season_idYesnumber
Tournament season ID (≥ 1). Non-numeric or zero IDs return 400 Bad Request. An ID that does not exist returns 200 with an empty result.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/tournament/results/21317' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Results are from the historical Game archive — player1 is always the winner, player2 is the loser. The result field contains the score string (set scores, e.g. "6-3 6-2 6-4"). For ITF $10K and Challenger/ITF > $10K editions from 2005–2015, every match carries the tournament start date in date (no per-match date is available); order those by roundId.

Response Properties

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

FieldTypeDescription
dataobjectResponse payload: the list or object documented in the rows below.
data.singlesarraySingles main-draw result rows.
data.singles[]objectOne item of `data.singles`; its fields are listed below.
data.singles[].idstringNumeric ID of this item (see the parent object: match, player, tournament, live event, …).
data.singles[].matchIdstringMatch ID (same value as id on core match rows).
data.singles[].datestringDate/time as ISO-8601 UTC. On match rows this is the scheduled or played start; on tournaments, the start date.
data.singles[].roundIdnumberNumeric round ID (see GET /tennis/v2/round): e.g. 4 = First, 5 = Second, 9 = 1/4, 10 = 1/2, 12 = Final; 0–3 are qualifying rounds.
data.singles[].player1IdnumberNumeric ID of player 1.
data.singles[].player2IdnumberNumeric ID of player 2.
data.singles[].tournamentIdnumberNumeric tournament season ID (one edition of an event).
data.singles[].match_winnernumberPlayer ID of the match winner.
data.singles[].resultstringScore string, e.g. "6-3 6-4"; empty string until the match is played.
data.singles[].result_typestringHow the match ended: completed, retired, walkover or default.
data.singles[].best_ofnullBest-of sets (3 or 5) when known, otherwise null.
data.singles[].odd1nullOne stored pre-match price for player 1 (one bookmaker only), often null. Use oddsAvailable / links.odds for the full archived odds.
data.singles[].odd2nullPre-match/closing odds retained for player 2, or null when not available.
data.singles[].player1objectPlayer 1 (first-listed player). On completed archive rows (results, match history, H2H) player1 is the winner; live-service responses (point-by-point, statistics) keep the live feed's order, so map sides by name or ID there.
data.singles[].player1.idnumberPlayer 1 ID.
data.singles[].player1.namestringPlayer 1 name.
data.singles[].player1.countryAcrstringPlayer 1 country code.
data.singles[].player2objectPlayer 2 (second-listed player). On completed archive rows player2 is the loser; live-service responses keep the live feed's order.
data.singles[].player2.idnumberPlayer 2 ID.
data.singles[].player2.namestringPlayer 2 name.
data.singles[].player2.countryAcrstringPlayer 2 country code.
data.singles[].tournamentobjectTournament object (id, name, date, level, surface, country, …).
data.singles[].tournament.idnumberTournament season ID.
data.singles[].tournament.namestringTournament name.
data.singles[].tournament.courtIdnumberNumeric court-surface ID (see GET /tennis/v2/court): 1 Hard, 2 Clay, 3 Indoor hard, 5 Grass, …
data.singles[].tournament.datestringTournament start date (ISO-8601 UTC).
data.singles[].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.singles[].tournament.countryAcrstringThree-letter country code of the tournament.
data.singles[].tournament.courtnullCourt surface of the tournament: { id, name } (some routes return only { name }), e.g. { "name": "Hard" }.
data.singles[].tournament.ranknullTournament level: { id, name }.
data.singles[].tournament.countrynullCountry of the tournament: three-letter code, or { name, acronym }.
data.doublesarrayDoubles main-draw result rows.
data.doubles[]objectOne item of `data.doubles`; its fields are listed below.
data.doubles[].idstringNumeric ID of this item (see the parent object: match, player, tournament, live event, …).
data.doubles[].matchIdstringMatch ID (same value as id on core match rows).
data.doubles[].datestringDate/time as ISO-8601 UTC. On match rows this is the scheduled or played start; on tournaments, the start date.
data.doubles[].roundIdnumberNumeric round ID (see GET /tennis/v2/round): e.g. 4 = First, 5 = Second, 9 = 1/4, 10 = 1/2, 12 = Final; 0–3 are qualifying rounds.
data.doubles[].player1IdnumberNumeric ID of player 1.
data.doubles[].player2IdnumberNumeric ID of player 2.
data.doubles[].tournamentIdnumberNumeric tournament season ID (one edition of an event).
data.doubles[].match_winnernumberPlayer ID of the match winner.
data.doubles[].resultstringScore string, e.g. "6-3 6-4"; empty string until the match is played.
data.doubles[].result_typestringHow the match ended: completed, retired, walkover or default.
data.doubles[].best_ofnullBest-of sets (3 or 5) when known, otherwise null.
data.doubles[].odd1stringOne stored pre-match price for player 1 (one bookmaker only), often null. Use oddsAvailable / links.odds for the full archived odds.
data.doubles[].odd2stringPre-match/closing odds retained for player 2, or null when not available.
data.doubles[].player1objectPlayer 1 (first-listed player). On completed archive rows (results, match history, H2H) player1 is the winner; live-service responses (point-by-point, statistics) keep the live feed's order, so map sides by name or ID there.
data.doubles[].player1.idnumberPlayer 1 ID.
data.doubles[].player1.namestringPlayer 1 name.
data.doubles[].player1.countryAcrstringPlayer 1 country code.
data.doubles[].player2objectPlayer 2 (second-listed player). On completed archive rows player2 is the loser; live-service responses keep the live feed's order.
data.doubles[].player2.idnumberPlayer 2 ID.
data.doubles[].player2.namestringPlayer 2 name.
data.doubles[].player2.countryAcrstringPlayer 2 country code.
data.doubles[].tournamentobjectTournament object (id, name, date, level, surface, country, …).
data.doubles[].tournament.idnumberTournament season ID.
data.doubles[].tournament.namestringTournament name.
data.doubles[].tournament.courtIdnumberNumeric court-surface ID (see GET /tennis/v2/court): 1 Hard, 2 Clay, 3 Indoor hard, 5 Grass, …
data.doubles[].tournament.datestringTournament start date (ISO-8601 UTC).
data.doubles[].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.doubles[].tournament.countryAcrstringThree-letter country code of the tournament.
data.doubles[].tournament.courtnullCourt surface of the tournament: { id, name } (some routes return only { name }), e.g. { "name": "Hard" }.
data.doubles[].tournament.ranknullTournament level: { id, name }.
data.doubles[].tournament.countrynullCountry of the tournament: three-letter code, or { name, acronym }.
data.qualifyingarraySingles qualifying result rows.
data.qualifying[]objectOne item of `data.qualifying`; its fields are listed below.
data.qualifying[].idstringNumeric ID of this item (see the parent object: match, player, tournament, live event, …).
data.qualifying[].matchIdstringMatch ID (same value as id on core match rows).
data.qualifying[].datestringDate/time as ISO-8601 UTC. On match rows this is the scheduled or played start; on tournaments, the start date.
data.qualifying[].roundIdnumberNumeric round ID (see GET /tennis/v2/round): e.g. 4 = First, 5 = Second, 9 = 1/4, 10 = 1/2, 12 = Final; 0–3 are qualifying rounds.
data.qualifying[].player1IdnumberNumeric ID of player 1.
data.qualifying[].player2IdnumberNumeric ID of player 2.
data.qualifying[].tournamentIdnumberNumeric tournament season ID (one edition of an event).
data.qualifying[].match_winnernumberPlayer ID of the match winner.
data.qualifying[].resultstringScore string, e.g. "6-3 6-4"; empty string until the match is played.
data.qualifying[].result_typestringHow the match ended: completed, retired, walkover or default.
data.qualifying[].best_ofnullBest-of sets (3 or 5) when known, otherwise null.
data.qualifying[].odd1stringOne stored pre-match price for player 1 (one bookmaker only), often null. Use oddsAvailable / links.odds for the full archived odds.
data.qualifying[].odd2stringPre-match/closing odds retained for player 2, or null when not available.
data.qualifying[].player1objectPlayer 1 (first-listed player). On completed archive rows (results, match history, H2H) player1 is the winner; live-service responses (point-by-point, statistics) keep the live feed's order, so map sides by name or ID there.
data.qualifying[].player1.idnumberPlayer 1 ID.
data.qualifying[].player1.namestringPlayer 1 name.
data.qualifying[].player1.countryAcrstringPlayer 1 country code.
data.qualifying[].player2objectPlayer 2 (second-listed player). On completed archive rows player2 is the loser; live-service responses keep the live feed's order.
data.qualifying[].player2.idnumberPlayer 2 ID.
data.qualifying[].player2.namestringPlayer 2 name.
data.qualifying[].player2.countryAcrstringPlayer 2 country code.
data.qualifying[].tournamentobjectTournament object (id, name, date, level, surface, country, …).
data.qualifying[].tournament.idnumberTournament season ID.
data.qualifying[].tournament.namestringTournament name.
data.qualifying[].tournament.courtIdnumberNumeric court-surface ID (see GET /tennis/v2/court): 1 Hard, 2 Clay, 3 Indoor hard, 5 Grass, …
data.qualifying[].tournament.datestringTournament start date (ISO-8601 UTC).
data.qualifying[].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.qualifying[].tournament.countryAcrstringThree-letter country code of the tournament.
data.qualifying[].tournament.courtnullCourt surface of the tournament: { id, name } (some routes return only { name }), e.g. { "name": "Hard" }.
data.qualifying[].tournament.ranknullTournament level: { id, name }.
data.qualifying[].tournament.countrynullCountry of the tournament: three-letter code, or { name, acronym }.
data.doublesQualifyingarrayDoubles qualifying result rows.

Extra tournament endpoints

These are not replacements for core calendar, info, seasons, past champions, or results.

Tournament Available Years

GET/tennis/v2/tournament/{atp|wta}/{tournament}
This example uses atp. Use wtafor the women's dataset.Returns all available years for which historical data exists for a specific 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.
tournamentYesstring
Tournament name ("Monte-Carlo Rolex Masters - Monte-Carlo")
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/tournament/atp/BNP%20Paribas%20Open%20-%20Indian%20Wells' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
[]objectOne item of the response; its fields are listed below.
[].yearnumberSeason year.
[].tournamentNamestringTournament display name.

Tournament Draw

GET/tennis/v2/tournament/{atp|wta}/{tournament}/{year}/draws
This example uses atp. Use wtafor the women's dataset.Returns the complete tournament draw for the selected event, including all rounds, matchups, player information, seeds, scores, and match status. This endpoint can be used to display the tournament bracket from the opening round through the final. Groups: singles, doubles, qualifying (singles) and doublesQualifying. Each match row has matchId and links.match (the /matches detail route); every row has its draw position (for seasons before 2023, when the feed has none, positions are rebuilt from the bracket: top seed at the top), and every first-round bye row has isBye: true: a seed who skips round 1 appears as a built row (player2 null, bye: true, no matchId), and a feed bye (result bye) keeps its matchId with bye: true on the empty side. Add fullBracket=true to get every draw (singles, doubles, qualifying) as a full bracket: every round has a row for every position; slots the feed has no row for yet come back with matchId null and fromBracket: true, a finished earlier match sending its winner. Undecided players are named TBA (tbd: true, awaitingParticipants: true on the row), the empty side of a bye is BYE (bye: true), finished rows carry winnerId and players stay in the provider order. For ITF $10K and Challenger/ITF > $10K editions from 2005–2015, match dates in the draw are the tournament start date (no per-match date is available). The tournament can be a name or a numeric edition id; an id returns exactly that edition (a name can match two editions in one year).

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.
tournamentYesstring
Tournament name ("Monte-Carlo Rolex Masters - Monte-Carlo")
yearYesinteger
Year Value(2026)

Query Parameter

ParameterRequiredTypeDescription
includeAllNoboolean
Include Challenger/ITF and full history where supported. Example: includeAll=true
fullBracketNoboolean
Default false. true returns every draw (singles, doubles, qualifying) as a full bracket: every round has a row for every position (round of 32: 16, 8, 4, 2, 1; qualifying: each round half the one before), undecided players are TBA (tbd: true), the empty side of a bye is BYE (bye: true) and finished rows carry winnerId. Built rows have fromBracket: true and matchId: null. Without it the response is unchanged.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/tournament/atp/BNP%20Paribas%20Open%20-%20Indian%20Wells/2026/draws?includeAll=true' \
	--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
singlesarraySingles main-draw rows.
singles[]objectOne item of `singles`; its fields are listed below.
singles[].roundIdnumberNumeric round ID (see GET /tennis/v2/round): e.g. 4 = First, 5 = Second, 9 = 1/4, 10 = 1/2, 12 = Final; 0–3 are qualifying rounds.
singles[].resultstringScore string, e.g. "6-3 6-4"; empty string until the match is played.
singles[].datestringDate/time as ISO-8601 UTC. On match rows this is the scheduled or played start; on tournaments, the start date.
singles[].seed1stringSeed of player 1, or null.
singles[].seed2stringSeed of player 2, or null.
singles[].odd1stringOne stored pre-match price for player 1 (one bookmaker only), often null. Use oddsAvailable / links.odds for the full archived odds.
singles[].odd2stringPre-match/closing odds retained for player 2, or null when not available.
singles[].player1IdnumberNumeric ID of player 1.
singles[].player2IdnumberNumeric ID of player 2.
singles[].tournamentIdnumberNumeric tournament season ID (one edition of an event).
singles[].drawnumberDraw position (slot) of the match within its round.
singles[].winner_entrynullEntry status of the winner (e.g. Q = qualifier, WC = wild card, LL = lucky loser), or null.
singles[].winner_handnullPlaying hand of the winner (R/L), or null.
singles[].winner_htnullHeight of the winner in cm, or null.
singles[].winner_iocnullCountry code of the winner, or null.
singles[].winner_agenullAge of the winner at the match date, or null.
singles[].loser_entrynullEntry status of the loser (Q, WC, LL, …), or null.
singles[].loser_handnullPlaying hand of the loser (R/L), or null.
singles[].loser_htnullHeight of the loser in cm, or null.
singles[].loser_iocnullCountry code of the loser, or null.
singles[].loser_agenullAge of the loser at the match date, or null.
singles[].best_ofnullBest-of sets (3 or 5) when known, otherwise null.
singles[].poll_votestringFan poll vote count for the match (string).
singles[].player1objectPlayer 1 (first-listed player). On completed archive rows (results, match history, H2H) player1 is the winner; live-service responses (point-by-point, statistics) keep the live feed's order, so map sides by name or ID there.
singles[].player1.idnumberPlayer 1 ID.
singles[].player1.namestringPlayer 1 name.
singles[].player1.countryAcrstringPlayer 1 country code.
singles[].player1.seedstringTournament seed as a string, or null when unseeded.
singles[].player1.oddnumberPre-match match-winner odds for this player (decimal), as a string; null when not available.
singles[].player1.imagestringPlayer photo path on this API (append to the base URL).
singles[].player1.image_p_namestringPlayer photo path keyed by player name (alternative to image).
singles[].player1.statsobjectPer-match statistics of player 1 in this draw match (null when not recorded).
singles[].player1.stats.firstServenumberFirst serves landed in. Counted over the matches in this selection.
singles[].player1.stats.firstServeOfnumberFirst-serve attempts (total service points). Counted over the matches in this selection.
singles[].player1.stats.acesnumberAces served (count).
singles[].player1.stats.doubleFaultsnumberDouble faults. Counted over the matches in this selection.
singles[].player1.stats.unforcedErrorsnullUnforced errors (where tracked). Counted over the matches in this selection.
singles[].player1.stats.winningOnFirstServenumberPoints won on first serve. Counted over the matches in this selection.
singles[].player1.stats.winningOnFirstServeOfnumberPoints played on first serve (first serves in). Counted over the matches in this selection.
singles[].player1.stats.winningOnSecondServenumberPoints won on second serve. Counted over the matches in this selection.
singles[].player1.stats.winningOnSecondServeOfnumberPoints played on second serve. Counted over the matches in this selection.
singles[].player1.stats.winnersnullWinners (where tracked). Counted over the matches in this selection.
singles[].player1.stats.breakPointsConvertednumberBreak points converted as returner. Counted over the matches in this selection.
singles[].player1.stats.breakPointsConvertedOfnumberBreak-point chances as returner. Counted over the matches in this selection.
singles[].player1.stats.netApproachesnullNet approaches won (where tracked). Counted over the matches in this selection.
singles[].player1.stats.netApproachesOfnullNet approaches made (where tracked). Counted over the matches in this selection.
singles[].player1.stats.totalPointsWonnumberTotal points won. Counted over the matches in this selection.
singles[].player1.stats.fastestServenullFastest serve in km/h (where tracked).
singles[].player1.stats.averageFirstServeSpeednullAverage first-serve speed in km/h (where tracked).
singles[].player1.stats.averageSecondServeSpeednullAverage second-serve speed in km/h (where tracked).
singles[].player2objectPlayer 2 (second-listed player). On completed archive rows player2 is the loser; live-service responses keep the live feed's order.
singles[].player2.idnumberPlayer 2 ID.
singles[].player2.namestringPlayer 2 name.
singles[].player2.countryAcrstringPlayer 2 country code.
singles[].player2.seedstringTournament seed as a string, or null when unseeded.
singles[].player2.oddstringPre-match match-winner odds for this player (decimal), as a string; null when not available.
singles[].player2.imagestringPlayer photo path on this API (append to the base URL).
singles[].player2.image_p_namestringPlayer photo path keyed by player name (alternative to image).
singles[].player2.statsobjectPer-match statistics of player 2 in this draw match (null when not recorded).
singles[].player2.stats.firstServenumberFirst serves landed in. Counted over the matches in this selection.
singles[].player2.stats.firstServeOfnumberFirst-serve attempts (total service points). Counted over the matches in this selection.
singles[].player2.stats.acesnumberAces served (count).
singles[].player2.stats.doubleFaultsnumberDouble faults. Counted over the matches in this selection.
singles[].player2.stats.unforcedErrorsnullUnforced errors (where tracked). Counted over the matches in this selection.
singles[].player2.stats.winningOnFirstServenumberPoints won on first serve. Counted over the matches in this selection.
singles[].player2.stats.winningOnFirstServeOfnumberPoints played on first serve (first serves in). Counted over the matches in this selection.
singles[].player2.stats.winningOnSecondServenumberPoints won on second serve. Counted over the matches in this selection.
singles[].player2.stats.winningOnSecondServeOfnumberPoints played on second serve. Counted over the matches in this selection.
singles[].player2.stats.winnersnullWinners (where tracked). Counted over the matches in this selection.
singles[].player2.stats.breakPointsConvertednumberBreak points converted as returner. Counted over the matches in this selection.
singles[].player2.stats.breakPointsConvertedOfnumberBreak-point chances as returner. Counted over the matches in this selection.
singles[].player2.stats.netApproachesnullNet approaches won (where tracked). Counted over the matches in this selection.
singles[].player2.stats.netApproachesOfnullNet approaches made (where tracked). Counted over the matches in this selection.
singles[].player2.stats.totalPointsWonnumberTotal points won. Counted over the matches in this selection.
singles[].player2.stats.fastestServenullFastest serve in km/h (where tracked).
singles[].player2.stats.averageFirstServeSpeednullAverage first-serve speed in km/h (where tracked).
singles[].player2.stats.averageSecondServeSpeednullAverage second-serve speed in km/h (where tracked).
singles[].tournamentobjectTournament object (id, name, date, level, surface, country, …).
singles[].tournament.idnumberTournament season ID.
singles[].tournament.namestringTournament name.
singles[].h2hstringCareer head-to-head as "player1Wins-player2Wins", e.g. "4-1".
singles[].matchIdnumberMatch ID (same value as id on core match rows).
singles[].linksobjectReady-made URLs for this match's detail routes.
singles[].links.matchstringURL of the match detail route (/tennis/v2/matches/{matchId}); source=game marks a completed match.
qualifyingarrayPoints and prize for qualifying into the main draw.
qualifying[]objectOne item of `qualifying`; its fields are listed below.
qualifying[].roundIdnumberNumeric round ID (see GET /tennis/v2/round): e.g. 4 = First, 5 = Second, 9 = 1/4, 10 = 1/2, 12 = Final; 0–3 are qualifying rounds.
qualifying[].resultstringScore string, e.g. "6-3 6-4"; empty string until the match is played.
qualifying[].datestringDate/time as ISO-8601 UTC. On match rows this is the scheduled or played start; on tournaments, the start date.
qualifying[].seed1stringSeed of player 1, or null.
qualifying[].seed2stringSeed of player 2, or null.
qualifying[].odd1nullOne stored pre-match price for player 1 (one bookmaker only), often null. Use oddsAvailable / links.odds for the full archived odds.
qualifying[].odd2nullPre-match/closing odds retained for player 2, or null when not available.
qualifying[].player1IdnumberNumeric ID of player 1.
qualifying[].player2IdnumberNumeric ID of player 2.
qualifying[].tournamentIdnumberNumeric tournament season ID (one edition of an event).
qualifying[].drawnumberDraw position (slot) of the match within its round.
qualifying[].winner_entrynullEntry status of the winner (e.g. Q = qualifier, WC = wild card, LL = lucky loser), or null.
qualifying[].winner_handnullPlaying hand of the winner (R/L), or null.
qualifying[].winner_htnullHeight of the winner in cm, or null.
qualifying[].winner_iocnullCountry code of the winner, or null.
qualifying[].winner_agenullAge of the winner at the match date, or null.
qualifying[].loser_entrynullEntry status of the loser (Q, WC, LL, …), or null.
qualifying[].loser_handnullPlaying hand of the loser (R/L), or null.
qualifying[].loser_htnullHeight of the loser in cm, or null.
qualifying[].loser_iocnullCountry code of the loser, or null.
qualifying[].loser_agenullAge of the loser at the match date, or null.
qualifying[].best_ofnullBest-of sets (3 or 5) when known, otherwise null.
qualifying[].poll_votestringFan poll vote count for the match (string).
qualifying[].player1objectPlayer 1 (first-listed player). On completed archive rows (results, match history, H2H) player1 is the winner; live-service responses (point-by-point, statistics) keep the live feed's order, so map sides by name or ID there.
qualifying[].player1.idnumberPlayer 1 ID.
qualifying[].player1.namestringPlayer 1 name.
qualifying[].player1.countryAcrstringPlayer 1 country code.
qualifying[].player1.seedstringTournament seed as a string, or null when unseeded.
qualifying[].player1.oddnullPre-match match-winner odds for this player (decimal), as a string; null when not available.
qualifying[].player1.imagestringPlayer photo path on this API (append to the base URL).
qualifying[].player1.image_p_namestringPlayer photo path keyed by player name (alternative to image).
qualifying[].player1.statsobjectPer-match statistics of player 1 in this draw match (null when not recorded).
qualifying[].player1.stats.firstServenumberFirst serves landed in. Counted over the matches in this selection.
qualifying[].player1.stats.firstServeOfnumberFirst-serve attempts (total service points). Counted over the matches in this selection.
qualifying[].player1.stats.acesnumberAces served (count).
qualifying[].player1.stats.doubleFaultsnumberDouble faults. Counted over the matches in this selection.
qualifying[].player1.stats.unforcedErrorsnullUnforced errors (where tracked). Counted over the matches in this selection.
qualifying[].player1.stats.winningOnFirstServenumberPoints won on first serve. Counted over the matches in this selection.
qualifying[].player1.stats.winningOnFirstServeOfnumberPoints played on first serve (first serves in). Counted over the matches in this selection.
qualifying[].player1.stats.winningOnSecondServenumberPoints won on second serve. Counted over the matches in this selection.
qualifying[].player1.stats.winningOnSecondServeOfnumberPoints played on second serve. Counted over the matches in this selection.
qualifying[].player1.stats.winnersnullWinners (where tracked). Counted over the matches in this selection.
qualifying[].player1.stats.breakPointsConvertednumberBreak points converted as returner. Counted over the matches in this selection.
qualifying[].player1.stats.breakPointsConvertedOfnumberBreak-point chances as returner. Counted over the matches in this selection.
qualifying[].player1.stats.netApproachesnullNet approaches won (where tracked). Counted over the matches in this selection.
qualifying[].player1.stats.netApproachesOfnullNet approaches made (where tracked). Counted over the matches in this selection.
qualifying[].player1.stats.totalPointsWonnumberTotal points won. Counted over the matches in this selection.
qualifying[].player1.stats.fastestServenullFastest serve in km/h (where tracked).
qualifying[].player1.stats.averageFirstServeSpeednullAverage first-serve speed in km/h (where tracked).
qualifying[].player1.stats.averageSecondServeSpeednullAverage second-serve speed in km/h (where tracked).
qualifying[].player2objectPlayer 2 (second-listed player). On completed archive rows player2 is the loser; live-service responses keep the live feed's order.
qualifying[].player2.idnumberPlayer 2 ID.
qualifying[].player2.namestringPlayer 2 name.
qualifying[].player2.countryAcrstringPlayer 2 country code.
qualifying[].player2.seedstringTournament seed as a string, or null when unseeded.
qualifying[].player2.oddnullPre-match match-winner odds for this player (decimal), as a string; null when not available.
qualifying[].player2.imagestringPlayer photo path on this API (append to the base URL).
qualifying[].player2.image_p_namestringPlayer photo path keyed by player name (alternative to image).
qualifying[].player2.statsobjectPer-match statistics of player 2 in this draw match (null when not recorded).
qualifying[].player2.stats.firstServenumberFirst serves landed in. Counted over the matches in this selection.
qualifying[].player2.stats.firstServeOfnumberFirst-serve attempts (total service points). Counted over the matches in this selection.
qualifying[].player2.stats.acesnumberAces served (count).
qualifying[].player2.stats.doubleFaultsnumberDouble faults. Counted over the matches in this selection.
qualifying[].player2.stats.unforcedErrorsnullUnforced errors (where tracked). Counted over the matches in this selection.
qualifying[].player2.stats.winningOnFirstServenumberPoints won on first serve. Counted over the matches in this selection.
qualifying[].player2.stats.winningOnFirstServeOfnumberPoints played on first serve (first serves in). Counted over the matches in this selection.
qualifying[].player2.stats.winningOnSecondServenumberPoints won on second serve. Counted over the matches in this selection.
qualifying[].player2.stats.winningOnSecondServeOfnumberPoints played on second serve. Counted over the matches in this selection.
qualifying[].player2.stats.winnersnullWinners (where tracked). Counted over the matches in this selection.
qualifying[].player2.stats.breakPointsConvertednumberBreak points converted as returner. Counted over the matches in this selection.
qualifying[].player2.stats.breakPointsConvertedOfnumberBreak-point chances as returner. Counted over the matches in this selection.
qualifying[].player2.stats.netApproachesnullNet approaches won (where tracked). Counted over the matches in this selection.

Tournament Seeds by Name and Year

GET/tennis/v2/tournament/{atp|wta}/{tournament}/{year}/seeds
This example uses atp. Use wtafor the women's dataset.Returns the list of seeded players for a specific tournament. Each record includes the player's name, player ID and official seed number in the main draw.

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.
tournamentYesstring
Tournament name ("Monte-Carlo Rolex Masters - Monte-Carlo")
yearYesinteger
Year Value(2026)
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/tournament/atp/China%20Open%20-%20Beijing/2026/seeds?includeAll=true' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
[].playerstringPlayer name.
[].playerIdintegerPlayer ID (the same ID as in rankings, profiles and match rows).
[].seedintegerSeed number in the main draw.
[]objectOne item of the response; its fields are listed below.

Tournament Most Victories

GET/tennis/v2/tournament/{atp|wta}/{tournament}/most-victories
This example uses atp. Use wtafor the women's dataset.Returns the list of players with the most wins at a given tournament across all years

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.
tournamentYesstring
Tournament name ("Monte-Carlo Rolex Masters - Monte-Carlo")
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/tournament/atp/BNP%20Paribas%20Open%20-%20Indian%20Wells/most-victories' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
[].idnumberPlayer ID.
[].namestringPlayer name.
[].countryAcrstringThree-letter country code.
[].winsnumberTitles won at this tournament (finals won across all editions), not match wins.
[].image / image_p_namestringPlayer photo paths (by ID / by name).
[]objectOne item of the response; its fields are listed below.

Current Tournament Seeds

ℹ️
Time-bound example

Returns seeds only for a tournament being played this week; otherwise the list is empty ([]). The example (Almaty Open, 19–25 October 2026) is empty once that week has passed. For a current tournament, call Active Tournaments (/tennis/v2/calendar/active) and take its name. For a past edition use Tournament Seeds by Name and Year.

GET/tennis/v2/tournament/{atp|wta}/{tournament}/seeds
This example uses atp. Use wtafor the women's dataset.Returns the current seedings for a tournament (omit year for current edition)

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.
tournamentYesstring
Tournament name ("Monte-Carlo Rolex Masters - Monte-Carlo")
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/tournament/atp/Almaty%20Open%20-%20Almaty/seeds' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
[].playerstringPlayer name.
[].playerIdintegerPlayer ID (the same ID as in rankings, profiles and match rows).
[].seedintegerSeed number in the main draw.
[]objectOne item of the response; its fields are listed below.

Tournament Ranking Points

GET/tennis/v2/tournament/{atp|wta}/{tournament}/{year}/points
This example uses atp. Use wtafor the women's dataset.Returns the ranking points awarded per round in a given tournament and year.

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.
tournamentYesstring
Tournament name ("Monte-Carlo Rolex Masters - Monte-Carlo")
yearYesinteger
Year Value(2026)
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/tournament/atp/BNP%20Paribas%20Open%20-%20Indian%20Wells/2026/points' \
	--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com' \
	--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY'

Response Properties

FieldTypeDescription
winner / finalist / semiFinalist / quarterFinalist / fourth / third / second / firstobjectpoints and prize for that round.
qualifying / qualifyingSecond / qualifyingFirst / preQualifyingobjectQualifying-round points and prize.
winner.pointsnumberRanking points awarded for the champion.
winner.prizenumberPrize money awarded for the champion, in the tournament currency (null when unknown).
finalist.pointsnumberRanking points awarded for the runner-up.
finalist.prizenumberPrize money awarded for the runner-up, in the tournament currency (null when unknown).
semiFinalist.pointsnumberRanking points awarded for losing in the semifinal.
semiFinalist.prizenumberPrize money awarded for losing in the semifinal, in the tournament currency (null when unknown).
quarterFinalist.pointsnumberRanking points awarded for losing in the quarterfinal.
quarterFinalist.prizenumberPrize money awarded for losing in the quarterfinal, in the tournament currency (null when unknown).
fourth.pointsnumberRanking points awarded for losing in the fourth round.
fourth.prizenumberPrize money awarded for losing in the fourth round, in the tournament currency (null when unknown).
third.pointsnumberRanking points awarded for losing in the third round.
third.prizenumberPrize money awarded for losing in the third round, in the tournament currency (null when unknown).
second.pointsnumberRanking points awarded for losing in the second round.
second.prizenumberPrize money awarded for losing in the second round, in the tournament currency (null when unknown).
first.pointsnumberRanking points awarded for losing in the first round.
first.prizenumberPrize money awarded for losing in the first round, in the tournament currency (null when unknown).
qualifying.pointsnumberRanking points awarded for qualifying into the main draw.
qualifying.prizenumberPrize money awarded for qualifying into the main draw, in the tournament currency (null when unknown).
qualifyingSecond.pointsnumberRanking points awarded for losing in the second qualifying round.
qualifyingSecond.prizenumberPrize money awarded for losing in the second qualifying round, in the tournament currency (null when unknown).
qualifyingFirst.pointsnullRanking points awarded for losing in the first qualifying round.
qualifyingFirst.prizenullPrize money awarded for losing in the first qualifying round, in the tournament currency (null when unknown).
preQualifying.pointsnullRanking points awarded for losing in pre-qualifying.
preQualifying.prizenumberPrize money awarded for losing in pre-qualifying, in the tournament currency (null when unknown).