Live Tennis API
Live Tennis API

Point-by-point scores, prices and win-probability

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.

Sub-second live feed REST + WebSocket UTC · JSON · OpenAPI 3.1
GET /matches/18042/score

  "sets" 1 0
  "games" 6435
  "points" "30" "40"
  "server" 1
  "is_tiebreak" false
  "win_probability_p1" 0.62
  "timestamp" "2026-07-18T10:41:07Z"


Also available on RapidAPI Apify API.market Postman
See it running

Fifteen minutes of the live board, unedited

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 Live Tennis API board: live matches with our score commit beside the market line, each on its own clock.

Open the full recording page

What you get

One feed for the whole pro tour

The data most providers give you — plus the live model analysis they don't.

01

Live scores, sub-second

Sets, games, points, server and tiebreak state for every live match — arbitrated from multiple sources into one clean feed.

02

Push-feed streaming

Score updates pushed over WebSocket the instant a point is played, on a feed built to fan out to thousands of subscribers. Subscribe to one match or the whole slate; no polling, no rate-limit juggling.

03

AI win-probability

A proprietary live model: the favored side, a calibrated probability, its confidence and the key factors behind the call.

04

Match-winner prices

Bid, ask and mid per player with history — line the market up against the data and the model in a single call.

05

Players & history

Bios, rankings, ratings and season form; upcoming fixtures and completed results with the winner resolved.

06

Clean & documented

Predictable JSON, UTC timestamps, an OpenAPI 3.1 spec and drop-in REST + WebSocket clients. Built to integrate in an afternoon.

Products

More than the live feed

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.

BPBreak-point Alerts

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 Alerts
HHistorical Tennis Data API

The point-by-point tape over 171,323 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 API
DEVDeveloper Portal

Create an account, get an instant API key and manage your subscription — with the full REST + WebSocket reference a click away.

Sign up API docs
Historical data

Point by point, back to 2023

The point-by-point tape spans 44 monthly periods, January 2023 through August 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, ranks at the time and per-match serve statistics from 1991 — ending exactly where the tape begins, so no match is ever served from two datasets.

26,470,694Archived point-state rows
171,323Matches carrying a tape
44Monthly periods
98%Of completed matches
Per-match coverage, declared on every response
ValueWhat it meansTimestamps
from_startWatched live from 0-0 — every row carries a real timestamp.real
partialPicked up mid-match — observed from that point onward.real
reconstructedPoint sequence taken from a point-by-point feed rather than our own observation.null
reconstructed_partialA reconstruction that does not cover the whole match — it opens after 0-0, or stops before the official final score.null
noneNo tape for this match.
?Filter to what you trust
?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.

{}Every response declares itself
"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 API
The API

Predictable, and quick to wire up

Clean REST endpoints and a WebSocket stream, all under one base URL. Authenticate with a bearer token and you are live.

GET /matches?status=liveFree
GET /matches/{id}/scoreFree
GET /players/{id}Free
GET /history/matchesBasic
GET /history/matches/{id}Basic
GET /matches/{id}/statisticsUltra
GET /markets/{id}/pricesPro
GET /matches/{id}/analysisUltra
GET /rankings?as_of=Ultra
GET /rally/matches/{id}Ultra
WS /wsUltra
# 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

Pricing

Straightforward pricing

Subscribe directly for the best price and an instant key. Cancel anytime.

Start free — no card

For trying the API and hobby dashboards: live scores & current matches, players, fixtures and your usage. 30 req/min · 100/day. Completed-match history is not included — it starts at Basic, or a History plan adds the point-by-point tape to a free key without changing tier. Market odds, model win-probability and the WebSocket feed are on the paid plans.

BASIC
$9.99/mo
$8.25/mo
billed annually — $99/yr
≈ 33¢ per 1,000 requests
For match results & the point-by-point story.
  • Everything in Free, plus:
  • Historical match results (completed matches)
  • Point-by-point match tape, per match
  • 60 req/min · 1k/day
Most popular PRO
$29.99/mo
$24.92/mo
billed annually — $299/yr
≈ 10¢ per 1,000 requests — 3× cheaper per call than Basic
For odds dashboards & data pipelines.
  • Everything in Basic, plus:
  • Match events & timeline
  • Match-winner market odds
  • Bulk history packages (monthly downloads)
  • 300 req/min · 10k/day
ULTRA
$99.99/mo
$83.25/mo
billed annually — $999/yr
≈ 0.7¢ per 1,000 requests
For trading bots & real-time products.
  • Everything in Pro, plus:
  • AI win-probability & analysis
  • Live streaming push feed (WebSocket) & webhooks
  • Live in-play match statistics — aces, double faults, serve split, hold/break
  • As-of-match rankings (ATP/WTA, ITF, UTR) for backtests
  • Shot-by-shot rally construction — serve direction, every stroke, rally length (11,638 charted matches, both tours, back to 1960)
  • Shot-level serve/return charting stats — serve placement, return depth, net & serve-and-volley, clutch break/game/set-point serving & returning
  • 600 req/min · 500k/day

Cancel anytime · Upgrades prorated in place — never two plans · Payments by Stripe, we never see your card.

Beyond ULTRA — custom quotas, SLAs, or a dedicated feed: [email protected].

Already have a key — free or paid? Upgrade in place: upgrade here. Prorated automatically, same key, no second plan.

Buy it your way

Direct, or on the marketplace you use

Same data, same endpoints, same key format — wherever you subscribe.

LTDirect

Subscribe here, billed monthly via Stripe. Your key is issued instantly — best price, no marketplace markup.

View plans
RRapidAPI

The largest API hub — one key across your RapidAPI subscriptions, with a usage dashboard included.

View on RapidAPI
AApify

Run it as a pay-per-result Actor that streams scores and analysis straight into an Apify dataset.

View on Apify
MAPI.market

Subscribe through MagicAPI with unified billing and a single gateway key.

View on API.market
PPostman

Explore and test every endpoint in our public Postman workspace before you commit a line of code.

Explore in Postman
AIMCP server

Plug live tennis data straight into Claude, Cursor or any AI agent — 12 read-only tools, listed in the official MCP Registry.

Connect via MCP

Official client libraries

Install 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.

PYPython

Sync and async clients over every endpoint, a reconnecting WebSocket feed, and a livetennis CLI. Fully typed.

pip install livetennisapi

Package Source
TSJavaScript / TypeScript

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

Package Source
AIMCP server

Give Claude, Cursor or any MCP client 12 read-only tools over live tennis data. Listed in the official MCP Registry.

npx livetennisapi-mcp

Package Source

Full API reference at docs.livetennisapi.com · OpenAPI specification on GitHub.

Built on Live Tennis API

Independent tutorials and tools from developers using the API. Written by them, not us — including where they found the limits.

BOTEvent-driven trading bots

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 it
PYBeginner live scores dashboard

A step-by-step Python and Flask build for a personal live scoreboard. Written for absolute beginners — no prior API experience assumed.

Read it
WEBTennis Trader Board

A free hosted board built on the API, so you can watch live scores update before deciding whether you want a key at all.

Read it

Built something? Tell us at [email protected] and we will link it here.

FAQ

Answers before you build

How much does the Live Tennis API cost?

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.

Can I upgrade my plan mid-cycle?

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.

What data do I get on each plan?

Free: live scores & current matches, players, fixtures and your usage — 30 requests/min, 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}), the results archive back to 1968, head-to-head (GET /h2h) and career aggregates — 60/min, 1,000/day. Pro ($29.99) adds match events, match-winner market odds and bulk monthly history packages — 300/min, 10,000/day. Ultra ($99.99) adds the AI win-probability model fields and analysis, per-match live statistics (aces, double faults, serve split, break points saved and converted), shot-level match-charting stats (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 — 600/min, 500,000/day.

How far back does the historical data go?

Two layers, two depths. Results go back to 1968: the results archive holds 1,485,752 ATP and WTA results from 1968 through 2022 — final score, seeds, each player's rank at the time, round and draw metadata, and per-match serve statistics from 1991 — with yearly bulk packages. The point-by-point tape then takes over exactly where the archive ends: 44 monthly periods, January 2023 through August 2026, across ATP, WTA, Challenger and ITF — singles and doubles, 26,470,694 archived point-state rows over 171,323 of 174,969 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.

Do you have shot-by-shot rally data?

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 — serve direction, every stroke with its wing, direction and depth, the rally length and how the point ended. 11,638 charted matches (7,565 men’s back to 1960, 4,073 women’s), 1,850,490 points. Read one match at GET /rally/matches/{id} or take the whole thing as bulk yearly files. Charting is human work, so coverage is deep rather than universal and is concentrated on the biggest events — GET /rally/matches is the authoritative list of what exists.

Do you have deep serve and return statistics — aces, break points, serve placement?

Yes, on ULTRA, at three depths. Per live/completed match, GET /matches/{id}/statistics gives aces, double faults, the first/second-serve split, and break points saved and converted — and a completed match keeps its final figures, not just while it is live. Across a pairing, GET /h2h adds serve/return/break-point aggregates. And the deepest layer, GET /charting/players, gives shot-level career stats from the Match Charting Project — serve placement (deuce/ad × wide/body/T), return depth and outcomes, net and serve-and-volley conversion, and clutch break/game/set-point serving and returning — over 11,638 charted matches back to 1960. Coverage there is curated, majors-heavy, and every response reports its matches_charted sample.

What is in the point-by-point tape?

The ordered score states 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. Completeness is measured per match, not assumed: meta.points carries a measured verdict on every tape read, ?points=complete serves the sequence in full — score after each point, with server and point winner — where that verdict is complete, and ?points_complete=true filters the match list to measured-complete tapes. As of August 19, 2026, 75.0% of completed matches since 2023 are measured point-complete, and running backfills keep raising that share. 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.

Which tours and formats are covered?

ATP, WTA, Challenger and ITF — both singles and doubles — from one arbitrated feed.

Is there a WebSocket / live stream?

Yes. The Ultra plan streams score updates the instant a point is played, 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 remains available 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.

How fresh are the live scores?

Low latency. Scores come from an arbitrated multi-source feed and update within a second or two of the point being played.

How do I authenticate?

Send your API key as an Authorization: Bearer header, or as X-API-Key. Keys are issued instantly when you subscribe.

What is the AI win-probability?

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.

Can I try it before paying?

Yes — explore and test every endpoint in our public Postman workspace, and the /health endpoint needs no key at all.

Start building on live tennis

Pick a plan, get an instant API key, and make your first call in minutes.