Live scores, sub-second
Sets, games, points, server and tiebreak state for every live match — arbitrated from multiple sources into one clean feed.
Live Tennis API is a real-time tennis data API: live scores, match-winner market prices and a proprietary win-probability model for ATP, WTA, Challenger and ITF — singles and doubles — over one REST + WebSocket API.
{ "sets": [1, 0], "games": [[6,4], [3,5]], "points": ["30", "40"], "server": 1, "is_tiebreak": false, "win_probability_p1": 0.62, "timestamp": "2026-07-18T10:41:07Z" }
Our feed beside a public prediction market, on one clock. The figure at the top is a measured interval — the time between our score commit and the market's next quote move — shown with the number of samples behind it.
The data most providers give you — plus the live model analysis they don't.
Sets, games, points, server and tiebreak state for every live match — arbitrated from multiple sources into one clean feed.
Updates pushed the instant a point is played. Subscribe to one match or the whole slate; no polling, no rate-limit juggling.
A proprietary live model: the favored side, a calibrated probability, its confidence and the key factors behind the call.
Bid, ask and mid per player with history — line the market up against the data and the model in a single call.
Bios, rankings, ratings and season form; upcoming fixtures and completed results with the winner resolved.
Predictable JSON, UTC timestamps, an OpenAPI 3.1 spec and drop-in REST + WebSocket clients. Built to integrate in an afternoon.
The live API is one of a family. Break-point Alerts and the Historical Data API run on the same key and the same schema, and you manage them all from one developer portal. See all products.
Real-time webhook and push alerts the instant a break point arises in any live match — wire them straight into a bot, a Discord or your phone, no polling.
Break-point AlertsThe point-by-point tape over 164,457 completed matches back to January 2023, plus results and player stats for backtesting — the same clean JSON schema as the live feed, in one bulk-friendly API.
Historical Data APICreate an account, get an instant API key and manage your subscription — with the full REST + WebSocket reference a click away.
Sign up API docsThe point-by-point tape spans 43 monthly periods, January 2023 through July 2026 — across ATP, WTA, Challenger and ITF, singles and doubles. Each match declares how it was recorded, so you can filter to exactly the rows you trust.
| Value | What it means | Timestamps |
|---|---|---|
| from_start | Watched live from 0-0 — every row carries a real timestamp. | real |
| partial | Picked up mid-match — observed from that point onward. | real |
| reconstructed | Point sequence taken from a point-by-point feed rather than our own observation. | null |
| reconstructed_partial | A reconstruction that does not cover the whole match — it opens after 0-0, or stops before the official final score. | null |
| none | No tape for this match. | — |
?coverage=from_start only matches watched live from 0-0 ?sequence=clean de-duplicated state sequence
Both compose with the tour and date-range filters, so a query returns only the rows you asked for.
"meta": { "coverage": "from_start", "raw_rows": 1284, "unique_states": 311, "point_source": "observed", "model_rows": 287 }
point_source reads observed, reconstructed or mixed, so you always know exactly what you hold. model_rows counts how many of the rows returned carry a win-probability — the model stamp is best-effort, so filter on that number rather than assuming coverage implies it.
Monthly downloadable packages, with a sha256 manifest per file.
Historical Data APIClean REST endpoints and a WebSocket stream, all under one base URL. Authenticate with a bearer token and you are live.
| GET /matches?status=live | Free |
| GET /matches/{id}/score | Free |
| GET /players/{id} | Free |
| GET /history/matches | Basic |
| GET /markets/{id}/prices | Pro |
| GET /matches/{id}/analysis | Ultra |
| WS /ws | Ultra |
# Verify connectivity — no key needed curl https://api.livetennisapi.com/api/public/v1/health # List live matches curl -H "Authorization: Bearer $API_KEY" \ https://api.livetennisapi.com/api/public/v1/matches?status=live
Base URL — https://api.livetennisapi.com/api/public/v1
Subscribe directly for the best price and an instant key. Cancel anytime.
Already subscribed? Upgrades are prorated automatically — upgrade here. Same key, no second plan.
Same data, same endpoints, same key format — wherever you subscribe.
Subscribe here, billed monthly via Stripe. Your key is issued instantly — best price, no marketplace markup.
View plansThe largest API hub — one key across your RapidAPI subscriptions, with a usage dashboard included.
View on RapidAPIRun it as a pay-per-result Actor that streams scores and analysis straight into an Apify dataset.
View on ApifySubscribe through MagicAPI with unified billing and a single gateway key.
View on API.marketExplore and test every endpoint in our public Postman workspace before you commit a line of code.
Explore in PostmanPlug live tennis data straight into Claude, Cursor or any AI agent — 12 read-only tools, listed in the official MCP Registry.
Connect via MCPInstall a typed client and be reading live scores in a minute — or point an LLM agent at the MCP server. All MIT licensed, all open source.
Sync and async clients over every endpoint, a reconnecting WebSocket feed, and a livetennis CLI. Fully typed.
pip install livetennisapi
Zero runtime dependencies — runs on Node, Deno, Bun, Workers and the browser. Ships types and a CLI you can run with npx.
npm install livetennisapi
Give Claude, Cursor or any MCP client 12 read-only tools over live tennis data. Listed in the official MCP Registry.
npx livetennisapi-mcp
Full API reference at docs.livetennisapi.com · OpenAPI specification on GitHub.
Independent tutorials and tools from developers using the API. Written by them, not us — including where they found the limits.
BotBlog on wiring live score commits straight into bot logic over the WebSocket — reacting the moment a point lands instead of polling for it, with a measured latency study.
Read itA step-by-step Python and Flask build for a personal live scoreboard. Written for absolute beginners — no prior API experience assumed.
Read itA free hosted board built on the API, so you can watch live scores update before deciding whether you want a key at all.
Read itBuilt something? Tell us at [email protected] and we will link it here.
A free tier plus three monthly plans: Basic $9.99, Pro $29.99 and Ultra $99.99. You can subscribe directly here for an instant API key, or on RapidAPI, Apify and API.market.
Yes — upgrade here. Upgrades apply immediately on your existing subscription and API key; Stripe bills only the prorated difference for the rest of the cycle. You never pay for two plans at once, and your key never changes.
Free: live scores & current matches, players, fixtures and your usage — 30 requests/min, 1,000/day; no history, odds, model fields or WebSocket. Basic ($9.99) adds historical match results and the point-by-point match tape — 60/min, 10,000/day. Pro ($29.99) adds match events, match-winner market odds and bulk monthly history packages — 300/min, 100,000/day. Ultra ($99.99) adds the AI win-probability model fields and analysis, the WebSocket live feed and webhooks — 600/min, 500,000/day.
The point-by-point tape spans 43 monthly periods, January 2023 through July 2026, across ATP, WTA, Challenger and ITF — singles and doubles. That is 23,927,498 archived point-state rows over 164,457 of 166,690 completed matches, and it grows as the backfill runs. Bulk packages are published per calendar month with a sha256 manifest per file.
The ordered score state at each point of a completed match, with match metadata. Each match declares its own coverage, and the differences are real rather than cosmetic: from_start means we watched it live from 0-0 — every row carries a real timestamp, and our model's win-probability where it was computed (that stamp is best-effort, so where it was not, the field is null rather than guessed); partial means we picked it up mid-match; reconstructed means the point sequence came from a point-by-point feed rather than our own live observation, so those rows carry a null timestamp and no model fields. Nothing is ever synthesised from a final scoreline. The meta block on every response repeats that alongside raw_rows, unique_states and point_source, so you always know exactly what you are holding. Per-match tape reads come with Basic and above; bulk monthly packages come with Pro and above, or with a Historical Data API package purchase. There is no odds tape in the history product.
ATP, WTA, Challenger and ITF — both singles and doubles — from one arbitrated feed.
Yes. The Ultra plan includes a native WebSocket feed that pushes score updates the instant a point is played, so you never have to poll.
Low latency. Scores come from an arbitrated multi-source feed and update within a second or two of the point being played.
Send your API key as an Authorization: Bearer
A proprietary model's live win-probability for each player, with a confidence level and the key factors behind the call. It is available on the Ultra plan.
Yes — explore and test every endpoint in our public Postman workspace, and the /health endpoint needs no key at all.
Pick a plan, get an instant API key, and make your first call in minutes.