API Reference

Rankings

Use the core lists for current official singles, doubles, and race rankings. Extra endpoints below cover dated snapshots, ranking history, and formatted names — not a second current ranking list.

âš ī¸
Dated rankings need date + group

/tennis/v2/ranking/atp without query params returns Needs date in query params!. Use ?date=14.09.2026&group=singles&page=1&limit=10. YYYY-MM-DD is rejected. There is no /ranking/atp/{date} path. Core pagination uses pageNo/pageSize; advanced uses page/limit.

Which ranking endpoint to use

Core ranking endpoints return the current published list — position, points, and movement for each player. Dated snapshot endpoints return a snapshot for a specific date, which you can use to chart how a player's position changed over time.

Endpoint familyWhat it containsUse case
Core /{atp|wta}/ranking/singlesCurrent ranking: position, points, weekly movementToday's world rankings
Dated snapshot /ranking/{atp|wta}Historical snapshot for date + groupRanking history, dated cut-offs

Endpoint Summary

GET/tennis/v2/{atp|wta}/ranking/singles
GET/tennis/v2/{atp|wta}/ranking/doubles
GET/tennis/v2/{atp|wta}/ranking/singles?race=true
GET/tennis/v2/ranking/{atp|wta}/top500-names
GET/tennis/v2/ranking/{atp|wta}/filters
GET/tennis/v2/ranking/{atp|wta}/player/{player_id}/history
GET/tennis/v2/ranking/{atp|wta}

Singles Rankings

GET/tennis/v2/{atp|wta}/ranking/singles
This example uses atp. Use wtafor the women's dataset.Returns the current ATP or WTA singles world rankings, ordered by position.

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
raceNostring
Set to true to return the Race to Turin / Race to Fort Worth standings instead of the standard 52-week rankings. Results are sorted by year-to-date race points (racePoints) descending. Supports filter=PlayerCountry and pagination. Example: race=true
filterNostring
Semicolon-separated filters in Key:value format. Available filters:
  • RankingDate:YYYY-MM-DD — snapshot on or before this date (standard rankings only, not with race=true)
  • PlayerCountry:USA,GBR — 3-letter country codes (works with standard and race)
Example: filter=RankingDate:2025-01-06;PlayerCountry:ESP,ITA
pageSizeNointeger
Results per page. Default: 10 (standard rankings) / 100 (race rankings).
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/ranking/singles' \
	--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.

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.
idintegerSnapshot row ID for this ranking entry.
datestringList date as ISO-8601.
positionintegerRank position on that list.
rankingPoints / pointintegerPoints used to order this list. Both keys are present.
player.idintegerNumeric player ID — use this on core /player/profile/{id}.
player.namestringDisplay name — URL-encode this on advanced profile routes.
data[].playerobjectPlayer object (id, name, countryAcr and the other player fields shown).
data[].player.countryAcrstringThree-letter country code (IOC style), e.g. ESP.
data[].player.countryobjectPlayer's country: { name, acronym }.
data[].player.country.namestringCountry name.
data[].player.country.acronymstringThree-letter country code.
pagenumberCurrent page number (1-based).
limitnumberItems per page.

Doubles Rankings

GET/tennis/v2/{atp|wta}/ranking/doubles
This example uses atp. Use wtafor the women's dataset.Returns the current ATP or WTA doubles world rankings, ordered by position. Same pagination envelope as singles.

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
filterNostring
Semicolon-separated filters. Available: PlayerCountry:USA,GBR (3-letter codes).
Example: filter=PlayerCountry:ESP,ITA
pageSizeNointeger
Results per page. When omitted, the endpoint's own default applies (100 on most list endpoints; some use 50 or 500), and the response's pageSize shows the value used. 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/ranking/doubles' \
	--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.

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.
positionintegerDoubles rank position.
ptsintegerDoubles ranking points.
wkintegerPlaces moved this week.
playerobjectid, name, countryAcr — use player.id on core player routes.
data[].player.idnumberPlayer ID.
data[].player.namestringDisplay name.
data[].player.birthdaystringDate of birth (ISO-8601), or null when unknown.
data[].player.countryAcrstringThree-letter country code (IOC style), e.g. ESP.
data[].player.countryobjectPlayer's country: { name, acronym }.
data[].player.country.namestringCountry name.
data[].player.country.acronymstringThree-letter country code.
pagenumberCurrent page number (1-based).
limitnumberItems per page.

Race Rankings (Year-to-Date)

GET/tennis/v2/{atp|wta}/ranking/singles?race=true
This example uses atp. Use wtafor the women's dataset.Returns the Race to Turin (ATP) or Race to Fort Worth (WTA) year-to-date standings, sorted by race points descending.

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
raceYesstring
Set to true to return the Race to Turin / Race to Fort Worth standings instead of the standard 52-week rankings. Results are sorted by year-to-date race points (racePoints) descending. Supports filter=PlayerCountry and pagination. Example: race=true

Add race=true to the singles ranking endpoint to switch from the standard 52-week rolling rankings to the year-to-date race standings. Only players with race points > 0 are returned.

Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/ranking/singles?race=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.

FieldTypeDescription
dataarrayResponse payload: the list or object documented in the rows below.
data[]objectOne item of `data`; its fields are listed below.
data[].racePositionnumberPosition in the Race (year-to-date) standings.
data[].racePointsnumberRace points accumulated this season.
data[].playerobjectPlayer object (id, name, countryAcr and the other player fields shown).
data[].player.idnumberPlayer ID.
data[].player.namestringDisplay name.
data[].player.birthdaystringDate of birth (ISO-8601), or null when unknown.
data[].player.countryAcrstringThree-letter country code (IOC style), e.g. ESP.
data[].player.countryobjectPlayer's country: { name, acronym }.
data[].player.country.namestringCountry name.
data[].player.country.acronymstringThree-letter country code.
pagenumberCurrent page number (1-based).
pageNonumberCurrent page number (1-based); same value as page.
pageSizenumberItems per page; same value as limit.
limitnumberItems per page.
hasNextPagebooleantrue when another page exists after this one.

Extra ranking endpoints

These are not a second current ranking list. Use them for a quick top 10, formatted names, dated snapshots, and ranking history.

Top 10 Rankings

GET/tennis/v2/ranking/{atp|wta}/top
This example uses atp. Use wtafor the women's dataset.Retrieve the latest Top 10 ATP or WTA rankings, including player names, rankings, ranking points, country codes, and the official ranking date.

Path Parameter

ParameterRequiredTypeDescription
atp|wtaYesstring
Dataset to query. atp = men's tennis across all supported levels, including Grand Slams, ATP Tour, Challengers and ITF. wta = women's tennis across all supported levels, including Grand Slams, WTA Tour and ITF. There is no separate itf value.
Example Request: JAVASCRIPT
const response = await fetch("https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/ranking/atp/top", {
   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

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

FieldTypeDescription
[].idstringRanking row ID (one player's entry in this ranking week; numeric string).
[].datestringRanking week date (ISO-8601 UTC).
[].pointnumberRanking points (this endpoint returns point only; same value as rankingPoints elsewhere).
[].positionnumberRanking position.
[].player.idintegerPlayer ID (same as on the core ranking feed and player profiles).
[].player.namestringPlayer display name.
[].player.countryAcrstringThree-letter country code.
[]objectOne item of the response; its fields are listed below.
[].playerobjectPlayer object (id, name, countryAcr and the other player fields shown).

Top 500 Formatted Names

GET/tennis/v2/ranking/{atp|wta}/top500-names
This example uses atp. Use wtafor the women's dataset.Returns ranking names with a display-safe formattedName. Use formattedName on name-based profile routes when the original name has punctuation.

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

Response Properties

FieldTypeDescription
(root)arrayA JSON array (not wrapped in data).
rankintegerCurrent ranking position.
originalNamestringDisplay name as returned on other routes.
formattedNamestringURL-encode this for /tennis/v2/profile/{name}.
[]objectOne item of the response; its fields are listed below.

Ranking Filter Options

GET/tennis/v2/ranking/{atp|wta}/filters
This example uses atp. Use wtafor the women's dataset.Retrieve all available filter options for ranking queries, including tours, ranking types, countries, ranking dates, and other supported filter values. Use these values to build valid requests for ranking endpoints.

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

Response Properties

FieldTypeDescription
countriesarrayCountry filter options: name and acronym.
surfacesarrayCourt-surface filter options: id and name.
datearrayAvailable ranking week dates (ISO-8601 UTC), newest first. Pass one as date=DD.MM.YYYY to the rankings-by-date route.
countries[].namestringCountry name.
countries[].acronymstringThree-letter country code.
surfaces[].idnumberCourt-surface ID.
surfaces[].namestringCourt-surface name.

Player Ranking History

GET/tennis/v2/ranking/{atp|wta}/player/{player_id}/history
This example uses atp. Use wtafor the women's dataset.Retrieve a player's ranking history over time, including ranking positions, ranking points, movement since the previous ranking, and historical ranking dates.

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_idYesstring
Player: numeric ID or display name. Example: 47275 or Jannik Sinner. IDs come from Rankings (player.id), Fixtures (player1Id) or the core player list. A name shared by several players returns 400 listing their IDs.

Query Parameter

ParameterRequiredTypeDescription
monthsNointeger
How many months of history to return (default 3, max 240). Ignored when startDate is set. Example: months=3.
startDateNostring
Start of the range, YYYY-MM-DD. Example: startDate=2020-01-01.
endDateNostring
End of the range, YYYY-MM-DD (default: latest). Other query parameters return 400. Example: endDate=2026-10-01.
Example Request: CURL
curl --request GET \
	--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/ranking/atp/player/47275/history' \
	--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.

FieldTypeDescription
playerobjectPlayer object (id, name, countryAcr and the other player fields shown).
player.namestringDisplay name.
player.countryAcrstringThree-letter country code (IOC style), e.g. ESP.
changenumberPositions gained (+) or lost (−) between the first and the last snapshot in history; null when there is no history.
historyarrayRanking snapshots in date order.
history[]objectOne item of `history`; its fields are listed below.
history[].datestringRanking date (ISO-8601).
history[].positionnumberRanking position on that date.
history[].ptsnumberRanking points on that date.

Rankings by Group and Date

GET/tennis/v2/ranking/{atp|wta}
This example uses atp. Use wtafor the women's dataset.Returns a ranking snapshot for a tour, group, and date. date (DD.MM.YYYY or YYYY-MM-DD) and group are required. Rankings are published weekly: any date returns the latest snapshot on or before it (each row's date shows which one). Response is a JSON array — not wrapped in data — so it has no totalPages or hasNextPage: ask for the next page with page=N+1 and stop when a page returns fewer rows than limit (an empty array past the end).

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
groupYesstring
Filter by group. Enum("singles", "doubles", "race", "surface", "prize"). Required on full rankings. Example: group=singles
dateYesstring
Ranking snapshot date, DD.MM.YYYY or YYYY-MM-DD (both accepted). Required together with group. Example: date=14.09.2026 or date=2026-09-14
countryAcrNostring
3-letter country code. Example: countryAcr=ESP.
pageNointeger
Page number, starting at 1. pageNo is accepted as an alias on every route. Example: page=1
limitNointeger
Results per page. pageSize is accepted as an alias on every route. 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/ranking/atp?date=14.09.2026&group=singles&page=1&limit=10' \
	--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.

FieldTypeDescription
(root)arrayA JSON array of ranking rows (not wrapped in data).
positionintegerRank position on the requested date and group.
ptsintegerPoints for that group (singles, doubles, etc.).
wk / wkPts / yrintegerWeekly movement, points change this week, and year-to-date points when provided.
datestringSnapshot date as ISO-8601.
playerobjectPlayer record: id, name, countryAcr, and ranking-related fields.
[]objectOne item of the response; its fields are listed below.
[].player.idnumberPlayer ID.
[].player.namestringDisplay name.
[].player.countryAcrstringThree-letter country code (IOC style), e.g. ESP.
â„šī¸
Tip

The /tennis/v2/ranking endpoint in Reference Data returns ranking tier definitions (Grand Slam, Masters 1000, etc.) — not player rankings.