What it streams
Realtime odds updates for outcomes within markets, scoped to a specificfixtureId.
Odds are grouped by bookmaker and keyed by a unique oddsId per outcome.
Each entry represents a single oddsId (one price for one outcome).
Routing
- Entity key:
payload.fixtureId - Filters:
sportIds,tournamentIds,fixtureIds,bookmakers - Access: determined by your
apiKey - Bookmaker-gated: ✅ Yes
Delivery semantics
The odds channel delivers conflated state on a fixed ~10 ms batching window: if multiple updates for the sameoddsId occur within one window, only the newest is sent.
- No state is lost — the final value of every price move is always delivered
- Bounded staleness — a delivered price is never more than one batching window behind our observation of the bookmaker
- The window is a fixed performance parameter, not a load-shedding mechanism
Need every price move or the closing line? For full tick-level movement use Historical Odds and for opening/closing prices use CLV.
Payload structure
oddsId:outcome object (full schema)
Each odds entry is an outcome, with the following fields:Notes on timestamps
Each update carries the full delivery chain:changedAt − bookmakerChangedAt is the observation delay for that update. Per-bookmaker freshness bounds are published on GET /bookmakers — see Latency and freshness.
Limits
limit is the maximum accepted stake at the current price — for a trading system, size-at-price matters as much as the price itself. OddsPapi normalizes limits across books and carries them for close to every sharp book (see "limit": 19354 on Pinnacle below). Limit changes are delivered as regular odds updates.
Advanced metadata (meta)
Some bookmakers (e.g. prediction markets / exchanges) provide rich metadata.
Example:
meta contents may include:
- Orderbook ladders (
back/lay) - Liquidity hints
- Internal sizing or tick metadata
meta.back and meta.lay are uniform: arrays of { price, size }, best price first, with identical semantics across venues. This shape is stable.
Venue extras. Additional meta keys are venue-specific and additive — preserve unknown keys. The back / lay core will not be removed or repurposed.
One venue,
betfair-ex, still uses a venue-specific meta shape. It will be migrated to the uniform back / lay core in a future release.Example: traditional bookmaker odds
Example: prediction market odds (extended fields)
Implementation guidance
- Always key storage by
- Group outcomes by
marketId(see Concepts) for:- arbitrage detection
- overround calculations
- probability normalization
- Treat
active=falseormarketActive=falseas hard stops - Preserve unknown fields in
metato remain forward-compatible