Free · 10k req/day · no card

Live tennis win
probabilities, from
a model that knows the surface.

A point-by-point Markov model with surface-specific serve stats, pressure score-state adjustments, fatigue, and momentum. One GET request returns live probabilities for every match on tour.

Get your free API key → Read the docs
↻ refreshes every 30s ◷ ~40ms p95 ◆ ATP · WTA singles
Live now updated 0s ago
serving GET /v1/live →

One endpoint

Plain JSON. Nothing to install.

Authenticate with a key in the query string and poll /v1/live. Every in-progress match comes back with both players' win probability, the live score, surface, and tournament.

  • ✓ No SDK — works with fetch, requests, curl
  • ✓ Stable match_id you can join on
  • ✓ CORS-open — call it from the browser

    

Inside the model

Not an Elo lookup. A point-by-point simulation.

Most "live odds" interpolate a pre-match number. We re-solve the match from the current score, every 30 seconds.

⬡
Surface-specific

Separate serve & return distributions for clay, grass, and hard — Świątek on clay isn't Świątek on grass.

◷
Pressure-adjusted

Point-win rates shift by score state. Break points and 40-0 are not the same coin flip.

▽
Fatigue-aware

Discounts serve hold for long matches and quick turnarounds between rounds.

⇡
Score-state aware

Solves forward from the live set, game, and point score — 40-0 up a break is not the same as 40-0 down.

Pipeline
scrape score → surface serve % p,q → Markov solve → p1 / p2 win prob

The feed, rendered

What you'd build in an afternoon

updated 0s ago

Ship a live-odds feature today.

Generate a key, copy four lines, and you're polling live win probabilities. Free tier is 10,000 requests a day.

Get your free API key → Browse docs