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