Overview
Find the Right Endpoint
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.
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 to | Start with | Plan |
|---|---|---|---|
| Find upcoming matches, with H2H, pre-match odds and predictions where available | Upcoming Matches | GET /tennis/v2/upcoming/matches/{type} | All plans; model win probabilities ULTRA / MEGA; written analysis MEGA |
| Current state of matches happening now | Live Scores, Stats & Odds โ REST | GET /tennis/v2/extend/api/events/live | All plans |
| Stream live scores/odds without polling | Real-time (Socket.IO) | GET /tennis/v2/extend/api/ws-token | MEGA |
| Completed matches for a date or range | Results & Historical Data | GET /tennis/v2/{type}/results/{date} | All plans |
| Player profile or career statistics | Player Profiles & Career Stats | GET /tennis/v2/{type}/player/profile/{id} | All plans |
| Compare two players historically | Head-to-Head Stats & Analysis | GET /tennis/v2/{type}/h2h/info/{p1}/{p2} | All plans |
| ATP or WTA rankings | Rankings | GET /tennis/v2/{type}/ranking/singles | All plans |
| Tournament information, seasons or draws | Tournaments & Draws | Tournament Info / Draw | All plans |
| Tournaments by season, date or current activity | Tours Calendar (Men & Women) | Year calendar / /calendar/active | All plans |
| Possible future pairings | Potential Matchups | GET /tennis/v2/potential-fixtures/{type} | All plans |
| Names and reusable lookup values | Reference Data & Search | GET /tennis/v2/search | All plans |
Follow the lifecycle of a match
UPCOMING โ LIVE: REST or Socket.IO โ RESULTS & HISTORICAL
Odds and predictions are optional data within Upcoming, not another match stage.
1. Upcoming Matches
Find upcoming men's and women's singles and doubles matches, with filters for date, tournament, player, surface and competition level. Choose the additional details your application needs: player and tournament details, head-to-head records, pre-match odds and predictions where available. Keep these concepts separate:
predictionSummaryโ bookmaker-implied view from headline oddsmodelPredictionโ model win probabilities (separate object; ULTRA / MEGA)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} # Pre-Match Odds (All Markets)Match IDs differ between the schedule, the live service and the archive: follow the returned links instead of matching by name. 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. 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| Need | Use |
|---|---|
| Load the current live board | REST |
| One match latest score/stats/odds on demand | REST |
| Continuously update a live UI / avoid polling | Socket.IO |
Open Live REST โ ยท Open Socket.IO โ
3. 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
4. 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 upcoming matches also carry player IDs. Open Players โ
5. Head-to-Head Stats & Analysis
Historical / descriptive comparison. Forward-looking model predictions belong in Upcoming Matches. Open H2H โ
Rankings and tournament data
6. Rankings
Historical ranking snapshots take DD.MM.YYYY or YYYY-MM-DD; match dates use YYYY-MM-DD. Open Rankings โ
7. Tournaments & Draws
โWhen is it happening?โ โ Tours Calendar (Men & Women). โTell me about this tournament or draw.โ โ Tournaments & Draws.
8. 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}/filtersActive 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=yesOpen Tours Calendar (Men & Women) โ
9. Potential Matchups
Possible future pairings โ not confirmed fixtures. Open Potential Matchups โ
10. Reference Data & Search
GET /tennis/v2/search
GET /tennis/v2/countries
GET /tennis/v2/court
GET /tennis/v2/round
GET /tennis/v2/rankingUnderstanding identifiers
- Player ID โ numeric; from upcoming matches, rankings, player lists and search.
- Tournament / season ID โ one year-edition; from calendar, then reuse on info / results / upcoming filters.
- Upcoming matchId โ scheduled-match row from Upcoming Matches.
- Live event id โ live scores, timeline, live odds.
- Live matchId โ
player1Id-player2Id-tournamentId-roundIdfor point-by-point.
Match IDs differ between the schedule, the live service and the archive: follow the returned links instead of matching by name. 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
| Capability | Typical access |
|---|---|
| Upcoming matches, factual H2H and available pre-match odds | All plans (FREE / PRO / ULTRA / MEGA) |
| Pre-match odds (all markets) | All plans |
| Live scores, statistics, point-by-point, timeline, live odds | All plans |
SportsAPI365 model win probabilities (modelPrediction, H2H Model Prediction) | ULTRA / MEGA |
| Socket.IO real-time push | MEGA 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
| Field | Type | Meaning |
|---|---|---|
id | integer | Numeric player ID (same IDs across all endpoints). |
name | string | Display name. Doubles teams contain /. |
countryAcr | string | Three-letter country code. |
birthday | string | null | Date of birth (ISO-8601), where returned. |
country.name / country.acronym | string | Country, on routes that nest it. |
seed / odd / image / image_p_name | string | Only on routes that return them: seed, pre-match odds, photo paths. |
Tournament object
| Field | Type | Meaning |
|---|---|---|
id | integer | Tournament season ID (one edition of an event). |
name | string | Tournament name. |
date / startDate | string | Start date: ISO-8601 (date) or YYYY-MM-DD (startDate) โ same day. |
rankId | integer | Level (TourRank): 0 ITF $10K, 1 Challenger/ITF > $10K, 2 Main tour, 3 Masters, 4 Grand Slam, โฆ |
courtId / court | integer / object | Surface ID, and court: { id, name } when included. |
rank / round | object | Level as { id, name } (round is the legacy key name). |
countryAcr / country | string / object | Country code, and { name, acronym } when included. |
Plan-restricted field
| Field | Type | Meaning |
|---|---|---|
available | boolean | Always false. |
error | string | Always "plan_restricted". |
message | string | Upgrade message, e.g. "Upgrade Plan to see this". |
requiredPlan | string | Lowest plan that includes the field: ULTRA or MEGA. |
upgradeUrl | string | Where to upgrade, where returned. |
LiveEvent object (REST and Socket.IO)
| Field | Type | Meaning |
|---|---|---|
id | string | Live event ID โ use with live-score, timeline, odds and join-event. |
matchId | string | player1Id-player2Id-tournamentId-roundId bridge to the core API (point-by-point by IDs). |
name / participant1 / participant2 | string | Match name and the two players' names. |
league / tournament.name | string | Tournament name as shown by the live feed. |
score | string | Set scores so far, comma-separated (e.g. 6-4,3-2). |
points | string | Points in the current game (e.g. 30-15, 40-A). |
indicator | string | Server: "1,0" player 1, "0,1" player 2. |
status | string | InPlay, Not Started or Ended. |
tourType | string | atp or wta. |
startTimestamp | integer | Scheduled start, Unix seconds. |
stats / timeline | object / array | Only on event-by-players and live-score. |
Odds entry (live odds routes)
| Field | Type | Meaning |
|---|---|---|
od1 / od2 | string | Decimal odds for outcome 1 (player 1 / over) and outcome 2 (player 2 / under). |
odx | string | null | Draw price where a market has one; otherwise null. |
line | string | null | Handicap or total line; empty or null when not applicable. |
bookmaker / bookmakerId | string / integer | Bookmaker (see /bookmakers/all). |
od1Bookmaker / od2Bookmaker / odxBookmaker | string | On best-odds routes: who offers each best price. |
updatedAt / addTime / sourceAddTime | string | integer | When the bookmaker published the price, Unix seconds. |
Point-by-point set and game
| Field | Type | Meaning |
|---|---|---|
sets[].setNumber | integer | Set number, from 1. |
sets[].setScore | string | Final set score (e.g. 6-3); empty while in progress. |
sets[].games[].gameNumber | integer | Game number within the set. |
sets[].games[].server | integer | 1 = player 1 served, 2 = player 2, 0 = unknown. |
sets[].games[].tiebreak | boolean | true for a tiebreak game. |
sets[].games[].finalScore | string | Games score in the set after this game (e.g. 3-2). |
sets[].games[].fifteens_content | string | Score after each point, comma-separated, as player1:player2. BP marks a break point; in tiebreaks * marks the server (*1:0). |
Statistics metric (match statistics)
| Field | Type | Meaning |
|---|---|---|
statistics.{period} | object | 1ST, 2ND, โฆ = that set; ALL = whole match. |
โฆ{period}.{category} | object | games, points, return, service, miscellaneous. |
โฆ{category}.{metric}.player1 / player2 | object | The metric for each player. |
โฆ.value | integer | The count (aces, points won, serves landed, โฆ). |
โฆ.total / โฆ.percentage | integer / number | Ratio metrics only: what value is out of, and value as a percentage. |
Common recipes
| Goal | Request |
|---|---|
| Men's upcoming singles | GET /tennis/v2/upcoming/matches/atp?group=singles |
| Current live matches (REST) | GET /tennis/v2/extend/api/events/live |
| Start Socket.IO | GET /tennis/v2/extend/api/ws-token โ https://live.matchstat.com |
| Men's tournaments active now | GET /tennis/v2/calendar/active?tour=atp |