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, and live scores. Odds endpoints are listed below and launching soon.
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"Odds
Coming soonBetting odds endpoints are on the way. Hard rule: spreads and totals will be games, never points or sets.
GET/api/v1/tennis/odds/{matchId}MatchIdPre-match odds: h2h, spreads, totals in decimal. Spreads and totals are GAMES lines, never points or sets.
/api/v1/tennis/odds/{matchId}curl "https://api.citoapi.com/api/v1/tennis/odds/{matchId}" \
-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"Tell us which markets you need
Sportsbooks like DraftKings or Pinnacle, exchanges, prediction markets like Kalshi. We build what people ask for, and your request goes straight to the team.
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.