Tennis odds API: match-winner market prices
Live Tennis API returns prediction-market match-winner quotes. These are probability-like values between 0 and 1, not bookmaker odds or an official line. Prices can lag live scores.
A price of 0.62 reads as an implied probability of 62 percent, and decimal odds are 1 divided by the price. That conversion describes the quoted value. It does not turn a market quote into a forecast or a promise about the match result.
Reading a price
The side field identifies the player's outcome: 1 for the first
player and 2 for the second. Our match-to-market mapping sets this order.
Do not infer it from how a venue displays its players.
bid, ask, mid and spread
describe the quote for that side. Preserve null values in your application. A missing bid or
ask does not mean a price of zero.
price_source names the feed category. timestamp is when
we observed the quote in UTC, not when a venue published it.
Read synthetic before treating the spread as an observed order book.
Pre-match ticks can be synthetic. They use the observed midpoint with estimated
bid and ask values, and carry synthetic: true by design.
A false value means real top-of-book data. A null value means the origin is unknown.
Synthetic or unknown ticks should not be treated as an executable book.
Ticks follow market events. Quiet markets write nothing, and a stream outage can produce synthetic fallback quotes. The score feed and price feed have separate observations, so a newer score does not imply a newer price.
Price endpoints on PRO and up
All four endpoints require the PRO plan or above. Choose the response shape that fits your application, then check pricing for access and limits.
GET /markets?match_id=returns match-winner markets for a match.GET /markets/{match_id}/prices?limit=returns the market and recent price ticks per side.GET /matches/{id}/prices?limit=&minutes=&cursor=returns bare price ticks, newest first.GET /history/matches/{id}/prices?after_seq=&limit=returns per-point price history in ascending point order.
Use cursor paging to read older ticks for a finished match. The minutes filter looks back from now. A match without a mapped market has no price ticks, and the price endpoints return a no-market response.
This request uses a match ID. Set the environment variable KEY to your API key. The response below reproduces the example in the documentation.
curl -H "X-API-Key: $KEY" \
"https://api.livetennisapi.com/api/public/v1/markets/17464/prices?limit=3"
{
"id": 12986,
"question": "Liege: Andres Santamarta vs Gilles Arnaud Bailly",
"status": "active", "volume": 148097.41, "liquidity": 298353.79,
"end_date": null,
"prices": [
{ "side": 2, "bid": 0.999, "ask": null, "mid": 0.9995, "spread": null,
"price_source": "prediction_market", "synthetic": false,
"timestamp": "2026-07-06T19:45:58Z" },
{ "side": 1, "bid": null, "ask": 0.001, "mid": 0.0005, "spread": null,
"price_source": "prediction_market", "synthetic": false,
"timestamp": "2026-07-06T19:45:58Z" }
]
}
Measured market coverage
Measured 2026-09-23: share of singles matches completed in the prior 30 days with a mapped market. These shares describe that window, not a guarantee for a future fixture.
| Tour | Share |
|---|---|
| WTA | 94.1% |
| Challenger | 90.5% |
| ITF | 79.1% |
| ATP | 71.9% |
What this is not
These are prediction-market quotes, not bookmaker odds and not an official line. Prices can lag live scores. Match results describe the tennis outcome, while each market's rules determine settlement.
Read the tennis odds documentation for response details and the tennis odds API guide for a longer walkthrough. Our prediction markets page connects match state with market rules. Start with a free API key to inspect live scores, then choose PRO or above for prices.
Last updated 13 November 2026.