Overview

API Schema & Endpoint Guide

Find the right endpoint by starting with what you want to do. Base host: tennis-api-atp-wta-itf.p.rapidapi.com. atp= men's tennis (ATP, Challenger, ITF). wta = women's (WTA, ITF). There is no separate itf tour value.

โ„น๏ธ
New to the API?

Start with Getting Started for authentication, headers, pagination and date formats. Use this page when you need to decide which endpoint or delivery method to use.

What do you want to do?

I want toโ€ฆGo toStart withPlan
Find scheduled matchesUpcoming MatchesGET /tennis/v2/{atp|wta}/fixturesFREE+ (FREE = PRO payload)
Upcoming matches with predictions and oddsUpcoming Matches (With Predictions & Odds Data)GET /tennis/v2/upcoming/matches/{type}All plans; modelPrediction (model win %) ULTRA / MEGA
Current state of matches happening nowLive Scores, Stats & Odds โ€” RESTGET /tennis/v2/extend/api/events/liveAll plans
Stream live scores/odds without pollingReal-time (Socket.IO)GET /tennis/v2/extend/api/ws-tokenMEGA
Completed matches for a date or rangeResults & Historical DataGET /tennis/v2/{type}/results/{date}All plans
Player profile or career statisticsPlayer Profiles & Career StatsGET /tennis/v2/{type}/player/profile/{id}All plans
Compare two players historicallyHead-to-Head Stats & AnalysisGET /tennis/v2/{type}/h2h/info/{p1}/{p2}All plans
ATP or WTA rankingsRankingsGET /tennis/v2/{type}/ranking/singlesAll plans
Tournament information, seasons or drawsTournaments & DrawsTournament Info / DrawAll plans
Tournaments by season, date or current activityTours Calendar (Men & Women)Year calendar / /calendar/activeAll plans
Possible future pairingsPotential MatchupsGET /tennis/v2/potential-fixtures/{type}All plans
Names and reusable lookup valuesReference Data & SearchGET /tennis/v2/searchAll plans

Follow the lifecycle of a match

UPCOMING MATCHES โ†’ UPCOMING + PREDICTIONS & ODDS โ†’ LIVE: REST or Socket.IO โ†’ RESULTS & HISTORICAL DATA

1. Upcoming Matches

Use this section to find scheduled matches and factual match/H2H data โ€” by date, date range, tournament, player, matchup and round. Available on all plans (FREE / PRO / ULTRA / MEGA). If you also need pre-match odds or prediction enrichment, use Upcoming Matches (With Predictions & Odds Data).

GET /tennis/v2/{type}/fixtures
GET /tennis/v2/{type}/fixtures/{date}
GET /tennis/v2/{type}/fixtures/{startDate}/{endDate}
GET /tennis/v2/{type}/fixtures/tournament/{tournamentId}
GET /tennis/v2/{type}/fixtures/player/{playerId}
GET /tennis/v2/{type}/fixtures/h2h/{player1Id}/{player2Id}
โ„น๏ธ
Identifier note

Match IDs differ between the schedule, the live service and the archive: follow the returned links instead of matching by name. Fixture, upcoming and H2H upcoming rows carry links.live (/tennis/v2/matches/{matchId}/live?type=atp|wta), which returns the current state and the live eventId for live odds and Socket.IO.

Open Upcoming Matches documentation โ†’

2. Upcoming Matches (With Predictions & Odds Data)

Use this section when you need upcoming matches enriched with basic bookmaker odds and prediction-related data. Available on all plans; only the SportsAPI365 model win probabilities (modelPrediction) require ULTRA or MEGA. Keep these concepts separate:

  • predictionSummary โ€” bookmaker-implied view from headline odds
  • modelPrediction โ€” model win probabilities (separate object)
  • preMatchOdds โ€” bookmaker odds detail
GET /tennis/v2/upcoming/matches
GET /tennis/v2/upcoming/matches/{type}
GET /tennis/v2/upcoming/match-prediction/{type}/{player1}/{player2}   # MEGA only
GET /tennis/v2/aggregate/head-to-head/prediction/raw?player1=โ€ฆ&player2=โ€ฆ   # MEGA only
GET /tennis/v2/aggregate/head-to-head/model/prediction?player1=โ€ฆ&player2=โ€ฆ   # ULTRA / MEGA
GET /tennis/v2/upcoming/matchodds/{type}                             # Match Odds (All Markets)

Open Predictions & Odds documentation โ†’

3. Live Scores, Stats & Odds

REST for current state; Socket.IO (MEGA) for push without polling. Live REST uses its own event id โ€” do not send a core fixture ID to live odds endpoints.

GET /tennis/v2/extend/api/events/live
GET /tennis/v2/extend/api/ws-token          # MEGA โ†’ connect https://live.matchstat.com
NeedUse
Load the current live boardREST
One match latest score/stats/odds on demandREST
Continuously update a live UI / avoid pollingSocket.IO

Open Live REST โ†’ ยท Open Socket.IO โ†’

4. Results & Historical Data

GET /tennis/v2/{type}/results/{date}
GET /tennis/v2/{type}/results/{startDate}/{endDate}
GET /tennis/v2/{type}/results/player/{playerId}
GET /tennis/v2/{type}/results/tournament/{seasonId}

Past champions / Grand Slam winners live here โ€” not under Tours Calendar (Men & Women). Open Results โ†’

Player and matchup data

5. Player Profiles & Career Stats

Find a player's numeric ID with search: GET /tennis/v2/search?search=Jannik Sinner returns results grouped by category (player_atp, player_wta, tournament_atp, tournament_wta); take the player's id (here 47275) and use it in the profile and H2H routes. Rankings and fixtures also carry player IDs. Open Players โ†’

6. Head-to-Head Stats & Analysis

Historical / descriptive comparison. Forward-looking model predictions belong in Upcoming Matches (With Predictions & Odds Data). Open H2H โ†’

Rankings and tournament data

7. Rankings

Historical ranking snapshots take DD.MM.YYYY or YYYY-MM-DD; match dates use YYYY-MM-DD. Open Rankings โ†’

8. Tournaments & Draws

โ„น๏ธ
Rule of thumb

โ€œWhen is it happening?โ€ โ†’ Tours Calendar (Men & Women). โ€œTell me about this tournament or draw.โ€ โ†’ Tournaments & Draws.

9. Tours Calendar (Men & Women)

Answers โ€œwhat tournaments are happening when?โ€

GET /tennis/v2/{type}/tournament/calendar/{year}
GET /tennis/v2/calendar/active
GET /tennis/v2/calendar/{type}/filters

Active tournaments use tournament start dates (no stored end date) in the tennis week for the requested day. tour is atp, wta or both (default; all also works). Default omits Qualifying rows; pass qualifying=yes (or qualify=true) for qualifying event names and IDs.

GET /tennis/v2/calendar/active?tour=atp
GET /tennis/v2/calendar/active?tour=wta&date=2024-07-15
GET /tennis/v2/calendar/active?tour=atp&startDate=2026-09-21&endDate=2026-09-27
GET /tennis/v2/calendar/active?tour=atp&qualifying=yes

Open Tours Calendar (Men & Women) โ†’

10. Potential Matchups

Possible future pairings โ€” not confirmed fixtures. Open Potential Matchups โ†’

11. Reference Data & Search

GET /tennis/v2/search
GET /tennis/v2/countries
GET /tennis/v2/court
GET /tennis/v2/round
GET /tennis/v2/ranking

Open Reference Data โ†’

Understanding identifiers

  • Player ID โ€” numeric; from fixtures, rankings, player lists.
  • Tournament / season ID โ€” one year-edition; from calendar, then reuse on info / results / fixtures.
  • Core fixture ID โ€” scheduled-match row from Upcoming Matches.
  • Live event id โ€” live scores, timeline, live odds.
  • Live matchId โ€” player1Id-player2Id-tournamentId-roundId for point-by-point.
โ„น๏ธ
From a fixture to its live data: follow the links

Match IDs differ between the schedule, the live service and the archive: follow the returned links instead of matching by name. Fixture, upcoming and H2H upcoming rows carry links.live (/tennis/v2/matches/{matchId}/live?type=atp|wta), which returns the current state and the live eventId for live odds and Socket.IO.

Plan access at a glance

CapabilityTypical access
Factual Upcoming MatchesAll plans (FREE / PRO / ULTRA / MEGA)
H2H on fixtures when availableFREE+ / all plans
Upcoming with predictions and oddsAll plans
Pre-match odds (all markets)All plans
Live scores, statistics, point-by-point, timeline, live oddsAll plans
SportsAPI365 model win probabilities (modelPrediction, H2H Model Prediction)ULTRA / MEGA
Socket.IO real-time pushMEGA only
Written predictions (Match Prediction & Analysis Paragraph, H2H Prediction Analysis)MEGA only

Field-level restrictions (e.g. modelPrediction on FREE / PRO) return 200 and keep the field visible with the message "Upgrade Plan to see this". Restricted endpoints (MEGA only, or H2H Model Prediction on ULTRA / MEGA) return 403:

{
  "error": "plan_restricted",
  "message": "Your current plan does not include access to this data. Please upgrade via RapidAPI.",
  "requiredPlan": "MEGA",
  "upgradeUrl": "https://rapidapi.com/jjrm365-kIFr3Nx_odV/api/tennis-api-atp-wta-itf"
}

The message names where you subscribed: RapidAPI subscribers see "โ€ฆPlease upgrade via RapidAPI."; SportsAPI365.com subscribers see "โ€ฆPlease upgrade via SportsAPI365.com." with the matching upgradeUrl.

Reusable response schemas

These objects appear across many endpoints. Each endpoint's Response Properties table lists every field of its example; the definitions below are the shared meaning.

Player object

FieldTypeMeaning
idintegerNumeric player ID (same IDs across all endpoints).
namestringDisplay name. Doubles teams contain /.
countryAcrstringThree-letter country code.
birthdaystring | nullDate of birth (ISO-8601), where returned.
country.name / country.acronymstringCountry, on routes that nest it.
seed / odd / image / image_p_namestringOnly on routes that return them: seed, pre-match odds, photo paths.

Tournament object

FieldTypeMeaning
idintegerTournament season ID (one edition of an event).
namestringTournament name.
date / startDatestringStart date: ISO-8601 (date) or YYYY-MM-DD (startDate) โ€” same day.
rankIdintegerLevel (TourRank): 0 ITF $10K, 1 Challenger/ITF > $10K, 2 Main tour, 3 Masters, 4 Grand Slam, โ€ฆ
courtId / courtinteger / objectSurface ID, and court: { id, name } when included.
rank / roundobjectLevel as { id, name } (round is the legacy key name).
countryAcr / countrystring / objectCountry code, and { name, acronym } when included.

Plan-restricted field

FieldTypeMeaning
availablebooleanAlways false.
errorstringAlways "plan_restricted".
messagestringUpgrade message, e.g. "Upgrade Plan to see this".
requiredPlanstringLowest plan that includes the field: ULTRA or MEGA.
upgradeUrlstringWhere to upgrade, where returned.

LiveEvent object (REST and Socket.IO)

FieldTypeMeaning
idstringLive event ID โ€” use with live-score, timeline, odds and join-event.
matchIdstringplayer1Id-player2Id-tournamentId-roundId bridge to the core API (point-by-point by IDs).
name / participant1 / participant2stringMatch name and the two players' names.
league / tournament.namestringTournament name as shown by the live feed.
scorestringSet scores so far, comma-separated (e.g. 6-4,3-2).
pointsstringPoints in the current game (e.g. 30-15, 40-A).
indicatorstringServer: "1,0" player 1, "0,1" player 2.
statusstringInPlay, Not Started or Ended.
tourTypestringatp or wta.
startTimestampintegerScheduled start, Unix seconds.
stats / timelineobject / arrayOnly on event-by-players and live-score.

Odds entry (live odds routes)

FieldTypeMeaning
od1 / od2stringDecimal odds for outcome 1 (player 1 / over) and outcome 2 (player 2 / under).
odxstring | nullDraw price where a market has one; otherwise null.
linestring | nullHandicap or total line; empty or null when not applicable.
bookmaker / bookmakerIdstring / integerBookmaker (see /bookmakers/all).
od1Bookmaker / od2Bookmaker / odxBookmakerstringOn best-odds routes: who offers each best price.
updatedAt / addTime / sourceAddTimestring | integerWhen the bookmaker published the price, Unix seconds.

Point-by-point set and game

FieldTypeMeaning
sets[].setNumberintegerSet number, from 1.
sets[].setScorestringFinal set score (e.g. 6-3); empty while in progress.
sets[].games[].gameNumberintegerGame number within the set.
sets[].games[].serverinteger1 = player 1 served, 2 = player 2, 0 = unknown.
sets[].games[].tiebreakbooleantrue for a tiebreak game.
sets[].games[].finalScorestringGames score in the set after this game (e.g. 3-2).
sets[].games[].fifteens_contentstringScore after each point, comma-separated, as player1:player2. BP marks a break point; in tiebreaks * marks the server (*1:0).

Statistics metric (match statistics)

FieldTypeMeaning
statistics.{period}object1ST, 2ND, โ€ฆ = that set; ALL = whole match.
โ€ฆ{period}.{category}objectgames, points, return, service, miscellaneous.
โ€ฆ{category}.{metric}.player1 / player2objectThe metric for each player.
โ€ฆ.valueintegerThe count (aces, points won, serves landed, โ€ฆ).
โ€ฆ.total / โ€ฆ.percentageinteger / numberRatio metrics only: what value is out of, and value as a percentage.

Common recipes

GoalRequest
Today's men's singlesGET /tennis/v2/atp/fixtures?filter=PlayerGroup:singles
Men's upcoming with predictions / oddsGET /tennis/v2/upcoming/matches/atp
Current live matches (REST)GET /tennis/v2/extend/api/events/live
Start Socket.IOGET /tennis/v2/extend/api/ws-token โ†’ https://live.matchstat.com
Men's tournaments active nowGET /tennis/v2/calendar/active?tour=atp