Skip to main content

What it streams

Metadata about which bookmakers are offering odds for a given fixture, and whether those odds are active, stale, suspended, or rotated. This stream complements the odds channel by giving you per-bookmaker status for each fixtureId.

Routing

  • Entity key: payload.fixtureId
  • Filters: sportIds, tournamentIds, fixtureIds, bookmakers
  • Access: determined by your apiKey
  • Bookmaker-gated: ✅ Yes

Payload structure


Example message


Critical fields for automated trading

staleOdds — odds freshness guarantee

If you are running automated trading or arbitrage strategies on top of OddsPapi, staleOdds is one of the most important fields you must check.
When staleOdds = true, the connection between OddsPapi and this bookmaker has been lost or interrupted. This means:
  • Odds you received earlier may no longer reflect the bookmaker’s current prices
  • No further updates can be guaranteed until the connection is restored
  • You should immediately pause any automated betting or arbitrage logic for this bookmaker
  • Treat all existing odds from this bookmaker as unvalidated until staleOdds returns to false
The flag is always keyed per fixture × bookmaker and set deliberately — lost contact (block, maintenance, downtime), unusual inactivity across the book, or a fixture mismapping. The same bookmakers map is also carried on the REST responses (/fixtures, /fixtures/odds, and related endpoints), so snapshot and stream always agree on staleness. Causes, fan-out behavior, and treatment in full: Bookmaker staleness. Recovery is automatic: when contact with the bookmaker is restored the flag returns to false, and because every odds update is full latest state, the next updates re-validate your store on their own — there is nothing to replay or reconcile manually. staleOdds is also distinct from suspended: suspended is the bookmaker’s own action on the fixture, while staleOdds means our view of the bookmaker is interrupted. Either can be true without the other, and both independently mean “do not trade this book right now”.
staleOddsResponseCode is deprecated: it exposed the HTTP status code (if any) seen during the staleness check — do not build new logic on it.

participantsRotated — home/away mapping

When participantsRotated = true, the bookmaker treats a different team as the home team than OddsPapi does. In other words, participant1 (home) and participant2 (away) are swapped at this bookmaker compared to the OddsPapi baseline fixture. This is critical for:
  • Moneyline / 1x2 markets — the “home” and “away” outcome meanings are reversed
  • Spread / handicap markets — the sign of the spread is flipped
  • Any automated strategy that maps outcomes by participant position rather than participant ID
If you build on top of OddsPapi, always check this flag and swap your participant mapping for this bookmaker when it is true.

Notes

  • If a bookmaker is not present in bookmakers, assume no current odds available for that fixture.
  • Use this channel as a pre-filter before processing any odds from the odds channel.
  • Combine staleOdds, suspended, and hasOdds to determine whether a bookmaker’s odds should be trusted at any given moment.