API Reference
Rankings
The Rankings module provides live world rankings for both singles and doubles categories across ATP and WTA tours. Rankings data is updated regularly to reflect the latest tournament results.
Endpoint Summary
| Method | Path | Description |
|---|---|---|
| GET | /tennis/v2/{type}/ranking/singles | Singles world rankings |
| GET | /tennis/v2/{type}/ranking/doubles | Doubles world rankings |
How Rankings Work
Rankings are not a separate table. They are served directly from the Player entity, which stores the current ranking snapshot on each player row. The database is updated whenever ATP/WTA publish their official weekly ranking lists.
A separate Rating table stores historical ranking snapshots β one row per player per date β enabling you to reconstruct ranking history or build charts showing how a player's position changed over time.
| Source | What it contains | Use case |
|---|---|---|
| Player entity | Current ranking: position, points, progress, surface breakdown | Today's live rankings list |
| Rating entity | Historical snapshot: date, position, point per player | Ranking history charts, "peak ranking" analysis |
Singles Rankings
Path Parameters
| Parameter | Type | Description |
|---|---|---|
type Required | string | atp or wta |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
race Optional |
string | 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 |
filter Optional |
string | Semicolon-separated filters in Key:value format. Available filters:
filter=RankingDate:2025-01-06;PlayerCountry:ESP,ITA |
pageSize Optional |
integer | Results per page. Default: 10 (standard rankings) / 100 (race rankings). |
pageNo Optional |
integer | Page number, 1-indexed. Default: 1. |
Example Request
curl --request GET \
--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/ranking/singles' \
--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com'
const res = await fetch(
'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/ranking/singles',
{ headers: { 'X-RapidAPI-Key': 'YOUR_KEY', 'X-RapidAPI-Host': 'tennis-api-atp-wta-itf.p.rapidapi.com' } }
);
const rankings = await res.json();
import requests
r = requests.get(
"https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/ranking/singles",
headers={"X-RapidAPI-Key": "YOUR_KEY", "X-RapidAPI-Host": "tennis-api-atp-wta-itf.p.rapidapi.com"}
)
print(r.json())
Example Response
{
"data": [
{
"id": 221423485,
"date": "2026-05-18T00:00:00.000Z",
"rankingPoints": 14700,
"position": 1,
"player": {
"id": 47275,
"name": "Jannik Sinner",
"countryAcr": "ITA",
"country": { "name": "Italy", "acronym": "ITA" }
}
},
{
"id": 221423486,
"date": "2026-05-18T00:00:00.000Z",
"rankingPoints": 11960,
"position": 2,
"player": {
"id": 68074,
"name": "Carlos Alcaraz",
"countryAcr": "ESP",
"country": { "name": "Spain", "acronym": "ESP" }
}
}
]
}
Response Properties
| Property | Type | Description |
|---|---|---|
id | integer | Ranking record ID. |
date | string | Date of the ranking snapshot (ISO 8601). Rankings are updated weekly. |
point | integer | Ranking points (alias for rankingPoints). |
rankingPoints | integer | Rolling 52-week ATP/WTA ranking points β the aggregate used to determine position. |
position | integer | World ranking position (1 = world No. 1). |
player.id | integer | Player ID β use with other endpoints to fetch profile, H2H, past matches. |
player.name | string | Player full name. |
player.countryAcr | string | 3-letter nationality code (e.g. ITA, ESP). |
player.country | object | Country object with name and acronym. |
Race Rankings (Year-to-Date)
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 --request GET \
--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/ranking/singles?race=true&pageSize=20' \
--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com'
const res = await fetch(
'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/ranking/singles?race=true&pageSize=20',
{ headers: { 'X-RapidAPI-Key': 'YOUR_KEY', 'X-RapidAPI-Host': 'tennis-api-atp-wta-itf.p.rapidapi.com' } }
);
const race = await res.json();
Example Response
{
"data": [
{
"racePosition": 1,
"racePoints": 3900,
"player": {
"id": 47275,
"name": "Jannik Sinner",
"countryAcr": "ITA",
"country": { "name": "Italy" }
}
},
{
"racePosition": 2,
"racePoints": 3650,
"player": {
"id": 207989,
"name": "Carlos Alcaraz",
"countryAcr": "ESP",
"country": { "name": "Spain" }
}
}
]
}
Response Properties
| Property | Type | Description |
|---|---|---|
racePosition | integer | Position in the year-to-date race standings (1 = leading). Calculated from sort order β accounts for pagination offset. |
racePoints | integer | Year-to-date points earned since January 1. This is the ATP Race to Turin / WTA Race to Fort Worth value. |
player.id | integer | Player ID β use with other endpoints to fetch profile, H2H, past matches. |
player.name | string | Player full name. |
player.countryAcr | string | 3-letter nationality code. |
player.country | object | Country name object. |
Doubles Rankings
Path Parameters
| Parameter | Type | Description |
|---|---|---|
type Required | string | atp or wta |
Query Parameters
| Parameter | Type | Description |
|---|---|---|
filter Optional |
string | Semicolon-separated filters in Key:value format. Available filters:
filter=PlayerCountry:ESP,ITA |
Example Request
curl --request GET \
--url 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/ranking/doubles' \
--header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
--header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com'
Example Response
[
{
"id": 105012,
"name": "Rohan Bopanna",
"countryAcr": "IND",
"doublesPosition": 1,
"doublesPoints": 7820,
"doublesProgress": 0
}
]
Response Properties
| Property | Type | Description |
|---|---|---|
id | integer | Player ID. |
name | string | Player full name. |
countryAcr | string | 3-letter nationality code. |
doublesPosition | integer | Current doubles ranking position. The array is sorted ascending by this field. |
doublesPoints | integer | Total doubles ranking points. |
doublesProgress | integer | Doubles ranking movement since the last weekly update. Positive = moved up, negative = dropped. |