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.
https://api.citoapi.com/api/v158 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_104745What tennis data is available?
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
6 steps from a name to a live scoreboardGET /tennis/players/search?q=federerGET /tennis/h2h?player1_id=atp_103819&player2_id=atp_104745GET /tennis/matches?player_id=atp_103819&opponent_id=atp_104745GET /tennis/rankings/history/atp_103819GET /tennis/tournaments/{tournamentId}/drawGET /tennis/matches/liveStart 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=ATPList PlayersList and filter players across ATP and WTA with pagination and sorting.
/api/v1/tennis/players?q=alcaraz&tour=ATPcurl "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=sinnerSearchFast autocomplete search for player pickers and search bars.
/api/v1/tennis/players/search?q=sinnercurl "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.
/api/v1/tennis/players/{playerId}curl "https://api.citoapi.com/api/v1/tennis/players/{playerId}" \
-H "x-api-key: YOUR_API_KEY"GET/api/v1/tennis/players/{playerId}/statsPlayerId StatsCareer statistics with surface, level, and year-range filters.
/api/v1/tennis/players/{playerId}/statscurl "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=2024MatchesQuery the 1.7M-match archive by player, opponent, tour, year, surface, tournament, round, or level.
/api/v1/tennis/matches?surface=Clay&year=2024curl "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=ATPRecent MatchesMost recent completed tour matches — results feeds and score tickers.
/api/v1/tennis/matches/recent?tour=ATPcurl "https://api.citoapi.com/api/v1/tennis/matches/recent?tour=ATP" \
-H "x-api-key: YOUR_API_KEY"GET/api/v1/tennis/matches/liveLive MatchesAll currently live matches with scoreboards.
/api/v1/tennis/matches/livecurl "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.
/api/v1/tennis/matches/live/{matchId}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.
/api/v1/tennis/matches/{matchId}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.
/api/v1/tennis/h2h?player1_id=…&player2_id=…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,cMatrixMulti-player head-to-head grid — round-robin groups and rivalry boards.
/api/v1/tennis/h2h/matrix?player_ids=a,b,ccurl "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-13RankingsWeekly ATP/WTA rankings table for any published Monday since the 1970s.
/api/v1/tennis/rankings?tour=ATP&date=1990-08-13curl "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=10TopCompact top-N snapshot of the latest rankings.
/api/v1/tennis/rankings/top?tour=WTA&top_n=10curl "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=2005DatesList available ranking weeks — drive date pickers and sliders.
/api/v1/tennis/rankings/dates?tour=ATP&year=2005curl "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.
/api/v1/tennis/rankings/history/{playerId}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=GrassList TournamentsList and filter 58k tournament editions by tour, tier, surface, or country.
/api/v1/tennis/tournaments?level=G&surface=Grasscurl "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=2026CalendarSeason calendar for a year — schedule pages and timelines.
/api/v1/tennis/tournaments/calendar?year=2026curl "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.
/api/v1/tennis/tournaments/{tournamentId}curl "https://api.citoapi.com/api/v1/tennis/tournaments/{tournamentId}" \
-H "x-api-key: YOUR_API_KEY"GET/api/v1/tennis/tournaments/{tournamentId}/drawDrawFull draw bracket for a tournament edition, round by round.
/api/v1/tennis/tournaments/{tournamentId}/drawcurl "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}/drawDrawDraw bracket for a specific historical edition.
/api/v1/tennis/tournaments/{tournamentId}/editions/{year}/drawcurl "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=wimbledonCompetitionsRecurring competitions across editions, with edition counts and year spans.
/api/v1/tennis/competitions?q=wimbledoncurl "https://api.citoapi.com/api/v1/tennis/competitions?q=wimbledon" \
-H "x-api-key: YOUR_API_KEY"GET/api/v1/tennis/players/{playerId}/matchesMatchesOne player's full match log, newest first, with the same archive filters.
/api/v1/tennis/players/{playerId}/matchescurl "https://api.citoapi.com/api/v1/tennis/players/{playerId}/matches" \
-H "x-api-key: YOUR_API_KEY"GET/api/v1/tennis/tournaments/{tournamentId}/scheduleScheduleMatches of one tournament edition in date and round order.
/api/v1/tennis/tournaments/{tournamentId}/schedulecurl "https://api.citoapi.com/api/v1/tennis/tournaments/{tournamentId}/schedule" \
-H "x-api-key: YOUR_API_KEY"GET/api/v1/tennis/matches/{matchId}/statsMatchId StatsServing/return statistics slice for one match.
/api/v1/tennis/matches/{matchId}/statscurl "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.
/api/v1/tennis/h2h/{player1Id}/{player2Id}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.
/api/v1/tennis/rankings/{circuit}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,bet365MatchIdPre-match odds: h2h, spreads, totals in decimal. Spreads and totals are GAMES lines. No odds = 200 with empty bookmakers and coverage.odds: false.
/api/v1/tennis/odds/{matchId}?bookmakers=pinnacle,bet365curl "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}/liveLive MatchesIn-play odds, same shape and rules as pre-match.
/api/v1/tennis/odds/{matchId}/livecurl "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 splitsNarrow 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.