Skip to main content

What it streams

Metadata about long-term or season-based betting markets (called “futures”), scoped to a futureId. Includes tournament/season mapping, market metadata, timing window, and external provider IDs.

Routing

  • Entity key: payload.futureId
  • Filters: sportIds, tournamentIds, futureIds
  • Access: live vs pregame determined by your apiKey

Payload fields

FieldTypeDescription
futureIdstringUnique identifier for the future
statusobjectLive/pregame status
status.livebooleanWhether the future is currently live
status.statusIdnumber | nullOptional status code
status.statusNamestring | nullOptional status label (e.g. "Pre-Game", "Live")
sportobjectSport metadata
sport.sportIdnumberUnique sport ID
sport.sportNamestringHuman-readable sport name
tournamentobjectTournament metadata
tournament.tournamentIdnumberUnique tournament ID
tournament.tournamentNamestringTournament name
tournament.categoryNamestringGeographic/organizational grouping
seasonobjectSeason metadata
season.seasonIdnumber | nullSeason ID (nullable)
season.seasonNamestring | nullSeason name
startTimenumberStart of the betting window (epoch seconds UTC)
endTimenumberEnd of the betting window (epoch seconds UTC)
marketobject | nullMarket metadata (nullable)
market.marketIdnumber | nullOptional market ID
market.marketNamestring | nullOptional market name (e.g. "Outright Winner")
market.marketTypestring | nullOptional market type code
market.playerMarketboolean | nullTrue if this is a player-specific market
market.participantMarketboolean | nullTrue if this is a participant/team market
externalProvidersobjectMapped external provider IDs
externalProviders.betradarIdnumber | nullBetradar ID
externalProviders.flashscoreIdstring | nullFlashscore ID
externalProviders.opticoddsIdstring | nullOpticOdds ID
externalProviders.polymarketIdstring | nullPolymarket ID
externalProviders.kalshiIdstring | nullKalshi ID
externalProviders.sofascoreIdnumber | nullSofascore ID
bookmakersobjectOdds availability status (see bookmakersFutures)

Example: future metadata

{
  "channel": "futures",
  "type": "UPDATE",
  "payload": {
    "futureId": "id11047437137982",
    "status": {
      "live": true,
      "statusId": 1,
      "statusName": "Live"
    },
    "sport": {
      "sportId": 11,
      "sportName": "Basketball"
    },
    "tournament": {
      "tournamentId": 47437,
      "tournamentName": "NBL",
      "categoryName": "China"
    },
    "season": {
      "seasonId": 137982,
      "seasonName": "NBL 25/26"
    },
    "startTime": 1766188800,
    "endTime": 1777334399,
    "market": {
      "marketId": null,
      "marketName": null,
      "marketType": null,
      "playerMarket": null,
      "participantMarket": null
    },
    "externalProviders": {
      "betradarId": 137982,
      "flashscoreId": null,
      "opticoddsId": null,
      "polymarketId": null,
      "kalshiId": null,
      "sofascoreId": null
    },
    "bookmakers": {}
  },
  "ts": 1766939800000,
  "entryId": "1766939800000-999"
}

Notes

  • Odds are streamed separately via the oddsFutures channel
  • Use futureId to join with:
    • oddsFutures (for prices)
    • bookmakersFutures (for status per bookmaker)
  • Most market fields may be null for legacy or non-structured markets