ATP · WTA · ITFRead the tennis API docs

Tennis API: live scores, stats & rankings.

The tennis API for developers: every match in progress with the set and game score and who is serving, results with full box scores, ATP and WTA rankings week by week, head-to-head records, and draws. 1.7 million matches back to 1877, from one key.

  • 1.7M matches since 1877
  • 140,026 players
  • 58,739 tournament editions
GET /tennis/h2h?player1_id=atp_206173&player2_id=atp_207989200 OK
$ curl "https://api.citoapi.com/api/v1/tennis/h2h?player1_id=atp_206173&player2_id=atp_207989" \ -H "x-api-key: $CITO_API_KEY"
{  "success": true,  "player1": {    "id": "atp_206173",    "name": "Jannik Sinner",    "ioc": "ITA",    "current_rank": 1,    "wins": 7  },  "player2": {    "id": "atp_207989",    "name": "Carlos Alcaraz",    "ioc": "ESP",    "current_rank": 3,    "wins": 11  },  "summary": {    "total_matches": 18,    "finals_matches": 9,    "grand_slam_matches": 6,    "player1_grand_slam_wins": 2,    "player2_grand_slam_wins": 4  },  "matches": [    {      "tournament_name": "Monte Carlo Masters",      "surface": "Clay",      "round": "F",      "winner_name": "Jannik Sinner",      "score": "7-6(5) 6-3"    },    ...  ]}

Seamless Integration with our MCP Server

Give Claude, Cursor, and ChatGPT the tennis data. One command writes the MCP config; agents call live matches, player form, head-to-head and ranking tools with real player IDs instead of guessing them, and your key stays on your machine.

MCPInstall the Cito MCP server
Claude
Cursor
OpenAI
Python
Cito API
Next.js
Discord
Slack
GitHub

One API for the whole tour

Everything a tennis app, model, bot, or dashboard reads, from the point in play to a player's ranking in 1995, behind one key.

Live, point by point

Set scores, the game score, who is serving, and live match stats for every match in progress.

Results with box scores

Every set score plus aces, double faults, first-serve %, points won and break points for 365,299 matches.

ATP and WTA rankings

Weekly singles rankings with points and movement, and any player's ranking history week by week.

Head-to-head

The full record between two players, split by surface, finals and Grand Slams, or a grid for a whole group.

Draws and calendar

Grand Slams to ITF events: the season calendar and the draw of any edition as a bracket.

History to 1877

1.7 million matches on the ATP, WTA, Challenger and ITF tours, plus junior Grand Slams, searchable by player, year and surface.

Endpoints you can ship with

Eight groups, one key. Pick what you are building; every route returns the same REST JSON.

Live scores

Every match in progress with the set scores, the game score, who is serving, and live match stats. Open one match for its full state.

View docs
  • GET/api/v1/tennis/matches/live

    Matches in progress: sets, game score, server, and live stats.

  • GET/api/v1/tennis/matches/live/{match_id}

    One live match: every set, the current game, and both players' stats.

  • GET/api/v1/tennis/matches/{match_id}/status

    Scheduled, in progress, or finished, with the result once decided.

  • GET/api/v1/tennis/schedule

    The day's order of play across tours.

  • GET/api/v1/tennis/matches/upcoming

    Scheduled matches, soonest first.

FAQs

Coverage, plans, live data, and history

Can't find what you're looking for? Contact our customer support team

Read the tennis docs

Build live scoreboards

Create a free key, call your first tennis endpoint in a minute, and upgrade when the app is real.