Skip to content

Compare

The tennis API: ATP and WTA data sources and AcesAPI

ESPN's tennis JSON, the Match Charting Project, ATP-site scrapers and API Tennis cover different ground. Where each fits, and how AcesAPI differs.

Comparison facts checked October 14, 2026. AcesAPI data last refreshed 2026-10-14 23:05 UTC, newest data through 2026-10-14. Changelog

There is no official, documented ATP or WTA data API. The free options are partial: ESPN publishes undocumented tennis JSON, the Match Charting Project publishes crowdsourced shot-by-shot data for charted matches under a non-commercial licence, and community scrapers read the ATP site. Jeff Sackmann's well-known tennis_atp and tennis_wta repositories returned 404 on 2026-10-14, so we do not list them as a source. API Tennis sells live scores, fixtures and odds from $40 a month.

AcesAPI is a documented tennis data API and MCP server, with every tool described, a live example for each, and 500 free credits every month. It serves ATP and WTA singles results since 2007 with every set and tiebreak score, a surface for each tournament, weekly rankings, head to head, records by surface and our Elo overall and by surface, from public ESPN data. It has no serve statistics, no doubles and no live scores. For shot-by-shot research on charted matches, use the Match Charting Project. For live scores, use API Tennis. For a model or an AI agent that needs surfaces, ratings and head to head across both tours, a keyed, documented API is the cleaner base.

The options

  • ESPN tennis JSON

    ESPN's public scoreboard for the ATP and WTA: tournaments and matches with set scores, which AcesAPI also reads.

    Live. Free, no key, undocumented. The scoreboard call answered with HTTP 200 on 2026-10-14.

  • Match Charting Project

    Crowdsourced shot-by-shot data for professional matches: point-level files for men's and women's matches plus aggregate stat files, with a data dictionary.

    Last pushed 2026-09-18. Licensed CC BY-NC-SA 4.0: attribution required, non-commercial use only. Its README says it holds over 5,000 charted matches, a sample rather than every match.

  • Tennis Abstract

    Jeff Sackmann's tennis statistics site, which links to his GitHub profile for data.

    Live. On 2026-10-14 the profile it links to held one public repository, the Match Charting Project; github.com/JeffSackmann/tennis_atp and tennis_wta returned 404.

  • glad94/infotennis

    Python scripts that scrape the ATP Tour site: tournament results and, for matches from Antwerp 2021 on, key stats, rally analysis and stroke analysis where available.

    MIT. Last pushed 2026-01-06. Its README says the ATP site redesign after the 2023 season broke its calendar and results scrapers. atptour.com answered a scripted request with HTTP 403 on 2026-10-14.

  • API Tennis

    A commercial tennis API with fixtures, live scores, standings, players, head to head, odds and draws.

    On 2026-10-14 its plans were Starter at $40 a month (8,000 requests a day, 14-day trial), Premium at $60, Business at $80 (adds in-play odds and WebSockets) and Ultra at $120.

Side by side

AcesAPIthe free tennis data sources
Price and key500 free credits a month, then from $19/mo; a free keyESPN, Match Charting Project, infotennis: free. API Tennis: from $40/month
DocumentationEvery tool documented with parameters, response fields and a live exampleESPN: none. Match Charting Project: a data dictionary. API Tennis: documented
ResultsATP and WTA singles since 2007 (qualifying from 2022), every set and tiebreak scoreESPN: the same results, plus doubles, as nested JSON. API Tennis: fixtures and results; how far back is not stated on its plans page
SurfaceHard, clay or grass per tournament, and records by surfaceESPN: not in the feed. Match Charting Project: a surface per charted match
Ratings and head to headElo overall and by surface; head to head and surface splitsAPI Tennis: head to head. ESPN: none
Shot-level dataNone: no serve statistics, rallies or pointsMatch Charting Project: shot by shot for charted matches. infotennis: ATP key stats for matches from Antwerp 2021
OddsPre-match moneylines for Grand Slams since mid-2020 and Masters / WTA 1000 since August 2024API Tennis: included, in-play from Business
Terms for automated useKeyed API intended for products and modelsMatch Charting Project: non-commercial only. ATP site: we did not find terms we could read; it answered a script with HTTP 403
AI assistantsMCP server for Claude, ChatGPT and CursorNot listed by these sources
Live scoresNo: results land each morningESPN and API Tennis: yes

Example call

Carlos Alcaraz's 2025 season by surface: record, sets, tiebreaks and deciding sets on hard, clay and grass, with his current surface ratings. The same view from ESPN's feed means fetching a year of matches and tagging surfaces yourself. search_players finds the player id.

bash
curl -X POST https://mcp.acesapi.com/v1/get_surface_splits \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
  "player_id": "3782",
  "season": 2025
}'
json
{"data": {"tour": "ATP", "player_id": "3782", "name": "Carlos Alcaraz", "season": 2025, "overall": {"wins": 70, "losses": 8, "win_pct": 0.897, "sets_won": 165, "sets_lost": 45, "games_won": 1214, "games_lost": 809, "games_won_pct": 0.6, "tiebreaks_won": 16, "tiebreaks_lost": 10, "deciding_sets": 20, "deciding_sets_won": 16, "sets_won_6_0": 8, "sets_lost_0_6": 0, "wins_by_retirement": 3, "retired_or_lost_to_ret": 0}, "splits": [{"surface": "hard", "wins": 37, "losses": 6, "win_pct": 0.86, "sets_won": 86, "sets_lost": 23, "games_won": 626, "games_lost": 404, "games_won_pct": 0.608, "tiebreaks_won": 5, "tiebreaks_lost": 4, "deciding_sets": 12, "deciding_sets_won": 8, "sets_won_6_0": 4, "sets_lost_0_6": 0, "wins_by_retirement": 2, "retired_or_lost_to_ret": 0}], "ratings": {"clay": {"rating": 2247, "matches": 121}, "grass": {"rating": 2135, "matches": 39}, "hard": {"rating": 2188, "matches": 205}}}}

The splits array is cut to the first surface here (the full response has hard, clay and grass). Responses are wrapped in a data object. get_surface_splits costs 3 credits.

Use the free tennis data sources instead if

  • You need live scores or in-play odds. AcesAPI updates each morning.
  • You are doing shot-by-shot research on charted matches and your work is non-commercial: the Match Charting Project has data we do not.
  • You need doubles, serve statistics or ATP key stats. AcesAPI carries none of them.
  • Your budget is zero and you are set up to parse and check ESPN's feed yourself.

Questions

Is there an official ATP or WTA API?

Not a documented public one that we found. ESPN publishes undocumented tennis JSON, and community scrapers read the ATP site, which answered a plain scripted request with HTTP 403 when we checked.

Where can I download free ATP and WTA match data?

The Match Charting Project on GitHub has shot-by-shot data for charted matches, under a licence that bars commercial use. Jeff Sackmann's tennis_atp and tennis_wta repositories returned 404 on 2026-10-14. AcesAPI's free tier gives 500 credits a month for ATP and WTA singles results since 2007.

Is the Match Charting Project free for commercial use?

No. Its README licenses the data under CC BY-NC-SA 4.0, which requires attribution, allows non-commercial use only and requires share-alike.

Does ESPN have tennis serve statistics?

Not in the tennis feed AcesAPI reads: it has scores and no aces, double faults or break points. The Match Charting Project and ATP's key stats carry shot-level and serve data.

What is the best tennis API for live scores?

API Tennis, which lists live scores, fixtures and odds from $40 a month. AcesAPI updates each morning and does not do live scores.

Does AcesAPI have tennis odds?

Yes, for the biggest events: pre-match moneylines for Grand Slam matches since mid-2020 and ATP Masters / WTA 1000 matches since August 2024, returned by get_match. No other tournaments and nothing in play.

Can Claude or ChatGPT use AcesAPI?

Yes. AcesAPI runs an MCP server at mcp.acesapi.com, so Claude, ChatGPT and Cursor can call the same tools as the REST API.

Sources

Checked October 14, 2026.

See the data

Try it with 500 free credits every month

No card. REST or MCP.