Skip to main content

Base URL

https://v2.tennis.sportsapipro.com

Authentication

Pass your API key in the x-api-key header. Same key works across all sports and versions.
curl -H "x-api-key: YOUR_API_KEY" https://v2.tennis.sportsapipro.com/api/live

V1 (Standard) vs V2 (Enhanced)

FeatureV1 StandardV2 Enhanced
Base URLv1.tennis.sportsapipro.comv2.tennis.sportsapipro.com
URL styleQuery parameters (?gameId=123)Path parameters (/api/match/123)
Endpoints~1788
Rankings✅ ATP, WTA Singles + Race
Tournament draw✅ Full bracket (R128→Final)
Point-by-point✅ Every point
Player H2H✅ Player vs player
Set-by-set scoresBasicDetailed with tiebreaks
Odds & bettingBasic linesFeatured, 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 TypeDescriptionFound viaUsed for
Team IDThe competitor/match ID/api/search, /api/rankings, match data/api/teams/:id, match endpoints, tournament stats
Player Entity IDInternal career entity IDplayer.id field in /api/teams/:id response/api/players/:id, H2H
These IDs are different numbers. For example, Carlos Alcaraz is Team 275923 but Player Entity 3111. Using a Team ID on /api/players/ endpoints will return a 404 error or incorrect data.
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.
How to discover the Player Entity ID:
# Step 1: Get the team profile
curl -X GET "https://v2.tennis.sportsapipro.com/api/teams/275923" \
  -H "x-api-key: YOUR_API_KEY"

# Step 2: Look for the "player" object in the response
# Response includes: { "player": { "id": 3111, ... }, ... }

# Step 3: Use player.id for career endpoints
curl -X GET "https://v2.tennis.sportsapipro.com/api/players/3111/h2h/119248" \
  -H "x-api-key: YOUR_API_KEY"

Match Status

Each match includes a status 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 uses period1 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

EntityNameTeam IDPlayer Entity ID
TournamentATP Shanghai2519
PlayerCarlos Alcaraz2759233111
PlayerCasper Ruud119248(use /api/teams/119248 to discover)
PlayerDaniil Medvedev163504(use /api/teams/163504 to discover)
MatchAlcaraz vs Ruud15625024
To find any player’s entity ID, call GET /api/teams/:teamId and read the player.id field from the response.

Quick Start

# Get live tennis matches
curl -X GET "https://v2.tennis.sportsapipro.com/api/live" \
  -H "x-api-key: YOUR_API_KEY"

# Get ATP rankings
curl -X GET "https://v2.tennis.sportsapipro.com/api/rankings" \
  -H "x-api-key: YOUR_API_KEY"

# Get player profile (Alcaraz)
curl -X GET "https://v2.tennis.sportsapipro.com/api/teams/275923" \
  -H "x-api-key: YOUR_API_KEY"

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