Base URL
Authentication
Pass your API key in thex-api-key header. Same key works across all sports and versions.
V1 (Standard) vs V2 (Enhanced)
| Feature | V1 Standard | V2 Enhanced |
|---|---|---|
| Base URL | v1.tennis.sportsapipro.com | v2.tennis.sportsapipro.com |
| URL style | Query parameters (?gameId=123) | Path parameters (/api/match/123) |
| Endpoints | ~17 | 88 |
| Rankings | ❌ | ✅ ATP, WTA Singles + Race |
| Tournament draw | ❌ | ✅ Full bracket (R128→Final) |
| Point-by-point | ❌ | ✅ Every point |
| Player H2H | ❌ | ✅ Player vs player |
| Set-by-set scores | Basic | Detailed with tiebreaks |
| Odds & betting | Basic lines | Featured, all, pre-match, live |
V1 and V2 share the same daily quota. Requests to either version count against your plan limit.
Endpoint Categories
🔴 Live & Schedule
6 endpoints — live matches, today’s games, schedule by date
🔍 Search & Discovery
5 endpoints — search, countries, country flag
🏆 Rankings
5 endpoints — ATP, WTA singles + race rankings
🏆 Tournament
21 endpoints — seasons, standings, draw, knockout, rounds
🎾 Match
11 endpoints — details, point-by-point, statistics, odds
👤 Team/Player
7 endpoints — player profiles (player = team in tennis)
👤 Player Entity
17 endpoints — career stats, H2H, characteristics
🏟 Officials
8 endpoints — umpires, venues/courts
Tennis-Specific Concepts
Player = Team
In tennis, each player is represented as a “team” entity. Use/api/teams/:id for player profiles, events, and tournament stats. The /api/players/:id endpoints access the separate “player” entity which provides career statistics and H2H records.
Team ID vs Player Entity ID
Tennis has two distinct ID types for each player:| ID Type | Description | Found via | Used for |
|---|---|---|---|
| Team ID | The competitor/match ID | /api/search, /api/rankings, match data | /api/teams/:id, match endpoints, tournament stats |
| Player Entity ID | Internal career entity ID | player.id field in /api/teams/:id response | /api/players/:id, H2H |
Player sport validation is enforced. The
/api/players/:id endpoints validate that the player belongs to tennis. Using a non-tennis player ID will return an error message indicating the correct sport.Match Status
Each match includes astatus object with status.type (string: "notstarted", "inprogress", "finished"), status.code (integer where in-progress codes follow the pattern 7 + set_number, e.g., 8 = 1st set, 9 = 2nd set, 10 = 3rd set), and status.description (human-readable label like "2nd set"). See the Match docs for the full per-code reference table.
Set-Based Scoring
Tennis usesperiod1 through period5 for sets (best of 3 or 5), with tiebreak scores tracked separately. This differs from football (halves) and basketball (quarters).
Rankings
Tennis is the only sport with dedicated ranking endpoints. ATP and WTA rankings (singles + race) are a core feature — consider building a dedicated rankings page.Key Test IDs
| Entity | Name | Team ID | Player Entity ID |
|---|---|---|---|
| Tournament | ATP Shanghai | 2519 | — |
| Player | Carlos Alcaraz | 275923 | 3111 |
| Player | Casper Ruud | 119248 | (use /api/teams/119248 to discover) |
| Player | Daniil Medvedev | 163504 | (use /api/teams/163504 to discover) |
| Match | Alcaraz vs Ruud | 15625024 | — |
Quick Start
UI Design Ideas
- Scores display: Show set scores (e.g., 6-4, 3-6, 7-6) with tiebreak indicator instead of single totals
- Match stats: Center around serve performance (aces, double faults, 1st serve %, break points)
- Tournament draw: Visualize as a bracket (R128 → Final) — this is the signature tennis UI element
- Rankings: Show ranking, points, country flag — consider a rankings table with movement arrows
- Player profile: Show handedness (L/R), height, current ranking, prize money