Basic
For results dashboards and match research.
- Everything in Free, plus:
- Historical match results (completed matches)
- Point-by-point match tape, per match
REST access. Market odds start at Pro.
Point-by-point scores, prices and win-probability for your next dashboard, model or app. ATP, WTA, Challenger and ITF, through one REST + WebSocket API.
No credit card · 100 requests/day on Free
{ "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" }
Scores are available on Free. The win-probability field requires Ultra.
Try live scores free. Choose a paid plan for the data and capacity your product needs.
Already have a key? Upgrade your existing key or open your portal.
For results dashboards and match research.
REST access. Market odds start at Pro.
For odds dashboards and data pipelines.
REST access. Streaming and model fields are on Ultra.
For live products and advanced analysis.
Cancel renewal anytime (your API key returns to Free when the paid plan ends) · Upgrade on the same key · Secure checkout with Stripe
Coverage varies by match and data field. Inspect historical coverage and check the API reference before choosing.
A History plan adds the point-by-point tape to a free API key without changing tier. For custom quotas, licensing or a dedicated feed, tell us what you are building.
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. It is shown with the number of samples behind it.
Live scores, historical match data, market odds and model outputs. Choose the access your project needs.
Sets, games, points, server and tiebreak state for every live match, arbitrated from multiple sources into one clean feed.
Score updates pushed over WebSocket as each point is scored, on a feed built for fan-out. 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 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 179,578 completed matches back to January 2023, plus results and player stats for backtesting. 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 45 monthly periods, January 2023 through September 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. Below the tape's floor sits the results archive (1968-2022): 1,485,752 ATP and WTA results with final score, seeds and ranks at the time. Per-match serve statistics run from 1991. It ends exactly where the tape begins, so no match is ever served from two datasets.
Counted September 14, 2026 over January 2023 → September 2026. The share is 179,578 of 187,832 completed matches on record.
| 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. We did not observe it ourselves. | 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. | n/a |
?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 instead of 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 /history/matches/{id} | Basic |
| GET /matches/{id}/statistics | Ultra |
| GET /markets/{id}/prices | Pro |
| GET /matches/{id}/analysis | Ultra |
| GET /rankings?as_of= | Ultra |
| GET /rally/matches/{id} | Ultra |
| WS /ws | Ultra |
# Verify connectivity, no API 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
Same data, same endpoints, same API key format, wherever you subscribe.
Subscribe here, billed monthly via Stripe. Your key is issued instantly, at the best price with no marketplace markup.
View plansThe largest API hub. One RapidAPI key across all your subscriptions there, 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. It has 24 read-only tools and is 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 24 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 the developers themselves, 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. It comes 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 hello@livetennisapi.com and we will link it here.
Four plans, billed monthly in USD. Free ($0): live and upcoming matches, scores, players, fixtures and tournaments at 30 requests a minute and 100 a day, instant key, no card. Basic ($9.99): adds completed results, the point-by-point record, the 1968-2022 results archive and head-to-head. Pro ($29.99): adds match events, market prices and ranking tables. Ultra ($99.99): adds AI win-probability, in-play statistics, rally construction and the streaming push feed. Subscribe directly here for an instant 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 API key never changes. Your base URL stays the same too. Only the tier's endpoints and limits change. Downgrades and cancellations are self-serve from the customer portal, with no call to book and no quote to wait for.
Free: live scores & current matches, players, fixtures and your usage at 30 requests/min and 100/day. No history, odds, model fields or WebSocket. Basic ($9.99) adds historical match results, the point-by-point match tape (GET /history/matches/{id}) and the results archive back to 1968. It also adds head-to-head (GET /h2h) and career aggregates, at 60/min and 1,000/day. Pro ($29.99) adds match events, match-winner market odds and bulk monthly history packages at 300/min and 10,000/day. Ultra ($99.99) adds the AI win-probability model fields and analysis, plus per-match live statistics (aces, double faults, serve split, break points saved and converted). It adds shot-level match-charting stats too: serve placement, return depth, net & serve-and-volley, clutch break/game/set-point serving. Head-to-head stat splits, the WebSocket live feed and webhooks are on Ultra as well, at 600/min and 500,000/day.
Two layers, two depths. Results go back to 1968: the results archive holds 1,485,752 ATP and WTA results from 1968 through 2022, with yearly bulk packages. Each result carries the final score, seeds, each player's rank at the time, and round and draw metadata. Per-match serve statistics run from 1991. The point-by-point tape takes over exactly where the archive ends. It spans 45 monthly periods, January 2023 through September 2026, across ATP, WTA, Challenger and ITF, singles and doubles. That is 27,381,531 archived point-state rows over 179,578 of 187,832 completed matches, growing as the backfill runs. Bulk packages are published per calendar month (tape) and per year (archive), each with a sha256 manifest per file.
Yes, on ULTRA, and it is a different product from the tape. The tape gives the ordered score states of the match. Rally construction gives how the point was played. That is the serve direction, every stroke with its wing, direction and depth, the rally length and how the point ended. 11,822 charted matches (7,565 men's back to 1960, 4,257 women's), 1,875,132 points. Read one match at GET /rally/matches/{id} or take the whole thing as bulk yearly files. Charting is human work, so coverage runs deep on the biggest events and thin elsewhere. GET /rally/matches is the authoritative list of what exists.
Yes, on ULTRA, at three depths. Per live or completed match, GET /matches/{id}/statistics gives aces, double faults, the first/second-serve split, and break points saved and converted. A completed match keeps its final figures after it ends. Across a pairing, GET /h2h adds serve/return/break-point aggregates. The deepest layer, GET /charting/players, gives shot-level career stats from the Match Charting Project over 11,822 charted matches back to 1960. That covers serve placement (deuce/ad × wide/body/T), return depth and outcomes, and net and serve-and-volley conversion. Clutch break/game/set-point serving and returning is in there too. Coverage is curated and majors-heavy, and every response reports its matches_charted sample.
The ordered score states of a completed match, with match metadata. Each match declares its own coverage, and the values mean different things. from_start means we watched it live from 0-0. Every row carries a real timestamp, plus our model's win-probability where it was computed. That stamp is best-effort: where it was not computed the field is null, never guessed. partial means we picked it up mid-match. reconstructed means the point sequence came from a point-by-point feed instead of our own live observation. 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. Completeness is measured on every match. meta.points carries a measured verdict on every tape read. Where that verdict is complete, ?points=complete serves the sequence in full: the score after each point, with server and point winner. ?points_complete=true filters the match list to measured-complete tapes. As of September 21, 2026, 60.5% of completed matches since 2023 are measured point-complete. The rule got stricter on 21 September 2026: a game the tape skips now counts against it. Refills and the nightly re-join raise the share from there. 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, singles and doubles, from one arbitrated feed. Every match declares how it was recorded so you can filter to the rows you trust. Live in-play statistics (aces, double faults, points and break points) cover every tour including ITF. The serve split covers ATP, WTA and Challenger. Tennis only: not table tennis, padel or pickleball.
Yes. The Ultra plan pushes each score update as it is scored, so you never have to poll. Continuous streaming runs on the push feed (GET /ws-token), built to fan out to thousands of subscribers. A native WebSocket is still there for quick console tests. Both carry per-point event frames on covered matches, with GET /matches/{id}/points for catch-up. Each match declares its own pbp_coverage (point where a point vendor covers it, game otherwise), so you always know which cadence you are subscribed to.
Scores come from an arbitrated multi-source feed. We do not quote a latency number you could not check for yourself. Instead, every push frame carries published_at next to the event timestamp. published_at minus timestamp is our processing time, and your receive time minus published_at is transport. Measure it on your own connection.
Send your API key on every request to https://api.livetennisapi.com/api/public/v1 as an Authorization: Bearer <key> header, or as X-API-Key. Keys look like twjp_… and are issued instantly when you subscribe. The free API key needs no card. A missing or wrong API key returns 401. A call to an endpoint above your plan returns an upgrade_required error instead. It names the plan that includes the endpoint, so a client can tell the two apart.
A proprietary model's live win-probability for each player: a probability between 0 and 1, recalculated as points are played. Each call comes with a confidence level, the model's thesis and the factors behind it. It is available on the Ultra plan. Match rows carry has_analysis, so a client can check whether a match has a thesis before requesting it. A match without one returns nothing, never a guess.
Yes. The free tier is the trial, and it never expires. It covers live and upcoming matches, scores, players, fixtures and tournaments at 30 requests a minute and 100 a day. The key is instant and needs no card. The full API reference is readable without a key, and the /health endpoint needs no key at all. Every endpoint can be explored in our public Postman workspace. Upgrade only when your own workload tells you the data is worth it.
Pick a plan, get an instant API key, and make your first call in minutes.