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 theodds 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
| Field | Type | Description |
|---|---|---|
fixtureId | string | The fixture this update applies to |
bookmakers | object | Map of <bookmaker> → metadata object |
bookmakers.<bk>.bookmaker | string | Bookmaker slug (e.g. "stake", "pinnacle") |
bookmakers.<bk>.bookmakerFixtureId | string | null | Optional bookmaker-side ID (may be a slug or compound string) |
bookmakers.<bk>.fixturePath | string | null | Optional bookmaker path or UI route (if supported) |
bookmakers.<bk>.hasOdds | boolean | True if the bookmaker currently offers any odds |
bookmakers.<bk>.staleOdds | boolean | True if odds haven’t updated recently |
bookmakers.<bk>.suspended | boolean | True if this bookmaker’s odds are suspended |
bookmakers.<bk>.participantsRotated | boolean | True if participants have been rotated compared to baseline |
bookmakers.<bk>.meta | object | null | Optional metadata (bookmaker-specific) |
bookmakers.<bk>.updatedAt | string | Last update timestamp (ISO 8601) |
Example message
Notes
- This channel helps identify inactive/stale bookmaker data before odds processing.
- If a bookmaker is not present in
bookmakers, you should assume no current odds available for that fixture. participantsRotated = trueusually means team sides were reversed or mapped inconsistently across books.