v2

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

MethodPathDescription
GET/tennis/v2/{type}/ranking/singlesSingles world rankings
GET/tennis/v2/{type}/ranking/doublesDoubles 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.

SourceWhat it containsUse case
Player entityCurrent ranking: position, points, progress, surface breakdownToday's live rankings list
Rating entityHistorical snapshot: date, position, point per playerRanking history charts, "peak ranking" analysis

Singles Rankings

GET /tennis/v2/{type}/ranking/singles Returns the current ATP or WTA singles world rankings, ordered by position

Path Parameters

ParameterTypeDescription
type Requiredstringatp or wta

Query Parameters

ParameterTypeDescription
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:
  • RankingDate:{YYYY-MM-DD} β€” returns the ranking snapshot on or before this date (standard rankings only, not applicable when race=true)
  • PlayerCountry:{USA,GBR} β€” filter by 3-letter country acronym (works with both standard and race rankings)
Example: 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
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'
JavaScript
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();
Python
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

JSON
[
  {
    "id": 106421,
    "name": "Jannik Sinner",
    "countryAcr": "ITA",
    "currentRank": 1,
    "points": 11330,
    "progress": 0,
    "ch": 1,
    "hardPoints": 6200,
    "ihardPoints": 800,
    "clayPoints": 4330,
    "grassPoints": 0,
    "prize": 28400000
  },
  {
    "id": 100644,
    "name": "Novak Djokovic",
    "countryAcr": "SRB",
    "currentRank": 2,
    "points": 9520,
    "progress": 0,
    "ch": 1
  }
]

Response Properties

PropertyTypeDescription
idintegerPlayer ID β€” use this to fetch full profile, H2H, or fixtures for this player.
namestringPlayer full name as registered in ATP/WTA records.
countryAcrstring3-letter nationality code (e.g. ITA, SRB, ESP).
currentRankintegerCurrent singles world ranking position. The response array is sorted ascending by this field (rank 1 first).
pointsintegerTotal ATP/WTA ranking points β€” the aggregate used to determine currentRank.
progressintegerRanking change since the last official weekly update. Positive = moved up, negative = dropped, 0 = unchanged. Render as up/down arrows in UI.
chinteger | nullRace Points β€” year-to-date points for the Race to Turin (ATP) / Race to Fort Worth (WTA). Use race=true to get the full race standings sorted by this field.
hardPointsinteger | nullRanking points earned on outdoor hard court. Sums with other surface points to total points.
ihardPointsinteger | nullPoints earned on indoor hard court β€” tracked separately from outdoor hard (e.g. ATP Finals = indoor hard; Australian Open = outdoor hard).
clayPointsinteger | nullPoints earned on clay surfaces.
grassPointsinteger | nullPoints earned on grass surfaces.
carpetPointsinteger | nullPoints earned on carpet (legacy surface β€” rarely used in modern tennis).
prizeinteger | nullCareer prize money in USD as an integer (e.g. 28400000 = $28.4M).

Race Rankings (Year-to-Date)

GET /tennis/v2/{type}/ranking/singles?race=true Returns the Race to Turin (ATP) or Race to Fort Worth (WTA) year-to-date standings, sorted by race points descending

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&pageSize=20' \
  --header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
  --header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com'
JavaScript
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

JSON
{
  "data": [
    {
      "racePosition": 1,
      "racePoints": 3900,
      "player": {
        "id": 106421,
        "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

PropertyTypeDescription
racePositionintegerPosition in the year-to-date race standings (1 = leading). Calculated from sort order β€” accounts for pagination offset.
racePointsintegerYear-to-date points earned since January 1. This is the ATP Race to Turin / WTA Race to Fort Worth value.
player.idintegerPlayer ID β€” use with other endpoints to fetch profile, H2H, past matches.
player.namestringPlayer full name.
player.countryAcrstring3-letter nationality code.
player.countryobjectCountry name object.

Doubles Rankings

GET /tennis/v2/{type}/ranking/doubles Returns the current ATP or WTA doubles world rankings, ordered by position

Path Parameters

ParameterTypeDescription
type Requiredstringatp or wta

Query Parameters

ParameterTypeDescription
filter Optional string Semicolon-separated filters in Key:value format. Available filters:
  • PlayerCountry:{USA,GBR} β€” filter by 3-letter country acronym
Example: filter=PlayerCountry:ESP,ITA

Example Request

cURL
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

JSON
[
  {
    "id": 105012,
    "name": "Rohan Bopanna",
    "countryAcr": "IND",
    "doublesPosition": 1,
    "doublesPoints": 7820,
    "doublesProgress": 0
  }
]

Response Properties

PropertyTypeDescription
idintegerPlayer ID.
namestringPlayer full name.
countryAcrstring3-letter nationality code.
doublesPositionintegerCurrent doubles ranking position. The array is sorted ascending by this field.
doublesPointsintegerTotal doubles ranking points.
doublesProgressintegerDoubles ranking movement since the last weekly update. Positive = moved up, negative = dropped.
ℹ️
Tip The /tennis/v2/ranking endpoint in the Miscellaneous module returns ranking tier definitions (Grand Slam, Masters 1000, etc.) β€” not player rankings.