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.