v2

API Reference

Tournaments

The Tournaments module provides tournament metadata, season history, past champions, results, and a full year calendar for ATP and WTA events.

â„šī¸
Season IDs vs Tournament IDs Each row in the database represents a single year-edition of an event (a "season"). Wimbledon 2024 and Wimbledon 2025 are separate rows, each with their own id (the seasonid). All year-editions of the same event are linked together via the link field. Use the Calendar endpoint to discover seasonid values for a given year.

Endpoint Summary

MethodPathDescription
GET/tennis/v2/{type}/tournament/info/{seasonid}Tournament info for a season
GET/tennis/v2/{type}/tournament/seasons/{seasonid}All seasons of a tournament
GET/tennis/v2/{type}/tournament/past-champtions/{seasonid}Past champions
GET/tennis/v2/{type}/tournament/results/{seasonid}Full results draw
GET/tennis/v2/{type}/tournament/calendar/{year}Year tournament calendar

Tournament Calendar

GET /tennis/v2/{type}/tournament/calendar/{year} Returns all tournaments scheduled in a given calendar year

Path Parameters

ParameterTypeDescription
type Requiredstringatp or wta
year Requiredinteger4-digit year, e.g. 2025

Query Parameters

ParameterTypeDescription
include Optional string Comma-separated extras to load. court, rank, and country are always included by default. Additional available options:
  • rating — ranking points awarded per round (winner, finalist, SF, QF, etc.)
  • singlesPrize — prize money per round in USD (ATP only)
Example: include=rating,singlesPrize
filter Optional string Semicolon-separated filters in Key:value format. Available filters:
  • TourRank:{1,2} — filter by tournament tier ID(s) (1=Grand Slam, 2=Masters, 3=500, 4=250)
  • TourCourt:{1,2} — filter by court surface ID(s)
Example: filter=TourRank:1,2;TourCourt:2
pageSize Optional integer Results per page. Default: 10.
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/tournament/calendar/2025' \
  --header 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
  --header 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com'

Example Response

JSON
[
  {
    "id": 8871,
    "link": 520,
    "name": "Roland Garros",
    "date": "2025-05-26T00:00:00.000Z",
    "site": "Paris",
    "countryAcr": "FRA",
    "courtId": 2,
    "court": { "id": 2, "name": "Clay" },
    "rankId": 1,
    "rank": { "id": 1, "name": "Grand Slam" },
    "prize": "â‚Ŧ53,478,000",
    "draw_size": 128,
    "entry": 104,
    "race": 1,
    "tier": null,
    "url": "https://www.rolandgarros.com",
    "latitude": 48.8472,
    "longitude": 2.2494
  }
]

Response Properties

PropertyTypeDescription
idintegerUnique ID for this specific year-edition of the tournament. Use as seasonid in all other tournament endpoints.
linkinteger | nullParent tournament / series ID. All year-editions of the same event share the same link value. The /seasons/{seasonid} endpoint uses this to find all editions of a tournament.
namestringOfficial name for this edition (e.g. "Roland Garros", "Wimbledon").
datedatetimeTournament start date (Monday of the first week) as ISO 8601 UTC string.
sitestring | nullVenue city name (e.g. "Paris", "London").
countryAcrstring3-letter code of the host country.
courtIdintegerForeign key for court surface. Cross-reference with Courts.
courtobjectEmbedded court object: { id, name }, e.g. { id: 2, name: "Clay" }.
rankIdintegerForeign key for tournament tier. Cross-reference with Ranking Tiers.
rankobjectEmbedded tier object: { id, name }. ATP tiers: Grand Slam, Masters 1000, ATP 500, ATP 250. WTA: WTA 1000, WTA 500, WTA 250.
prizestring | nullTotal tournament prize fund as a formatted string (e.g. "â‚Ŧ53,478,000"). Currency varies by tournament.
draw_sizeinteger | nullTotal players in the main draw (e.g. 128, 96, 64, 32).
entryinteger | nullDirect acceptance cutoff — the world ranking required to enter the main draw without qualifying.
raceinteger | null1 = this tournament counts toward the Year-End Championship race (ATP Finals / WTA Finals qualification). null or 0 = does not count.
tierstring | nullWTA-specific tier label (e.g. "WTA 1000"). ATP events leave this null — use rank.name instead.
urlstring | nullOfficial tournament website URL.
latitude / longitudenumber | nullVenue GPS coordinates (double precision). Useful for map-based tournament visualisations.

Tournament Info

GET /tennis/v2/{type}/tournament/info/{seasonid} Returns detailed information for a specific tournament season, including prize money and ranking points per round

Path Parameters

ParameterTypeDescription
type Requiredstringatp or wta
seasonid RequiredintegerTournament season ID (â‰Ĩ 1). Use the Calendar endpoint to find IDs.

Query Parameters

ParameterTypeDescription
include Optional string 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 -G 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/tournament/info/8871' \
  -H 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
  -H 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com'

Example Response

JSON
{
  "id": 8871,
  "name": "Roland Garros",
  "date": "2025-05-26T00:00:00.000Z",
  "prize": "â‚Ŧ53,478,000",
  "singlesPrize": {
    "winner": 2300000,
    "finalist": 1150000,
    "semiFinalist": 575000,
    "quarterFinalist": 310000,
    "fourth": 175000,
    "third": 103000,
    "second": 62000,
    "first": null,
    "qualifying": 20000,
    "qualifyingSecond": 12000,
    "qualifyingFirst": 8000
  },
  "rating": {
    "winner": 2000,
    "finalist": 1200,
    "semiFinalist": 720,
    "quarterFinalist": 400,
    "fourth": 200,
    "third": 100,
    "second": 50,
    "first": 10
  }
}

Response Properties — Prize & Points Breakdown

In addition to the base tournament fields (same as Calendar), the Info endpoint includes singlesPrize, doublesMoney, and rating objects. All three share the same PointPrize structure:

PropertyTypeDescription
singlesPrizeobject | nullPrize money per round for singles (currency matches the prize field).
doublesMoneyobject | nullPrize money per round for doubles. Same structure as singlesPrize.
ratingobject | nullATP/WTA ranking points awarded per round — not prize money. Same structure, values are points integers.

PointPrize object fields (used by singlesPrize, doublesMoney, and rating):

PropertyTypeDescription
winnerintegerAmount for the tournament champion.
finalistintegerAmount for the runner-up (final loser).
semiFinalistinteger | nullAmount for each semi-final loser.
quarterFinalistinteger | nullAmount for each quarter-final loser.
fourthinteger | nullR16 losers (last 16).
thirdinteger | nullR32 losers (last 32).
secondinteger | nullR64 losers (last 64).
firstinteger | nullR128 losers (last 128 — only present in Grand Slam 128-draw events).
qualifyinginteger | nullAmount for players losing in the final qualifying round.
qualifyingSecondinteger | nullAmount for players losing in qualifying round 2.
qualifyingFirstinteger | nullAmount for players losing in qualifying round 1.
preQualifyinginteger | nullAmount for players eliminated before the main qualifying draw.

Tournament Seasons

GET /tennis/v2/{type}/tournament/seasons/{seasonid} Returns all yearly editions (seasons) of the same tournament event

Pass any season ID for a tournament to get all other editions of the same event (linked via the link field). Useful for building a "tournament history" page.

Path Parameters

ParameterTypeDescription
type Requiredstringatp or wta
seasonid RequiredintegerAny season ID for this tournament (â‰Ĩ 1)

Example Request

cURL
curl -G 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/tournament/seasons/8871' \
  -H 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
  -H 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com'

Example Response

JSON
{
  "data": [
    { "id": 8871, "name": "Roland Garros", "date": "2025-05-26T00:00:00.000Z" },
    { "id": 8201, "name": "Roland Garros", "date": "2024-05-27T00:00:00.000Z" },
    { "id": 7610, "name": "Roland Garros", "date": "2023-05-28T00:00:00.000Z" }
  ]
}

Response Properties

PropertyTypeDescription
idintegerSeason ID for this year-edition. Use as seasonid in all other tournament endpoints.
namestringOfficial tournament name for this edition.
datedatetimeTournament start date as ISO 8601 UTC string.

Past Champions

GET /tennis/v2/{type}/tournament/past-champtions/{seasonid} Returns a list of past winners (champions) for a recurring tournament
âš ī¸
Note: The path segment is spelled past-champtions (not past-champions) — use the exact spelling shown.

Path Parameters

ParameterTypeDescription
type Requiredstringatp or wta
seasonid RequiredintegerTournament season ID (â‰Ĩ 1)

Example Request

cURL
curl -G 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/tournament/past-champtions/8871' \
  -H 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
  -H 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com'

Example Response

JSON
{
  "data": {
    "singles": [
      {
        "id": 390145,
        "date": "2025-06-08T00:00:00.000Z",
        "result": "6-3 6-2 6-4",
        "roundId": 12,
        "player1": { "id": 104925, "name": "Carlos Alcaraz", "countryAcr": "ESP" },
        "player2": { "id": 106421, "name": "Jannik Sinner", "countryAcr": "ITA" },
        "tournament": { "id": 8871, "name": "Roland Garros", "prize": "â‚Ŧ53,478,000" }
      }
    ],
    "doubles": [ "..." ]
  }
}

Response Properties

PropertyTypeDescription
data.singlesarrayFinals of the singles draw. Each item is a match record (winner = player1, loser = player2).
data.doublesarrayFinals of the doubles draw. Player names contain a / separator for pair notation (e.g. "Mektic / Pavic").
idintegerMatch record ID.
datedatetimeMatch date as ISO 8601 UTC.
resultstringScore string, e.g. "6-3 6-2 6-4".
roundIdintegerRound ID. Finals are always 12 for standard events or 16 for Tour Finals round-robin.
player1 / player2objectEmbedded player summary: { id, name, countryAcr }. player1 is always the champion (winner).
tournamentobject | nullEmbedded tournament summary including prize field (total purse).

Tournament Results

GET /tennis/v2/{type}/tournament/results/{seasonid} Returns the full match results draw for a tournament season

Path Parameters

ParameterTypeDescription
type Requiredstringatp or wta
seasonid RequiredintegerTournament season ID (â‰Ĩ 1)

Example Request

cURL
curl -G 'https://tennis-api-atp-wta-itf.p.rapidapi.com/tennis/v2/atp/tournament/results/8871' \
  -H 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
  -H 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com'

Example Response

JSON
[
  {
    "id": 390145,
    "date": "2025-06-08T14:00:00.000Z",
    "result": "6-3 6-2 6-4",
    "roundId": 1,
    "round": { "id": 1, "name": "Final" },
    "player1": { "id": 104925, "name": "Carlos Alcaraz" },
    "player2": { "id": 106421, "name": "Jannik Sinner" }
  }
]

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").

Response Properties

The response object has four arrays, each containing match records in the same structure:

PropertyTypeDescription
data.singlesarrayAll singles main-draw results for the tournament.
data.doublesarrayAll doubles main-draw results. Player names contain / for pair notation.
data.qualifyingarraySingles qualifying draw results (round IDs 0–3).
data.doublesQualifyingarrayDoubles qualifying draw results.

Each match record:

PropertyTypeDescription
idintegerMatch record ID.
datedatetimeMatch date as ISO 8601 UTC.
resultstringScore string, e.g. "6-3 6-2 6-4". Each space-separated token is a set score.
roundIdintegerRound ID (1 = Final, 2 = SF, 3 = QF, etc.).
roundobject | null{ id, name } — present when round is included.
player1Id / player2IdintegerPlayer IDs. player1 is always the winner.
player1 / player2object{ id, name, countryAcr }.
tournamentobject | nullEmbedded tournament summary when the tournament relation is loaded.