Skip to main content

What it streams

Realtime odds updates for outcomes within markets, scoped to a specific fixtureId. 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 same oddsId 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
What is not delivered: intermediate ticks superseded within the same window. Treat every message as a state update, not a ledger.
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:
Typical meta contents may include:
  • Orderbook ladders (back / lay)
  • Liquidity hints
  • Internal sizing or tick metadata
Guaranteed core. For every exchange and prediction market, 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=false or marketActive=false as hard stops
  • Preserve unknown fields in meta to remain forward-compatible