Docs/API Reference/Tennis API

Tennis API

The full Open Era behind one key: 1.7M ATP & WTA matches since 1968, 5.5M weekly ranking rows, head-to-head records, tournament draws, player careers, and live scores.

BASEhttps://api.citoapi.com/api/v1
Tennis API RootAppend any endpoint path below.

58 seasons of history, one date parameter away

Ask /tennis/rankings?date=1990-08-13 for the world as it stood that Monday, or query /tennis/matches by year, surface, round, and tier all the way back to Wimbledon 1968. Every response is clean JSON with stable IDs.

GET /api/v1/tennis/h2h?player1_id=atp_103819&player2_id=atp_104745

What tennis data is available?

1,730,276 matches from 1968 to today: main draws, qualifying, Challengers, and ITF for both tours
5,566,184 weekly ranking rows — every published ATP and WTA ranking Monday, queryable by date
137,410 player profiles with hand, country, activity status, and career statistics
57,910 tournament editions with tier, surface, dates, and round-by-round draws
Head-to-head records for any pairing, with surface, level, and year splits — plus multi-player H2H matrices
Set scores and serve statistics (aces, double faults, break points) on the match archive
Live scoreboards for in-progress matches with per-match detailed state
Career ranking trajectories per player — chart a run from qualifier to world No. 1
Season calendars and historical draw brackets for schedule and bracket UIs

Rivalry pages

Use /tennis/h2h for any pairing in history — totals, surface splits, finals, and Slams — or /h2h/matrix for group boards.

Rankings products

Weekly tables by date, top-N snapshots, available-week listings, and per-player career trajectories ready for charts.

Player profiles

Search, bios, and career statistics with surface and year filters for profile screens and scouting tools.

Draws & calendars

Season calendars plus round-by-round draw brackets for 58k tournament editions, including historical editions.

Scores & results

Live scoreboards with per-match detail, and /matches/recent for results feeds the moment matches finish.

No-friction workflow

1Find the players
GET /tennis/players/search?q=federer
2Settle the rivalry
GET /tennis/h2h?player1_id=atp_103819&player2_id=atp_104745
3Pull their matches
GET /tennis/matches?player_id=atp_103819&opponent_id=atp_104745
4Chart the careers
GET /tennis/rankings/history/atp_103819
5Open a draw
GET /tennis/tournaments/{tournamentId}/draw
6Watch it live
GET /tennis/matches/live

Start here for rivalry pages, ranking charts, or draw explorers. All endpoints return clean JSON with stable IDs.

Endpoints

Tennis coverage paths for players, the match archive, head-to-heads, rankings, tournaments, live scores, and odds. Odds hard rule: spreads and totals are games — never points or sets. Books: pinnacle, bet365, draftkings, fanduel, betfair_ex.

GET/api/v1/tennis/players?q=alcaraz&tour=ATP
List PlayersList and filter players across ATP and WTA with pagination and sorting.

Summary

List and filter players across ATP and WTA with pagination and sorting.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/players?q=alcaraz&tour=ATP" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/players/search?q=sinner
SearchFast autocomplete search for player pickers and search bars.

Summary

Fast autocomplete search for player pickers and search bars.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/players/search?q=sinner" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/players/{playerId}
PlayerIdPlayer biographical profile: hand, country, height, active status.

Summary

Player biographical profile: hand, country, height, active status.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/players/{playerId}" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/players/{playerId}/stats
PlayerId StatsCareer statistics with surface, level, and year-range filters.

Summary

Career statistics with surface, level, and year-range filters.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/players/{playerId}/stats" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/matches?surface=Clay&year=2024
MatchesQuery the 1.7M-match archive by player, opponent, tour, year, surface, tournament, round, or level.

Summary

Query the 1.7M-match archive by player, opponent, tour, year, surface, tournament, round, or level.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/matches?surface=Clay&year=2024" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/matches/recent?tour=ATP
Recent MatchesMost recent completed tour matches — results feeds and score tickers.

Summary

Most recent completed tour matches — results feeds and score tickers.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/matches/recent?tour=ATP" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/matches/live
Live MatchesAll currently live matches with scoreboards.

Summary

All currently live matches with scoreboards.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/matches/live" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/matches/live/{matchId}
MatchIdDetailed live state for one match: sets, games, serve, momentum.

Summary

Detailed live state for one match: sets, games, serve, momentum.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/matches/live/{matchId}" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/matches/{matchId}
MatchIdFull match detail and box score, including set-by-set lines.

Summary

Full match detail and box score, including set-by-set lines.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/matches/{matchId}" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/h2h?player1_id=…&player2_id=…
H2hHead-to-head rivalry record with surface, level, and year filters.

Summary

Head-to-head rivalry record with surface, level, and year filters.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/h2h?player1_id=…&player2_id=…" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/h2h/matrix?player_ids=a,b,c
MatrixMulti-player head-to-head grid — round-robin groups and rivalry boards.

Summary

Multi-player head-to-head grid — round-robin groups and rivalry boards.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/h2h/matrix?player_ids=a,b,c" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/rankings?tour=ATP&date=1990-08-13
RankingsWeekly ATP/WTA rankings table for any published Monday since the 1970s.

Summary

Weekly ATP/WTA rankings table for any published Monday since the 1970s.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/rankings?tour=ATP&date=1990-08-13" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/rankings/top?tour=WTA&top_n=10
TopCompact top-N snapshot of the latest rankings.

Summary

Compact top-N snapshot of the latest rankings.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/rankings/top?tour=WTA&top_n=10" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/rankings/dates?tour=ATP&year=2005
DatesList available ranking weeks — drive date pickers and sliders.

Summary

List available ranking weeks — drive date pickers and sliders.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/rankings/dates?tour=ATP&year=2005" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/rankings/history/{playerId}
PlayerIdOne player's full career ranking trajectory, chart-ready.

Summary

One player's full career ranking trajectory, chart-ready.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/rankings/history/{playerId}" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/tournaments?level=G&surface=Grass
List TournamentsList and filter 58k tournament editions by tour, tier, surface, or country.

Summary

List and filter 58k tournament editions by tour, tier, surface, or country.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/tournaments?level=G&surface=Grass" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/tournaments/calendar?year=2026
CalendarSeason calendar for a year — schedule pages and timelines.

Summary

Season calendar for a year — schedule pages and timelines.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/tournaments/calendar?year=2026" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/tournaments/{tournamentId}
TournamentIdTournament profile with tier, surface, dates, and location.

Summary

Tournament profile with tier, surface, dates, and location.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/tournaments/{tournamentId}" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/tournaments/{tournamentId}/draw
DrawFull draw bracket for a tournament edition, round by round.

Summary

Full draw bracket for a tournament edition, round by round.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/tournaments/{tournamentId}/draw" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/tournaments/{tournamentId}/editions/{year}/draw
DrawDraw bracket for a specific historical edition.

Summary

Draw bracket for a specific historical edition.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/tournaments/{tournamentId}/editions/{year}/draw" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/competitions?q=wimbledon
CompetitionsRecurring competitions across editions, with edition counts and year spans.

Summary

Recurring competitions across editions, with edition counts and year spans.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/competitions?q=wimbledon" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/players/{playerId}/matches
MatchesOne player's full match log, newest first, with the same archive filters.

Summary

One player's full match log, newest first, with the same archive filters.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/players/{playerId}/matches" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/tournaments/{tournamentId}/schedule
ScheduleMatches of one tournament edition in date and round order.

Summary

Matches of one tournament edition in date and round order.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/tournaments/{tournamentId}/schedule" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/matches/{matchId}/stats
MatchId StatsServing/return statistics slice for one match.

Summary

Serving/return statistics slice for one match.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/matches/{matchId}/stats" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/h2h/{player1Id}/{player2Id}
Player2IdPath-parameter form of head-to-head.

Summary

Path-parameter form of head-to-head.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/h2h/{player1Id}/{player2Id}" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/rankings/{circuit}
CircuitCircuit-style rankings path: atp or wta (singles). Unavailable circuits return a structured 404.

Summary

Circuit-style rankings path: atp or wta (singles). Unavailable circuits return a structured 404.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/rankings/{circuit}" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/odds/{matchId}?bookmakers=pinnacle,bet365
MatchIdPre-match odds: h2h, spreads, totals in decimal. Spreads and totals are GAMES lines. No odds = 200 with empty bookmakers and coverage.odds: false.

Summary

Pre-match odds: h2h, spreads, totals in decimal. Spreads and totals are GAMES lines. No odds = 200 with empty bookmakers and coverage.odds: false.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/odds/{matchId}?bookmakers=pinnacle,bet365" \
  -H "x-api-key: YOUR_API_KEY"
GET/api/v1/tennis/odds/{matchId}/live
Live MatchesIn-play odds, same shape and rules as pre-match.

Summary

In-play odds, same shape and rules as pre-match.

REST
Bash
curl "https://api.citoapi.com/api/v1/tennis/odds/{matchId}/live" \
  -H "x-api-key: YOUR_API_KEY"

Head-to-head example

curl "https://api.citoapi.com/api/v1/tennis/h2h?player1_id=atp_103819&player2_id=atp_104745" \
  -H "x-api-key: YOUR_API_KEY"

# → 41 matches, Nadal 24–17, with surface, finals, and Grand Slam splits

Narrow any head-to-head with surface=Clay, level=G, or year_from / year_to.

Start with a free key

Test tennis endpoints with 500 free requests/month. Scale up for production rivalry pages, ranking charts, or live scoreboards.