Integration GuidesDocs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

Tracking Futures Odds

This integration scenario retrieves futures (outright) odds: long-term markets such as championship winners, division winners, and season awards, using the Competition Futures and Category Futures feeds.

This scenario is commonly used to:

  • Display championship and division winner odds through a season
  • Compare futures prices across sportsbooks
  • Track how title odds drift from their opening prices
  • Power season-outlook and award-race content


Overview

Futures markets differ from prematch markets in three ways:

  • They are identified by sr:iscreen_market: IDs (a different ID space from the sr:market: prematch IDs)
  • Each market carries a start_date and end_date window and an is_live flag
  • Outcomes are typed competitor, carrying competitor_id and competitor_name inline rather than a home or away side

Sport Competitions (futures flag) → Competition Futures (paged) → re-poll



Relevant Feeds

FeedPurpose
BooksThe bookmakers configured for your key
Sport CompetitionsCompetitions with futures coverage (futures flag)
Sport CategoriesCategory IDs for category-scoped pulls
Competition FuturesOutright markets for a competition
Category FuturesOutright markets for a whole category


High-Level Workflow

Futures LoopConfirm coverage, page through the markets, re-poll on a schedule
CoverageSport Competitionsfilter futures=true
Pull (paged)Competition Futures→walk start in steps of 5 until X-Result is below 5
Category (optional)Category Futuresbatches every competition in the category
Refreshre-poll a few times per daythis package has no change log feed
Cadences come from Update Frequencies; futures prices move on news cycles rather than by the minute.


Integration Steps


1. Find Competitions with Futures

The futures flag on Sport Competitions marks coverage. In this American Football response, note that the NFL carries futures while the NFL Preseason does not:

GET https://api.sportradar.com/oddscomparison-futures/trial/v2/en/sports/sr:sport:16/competitions.json
x-api-key: YOUR_API_KEY
{
  "generated_at": "2026-07-20T16:30:34+00:00",
  "competitions": [
    {
      "id": "sr:competition:31",
      "name": "NFL",
      "gender": "men",
      "markets": true,
      "futures": true,
      "player_props": true,
      "category": {
        "id": "sr:category:43",
        "name": "USA",
        "country_code": "USA"
      }
    },
    {
      "id": "sr:competition:233",
      "name": "NFL Preseason",
      "gender": "men",
      "markets": true,
      "futures": false,
      "player_props": false,
      "category": {
        "id": "sr:category:43",
        "name": "USA",
        "country_code": "USA"
      }
    },
    {
      "id": "sr:competition:27625",
      "name": "NCAA Division I, FBS Post Season",
      "gender": "men",
      "markets": false,
      "futures": true,
      "player_props": false,
      "category": {
        "id": "sr:category:43",
        "name": "USA",
        "country_code": "USA"
      }
    },
    {
      "id": "sr:competition:27653",
      "name": "NCAA, Regular Season",
      "gender": "men",
      "markets": true,
      "futures": true,
      "player_props": false,
      "category": {
        "id": "sr:category:43",
        "name": "USA",
        "country_code": "USA"
      }
    }
  ]
}

2. Pull the Competition's Futures

Competition Futures returns the outright markets under a markets root key. This AFC conference winner market is trimmed to one book and four outcomes:

GET https://api.sportradar.com/oddscomparison-futures/trial/v2/en/competitions/sr:competition:31/futures.json
x-api-key: YOUR_API_KEY
{
  "generated_at": "2026-07-20T16:33:20+00:00",
  "markets": [
    {
      "id": "sr:iscreen_market:2757",
      "name": "nfl - afc - conference",
      "is_live": false,
      "books": [
        {
          "id": "sr:book:17324",
          "name": "MGM",
          "removed": false,
          "external_sport_event_id": "18968586",
          "external_market_id": "1454017800",
          "outcomes": [
            {
              "id": "sr:outcome:10001",
              "type": "competitor",
              "competitor_id": "sr:competitor:4413",
              "competitor_name": "Baltimore Ravens",
              "odds_decimal": "6.000",
              "odds_american": "+500",
              "odds_fraction": "5/1",
              "open_odds_decimal": "6.000",
              "open_odds_american": "+500",
              "open_odds_fraction": "5/1",
              "external_outcome_id": "-207617161",
              "removed": false
            },
            {
              "id": "sr:outcome:10001",
              "type": "competitor",
              "competitor_id": "sr:competitor:4376",
              "competitor_name": "Buffalo Bills",
              "odds_decimal": "6.000",
              "odds_american": "+500",
              "odds_fraction": "5/1",
              "open_odds_decimal": "5.500",
              "open_odds_american": "+450",
              "open_odds_fraction": "9/2",
              "external_outcome_id": "-207617160",
              "removed": false
            },
            {
              "id": "sr:outcome:10001",
              "type": "competitor",
              "competitor_id": "sr:competitor:4422",
              "competitor_name": "Kansas City Chiefs",
              "odds_decimal": "8.500",
              "odds_american": "+750",
              "odds_fraction": "15/2",
              "open_odds_decimal": "8.500",
              "open_odds_american": "+750",
              "open_odds_fraction": "15/2",
              "external_outcome_id": "-207617157",
              "removed": false
            },
            {
              "id": "sr:outcome:10001",
              "type": "competitor",
              "competitor_id": "sr:competitor:4429",
              "competitor_name": "Los Angeles Chargers",
              "odds_decimal": "9.000",
              "odds_american": "+800",
              "odds_fraction": "8/1",
              "open_odds_decimal": "9.250",
              "open_odds_american": "+825",
              "open_odds_fraction": "33/4",
              "external_outcome_id": "-207617159",
              "removed": false
            }
          ]
        }
      ],
      "start_date": "2026-09-10",
      "end_date": "2027-02-14"
    }
  ]
}
<?xml version="1.0" ?>
<competition_futures xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.sportradar.com/sportsapi/oddscomparison-futures/v2" generated_at="2026-07-20T16:33:23+00:00" xsi:schemaLocation="http://schemas.sportradar.com/sportsapi/oddscomparison-futures/v2 https://schemas.sportradar.com/sportsapi/oddscomparison-futures/v2/schemas/competition_futures.xsd">
  <markets>
    <market id="sr:iscreen_market:2737" name="nfl - afc - division south" is_live="false" start_date="2026-09-10" end_date="2027-02-14">
      <books>
        <book id="sr:book:17324" name="MGM" removed="false" external_sport_event_id="18968586" external_market_id="1454017813">
          <outcomes>
            <outcome id="sr:outcome:10001" type="competitor" competitor_id="sr:competitor:4324" competitor_name="Houston Texans" odds_decimal="2.200" odds_american="+120" odds_fraction="6/5" open_odds_decimal="2.600" open_odds_american="+160" open_odds_fraction="8/5" external_outcome_id="-207617104" removed="false"/>
            <outcome id="sr:outcome:10001" type="competitor" competitor_id="sr:competitor:4386" competitor_name="Jacksonville Jaguars" odds_decimal="3.100" odds_american="+210" odds_fraction="21/10" open_odds_decimal="2.750" open_odds_american="+175" open_odds_fraction="7/4" external_outcome_id="-207617105" removed="false"/>
            <!-- ... additional outcomes omitted for brevity ... -->
          </outcomes>
        </book>
        <!-- ... additional books omitted for brevity ... -->
      </books>
    </market>
    <!-- ... additional markets omitted for brevity ... -->
  </markets>
</competition_futures>

Each outcome is a competitor: match competitor_id across books to compare a team's title price, and against the sr:competitor: IDs used across the other odds APIs.


⚠️

Futures pages are small: five markets per page

Competition Futures and Category Futures cap limit at 5. The NFL response reports X-Max-Results: 90, so the full board is 18 pages. Walk start in increments of five until X-Result drops below five:


GET https://api.sportradar.com/oddscomparison-futures/trial/v2/en/competitions/sr:competition:31/futures.json?start=5
x-api-key: YOUR_API_KEY
{
  "generated_at": "2026-07-20T16:37:13+00:00",
  "markets": [
    {
      "id": "sr:iscreen_market:3904",
      "name": "nfl - nfc - conference",
      "is_live": false,
      "books": [
        {
          "id": "sr:book:17324",
          "name": "MGM",
          "removed": false,
          "external_sport_event_id": "18968586",
          "external_market_id": "1454017802",
          "outcomes": [
            {
              "id": "sr:outcome:10001",
              "type": "competitor",
              "competitor_id": "sr:competitor:4387",
              "competitor_name": "Los Angeles Rams",
              "odds_decimal": "4.000",
              "odds_american": "+300",
              "odds_fraction": "3/1",
              "open_odds_decimal": "5.000",
              "open_odds_american": "+400",
              "open_odds_fraction": "4/1",
              "external_outcome_id": "-207617138",
              "removed": false
            },
            {
              "id": "sr:outcome:10001",
              "type": "competitor",
              "competitor_id": "sr:competitor:4430",
              "competitor_name": "Seattle Seahawks",
              "odds_decimal": "6.500",
              "odds_american": "+550",
              "odds_fraction": "11/2",
              "open_odds_decimal": "5.500",
              "open_odds_american": "+450",
              "open_odds_fraction": "9/2",
              "external_outcome_id": "-207617139",
              "removed": false
            }
          ]
        }
      ],
      "start_date": "2026-09-10",
      "end_date": "2027-02-14"
    }
  ]
}

The page-2 snippet is trimmed to its first market, showing the page boundary: page 1 ends in the AFC markets and page 2 opens with the NFC conference market.


3. A Mid-Season Example: World Series Odds

The same call against MLB (sr:competition:109) in July returns the live championship race. Trimmed to one book and the first five outcomes:

{
  "generated_at": "2026-07-20T16:33:26+00:00",
  "markets": [
    {
      "id": "sr:iscreen_market:2761",
      "name": "mlb - world series",
      "is_live": false,
      "books": [
        {
          "id": "sr:book:17324",
          "name": "MGM",
          "removed": false,
          "external_sport_event_id": "18390183",
          "external_market_id": "1390797014",
          "outcomes": [
            {
              "id": "sr:outcome:10001",
              "type": "competitor",
              "competitor_id": "sr:competitor:3638",
              "competitor_name": "Los Angeles Dodgers",
              "odds_decimal": "2.800",
              "odds_american": "+180",
              "odds_fraction": "9/5",
              "open_odds_decimal": "2.900",
              "open_odds_american": "+190",
              "open_odds_fraction": "19/10",
              "external_outcome_id": "-369466308",
              "removed": false
            },
            {
              "id": "sr:outcome:10001",
              "type": "competitor",
              "competitor_id": "sr:competitor:3654",
              "competitor_name": "New York Yankees",
              "odds_decimal": "6.500",
              "odds_american": "+550",
              "odds_fraction": "11/2",
              "open_odds_decimal": "9.500",
              "open_odds_american": "+850",
              "open_odds_fraction": "17/2",
              "external_outcome_id": "-369466303",
              "removed": false
            },
            {
              "id": "sr:outcome:10001",
              "type": "competitor",
              "competitor_id": "sr:competitor:3630",
              "competitor_name": "Milwaukee Brewers",
              "odds_decimal": "11.000",
              "odds_american": "+1000",
              "odds_fraction": "10/1",
              "open_odds_decimal": "31.000",
              "open_odds_american": "+3000",
              "open_odds_fraction": "30/1",
              "external_outcome_id": "-369466306",
              "removed": false
            },
            {
              "id": "sr:outcome:10001",
              "type": "competitor",
              "competitor_id": "sr:competitor:3656",
              "competitor_name": "Atlanta Braves",
              "odds_decimal": "12.000",
              "odds_american": "+1100",
              "odds_fraction": "11/1",
              "open_odds_decimal": "18.000",
              "open_odds_american": "+1700",
              "open_odds_fraction": "17/1",
              "external_outcome_id": "-369466320",
              "removed": false
            },
            {
              "id": "sr:outcome:10001",
              "type": "competitor",
              "competitor_id": "sr:competitor:3635",
              "competitor_name": "Philadelphia Phillies",
              "odds_decimal": "14.000",
              "odds_american": "+1300",
              "odds_fraction": "13/1",
              "open_odds_decimal": "19.000",
              "open_odds_american": "+1800",
              "open_odds_fraction": "18/1",
              "external_outcome_id": "-369466301",
              "removed": false
            }
          ]
        }
      ],
      "start_date": "2026-03-25",
      "end_date": "2026-09-27"
    }
  ]
}

The open_odds_* values preserve each team's price when the market opened, so a season-long odds-drift chart comes from a single call.


4. Pull a Whole Category at Once

Category Futures batches every competition in a category (for American Football, the USA category spans the NFL and NCAA markets). Find the category ID with Sport Categories:

{
  "generated_at": "2026-07-20T16:30:38+00:00",
  "categories": [
    {
      "id": "sr:category:43",
      "name": "USA",
      "country_code": "USA"
    }
  ]
}
{
  "generated_at": "2026-07-20T16:33:30+00:00",
  "markets": [
    {
      "id": "sr:iscreen_market:2737",
      "name": "nfl - afc - division south",
      "is_live": false,
      "books": [
        {
          "id": "sr:book:17324",
          "name": "MGM",
          "removed": false,
          "external_sport_event_id": "18968586",
          "external_market_id": "1454017813",
          "outcomes": [
            {
              "id": "sr:outcome:10001",
              "type": "competitor",
              "competitor_id": "sr:competitor:4324",
              "competitor_name": "Houston Texans",
              "odds_decimal": "2.200",
              "odds_american": "+120",
              "odds_fraction": "6/5",
              "open_odds_decimal": "2.600",
              "open_odds_american": "+160",
              "open_odds_fraction": "8/5",
              "external_outcome_id": "-207617104",
              "removed": false
            },
            {
              "id": "sr:outcome:10001",
              "type": "competitor",
              "competitor_id": "sr:competitor:4386",
              "competitor_name": "Jacksonville Jaguars",
              "odds_decimal": "3.100",
              "odds_american": "+210",
              "odds_fraction": "21/10",
              "open_odds_decimal": "2.750",
              "open_odds_american": "+175",
              "open_odds_fraction": "7/4",
              "external_outcome_id": "-207617105",
              "removed": false
            }
          ]
        }
      ],
      "start_date": "2026-09-10",
      "end_date": "2027-02-14"
    }
  ]
}

The category response uses the same market shape. Pagination behavior differs from Competition Futures in practice: this category response returned all of its 100 markets in a single response (X-Max-Results: 100, X-Result: 100), where the NFL competition call pages at five. Read the pagination headers on every response rather than assuming a page size. The snippet is trimmed to one market, one book, and two outcomes.


5. Refresh Strategy

The Futures package has no change log feed; refresh by re-polling the futures feeds themselves. Bookmaker prices in the Futures package refresh every three minutes, and futures prices move on news cycles rather than by the minute, so a modest cadence (for example, a few times per day per competition, more often near season milestones) keeps boards current; see Monitoring Odds Changes for observed cache behavior. Books that pull a futures market flip to removed: true with the last prices retained, exactly as in the other packages.



Common Use Cases

  • Championship odds page: steps 1, 2, and 5 for each tracked competition
  • Award races: the same market shape covers MVP and award markets where offered
  • Odds drift over time: persist per-poll prices and chart against open_odds_*

Did this page help you?