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. Invalid years (non-numeric, < 1900, > 2100) return 400 Bad Request.

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
since Optional string ISO date string (YYYY-MM-DD). When provided, only returns tournaments starting on or after this date. Useful for listing active or upcoming tournaments. Example: since=2025-05-01
pageSize Optional integer Results per page. Default: 10. Use pageSize=2000 to retrieve the full year in a single call (ATP has ~950 tournaments per year including ITF/Challenger events).
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
{
  "data": [
    {
      "id": 20340,
      "name": "French Open - Paris",
      "countryAcr": "FRA",
      "date": "2025-05-26T00:00:00.000Z",
      "rankId": 4,
      "courtId": 2,
      "draw_size": null,
      "tier": "Grand Slam",
      "link": 19383,
      "court": { "id": 2, "name": "Clay" },
      "round": { "id": 4, "name": "Grand Slam" },
      "country": { "acronym": "FRA", "name": "France" }
    }
  ],
  "hasNextPage": true
}

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. "French Open - Paris", "Wimbledon").
datedatetimeTournament start date (Monday of the first week) as ISO 8601 UTC string.
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.
tierstringTournament tier label (e.g. "Grand Slam", "ATP 250", "Future", "Finals").
roundobjectEmbedded round/tier object: { id, name }. For calendar endpoint, this represents the draw type or tier level.
countryobjectCountry object with acronym and name.

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). Non-numeric or zero IDs return 400 Bad Request. Invalid IDs return 404 Not Found.

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/20340' \
  -H 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
  -H 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com'

Example Response

JSON
{
  "id": 20340,
  "name": "French Open - Paris",
  "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/20340' \
  -H 'X-RapidAPI-Key: YOUR_RAPIDAPI_KEY' \
  -H 'X-RapidAPI-Host: tennis-api-atp-wta-itf.p.rapidapi.com'

Example Response

JSON
{
  "data": [
    { "id": 20340, "name": "French Open - Paris", "date": "2025-05-26T00:00:00.000Z" },
    { "id": 8201, "name": "French Open - Paris", "date": "2024-05-27T00:00:00.000Z" },
    { "id": 7610, "name": "French Open - Paris", "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/20340' \
  -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": 68074, "name": "Carlos Alcaraz", "countryAcr": "ESP" },
        "player2": { "id": 47275, "name": "Jannik Sinner", "countryAcr": "ITA" },
        "tournament": { "id": 20340, "name": "French Open - Paris", "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/20340' \
  -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": 68074, "name": "Carlos Alcaraz" },
    "player2": { "id": 47275, "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.
result_typestring | nullStructured match outcome: completed, retired, walkover, default, or null if result is empty.
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.