Integration GuidesDocs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

Retrieving Race Probabilities

This scenario explains how to retrieve Formula 1 win probabilities: the outright winner of a single race, an event, or the season-long Drivers' and Constructors' Championships. All come from the Stage Probabilities feed, called with the relevant stage ID.

This is commonly used to:

  • Show pre-race and live win probabilities
  • Power title-race and "who will win the championship" widgets
  • Blend probabilities into results and standings displays

ℹ️

Probabilities Apply to Three Stage Types

Probabilities are returned only for season, event, and race stages. The sport, practice, qualifying, and lap stages do not return valid probability data.



Relevant Feeds

FeedPurpose
Stage ScheduleFind the race or event stage ID
Stage ProbabilitiesWin probabilities for a season, event, or race


High-Level Workflow

Seasons → Stage Schedule → race or season stage ID → Stage Probabilities

  1. Find the stage ID you want probabilities for (a race, an event, or the season).
  2. Call Stage Probabilities with that stage ID.
  3. Read the markets, then each market's outcomes.


1. Race Win Probabilities

Call Stage Probabilities with a race stage ID. The response returns a markets array. A race returns two outright markets: the winning constructor (type: "team") and the race winner (type: "competitor").

GET https://api.sportradar.com/formula1/trial/v2/en/sport_events/sr:stage:1189139/probabilities.json
x-api-key: YOUR_API_KEY
{
  "stage": { "id": "sr:stage:1189139", "description": "Race", "type": "race" },
  "probabilities": {
    "markets": [
      {
        "name": "outright",
        "type": "team",
        "description": " Australian Grand Prix Race - Winning Constructor",
        "outcomes": [
          { "id": "sr:competitor:182574", "name": "McLaren", "probability": 52.46, "team": { "id": "sr:competitor:4514", "name": "McLaren", "nationality": "Great Britain", "country_code": "GBR" } },
          { "id": "sr:competitor:480013", "name": "Red Bull Racing", "probability": 25.34, "team": { "id": "sr:competitor:4978", "name": "Red Bull Racing", "nationality": "Austria", "country_code": "AUT" } }
        ]
      },
      {
        "name": "outright",
        "type": "competitor",
        "description": "Australian Grand Prix Race - Winner",
        "outcomes": [
          { "id": "sr:competitor:11249344", "name": "Norris, Lando", "probability": 32.34, "competitor": { "id": "sr:competitor:495898", "name": "Norris, Lando", "nationality": "Great Britain", "country_code": "GBR" } },
          { "id": "sr:competitor:7418515", "name": "Verstappen, Max", "probability": 29.95, "competitor": { "id": "sr:competitor:178318", "name": "Verstappen, Max", "nationality": "Netherlands", "country_code": "NLD" } }
        ]
      }
    ]
  }
}

Each market lists every entrant; the snippet shows the top two outcomes per market. probability is a percentage (the outcomes in a market sum to roughly 100).



2. Championship Probabilities

Call Stage Probabilities with a season stage ID to get title-race probabilities: a Constructors' Championship market (type: "team") and a Drivers' Championship market (type: "competitor").

GET https://api.sportradar.com/formula1/trial/v2/en/sport_events/sr:stage:1189123/probabilities.json
x-api-key: YOUR_API_KEY
{
  "stage": { "id": "sr:stage:1189123", "description": "Formula 1 2025", "type": "season" },
  "probabilities": {
    "markets": [
      {
        "name": "outright",
        "type": "team",
        "description": "Constructors Championship 2025 - Winner",
        "outcomes": [
          { "id": "sr:competitor:182574", "name": "McLaren", "probability": 93.73, "team": { "id": "sr:competitor:4514", "name": "McLaren", "nationality": "Great Britain", "country_code": "GBR" } },
          { "id": "sr:competitor:5335752", "name": "Mercedes Amg Motorsport", "probability": 2.78, "team": { "id": "sr:competitor:41127", "name": "Mercedes AMG Motorsport", "nationality": "Germany", "country_code": "DEU" } }
        ]
      },
      {
        "name": "outright",
        "type": "competitor",
        "description": "Drivers Championship 2025 - Winner",
        "outcomes": [
          { "id": "sr:competitor:11249344", "name": "Norris, Lando", "probability": 71.08, "competitor": { "id": "sr:competitor:495898", "name": "Norris, Lando", "nationality": "Great Britain", "country_code": "GBR" } },
          { "id": "sr:competitor:7418515", "name": "Verstappen, Max", "probability": 23.69, "competitor": { "id": "sr:competitor:178318", "name": "Verstappen, Max", "nationality": "Netherlands", "country_code": "NLD" } }
        ]
      }
    ]
  }
}


Reading a Market

Each market carries:

  • name: the market identifier (for example outright)
  • type: team for the constructor market, competitor for the driver market
  • description: a human-readable market title
  • outcomes: one entry per entrant, with id, name, probability, and a nested team or competitor

The diagram below shows where the join key lives in a driver-market outcome. The outcome's own id identifies the betting outcome; the nested competitor.id (or team.id in the constructor market) is the ID that matches the rest of the API:

Outcome ID vs Competitor IDJoin through the nested object
Outcome (betting entry)
id: sr:competitor:11249344not a join key
name: Norris, Lando
probability: 32.34
Nested competitor
competitor.id: sr:competitor:495898join on this ID
name: Norris, Lando
sr:competitor:495898 is the same Norris ID used in standings, race results, and Competitor Profile; the outcome id appears only in this feed.

⚠️

Map Outcomes by the Nested ID, Not the Outcome ID

An outcome's own id is the betting outcome and is not the driver or team ID. To link an outcome to a driver or team in your other data, use the nested competitor.id or team.id. For example, the outcome id sr:competitor:11249344 carries competitor.id sr:competitor:495898 (Lando Norris). See ID Handling.



Refresh Strategy

  • Probabilities move leading up to and during an event; refresh on the response cache-control TTL. See Update Frequencies.
  • Use the season stage for the title race and the race (or event) stage for a single Grand Prix.
  • Do not request probabilities on practice, qualifying, lap, or sport stages; they do not return valid data.


Best Practices



Did this page help you?