What it streams
Metadata per bookmaker describing whether a bookmaker offers odds for a given future, and whether those odds are active, stale, or suspended. This is the future equivalent of thebookmakers channel for fixtures.
Routing
- Entity key:
payload.futureId - Filters:
sportIds,tournamentIds,futureIds,bookmakers - Access: determined by your
apiKey - Bookmaker-gated: ✅ Yes
Payload structure
| Field | Type | Description |
|---|---|---|
futureId | string | The future this update applies to |
bookmakers | object | Map of <bookmaker> → metadata object |
bookmakers.<bk>.bookmaker | string | Bookmaker slug (e.g. "stake", "pinnacle") |
bookmakers.<bk>.bookmakerFutureId | string | null | Optional bookmaker-side identifier for this future |
bookmakers.<bk>.futurePath | string | null | Optional deeplink or path to the future at the bookmaker |
bookmakers.<bk>.hasOdds | boolean | True if the bookmaker currently offers odds |
bookmakers.<bk>.staleOdds | boolean | True if odds haven’t been updated recently |
bookmakers.<bk>.suspended | boolean | True if the bookmaker has suspended this future |
bookmakers.<bk>.meta | object | null | Optional bookmaker-specific metadata |
bookmakers.<bk>.updatedAt | string | Last update timestamp (ISO 8601) |
Example message
Notes
- Odds data itself is streamed via
oddsFutures - If a bookmaker is missing from
bookmakers, assume no current odds - Use this channel to:
- detect stale or suspended futures
- decide when to ignore or invalidate
oddsFuturesdata
- Semantics are intentionally identical to
bookmakers(fixture-level), just scoped tofutureId