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 TypesProbabilities are returned only for
season,event, andracestages. Thesport,practice,qualifying, andlapstages do not return valid probability data.
Relevant Feeds
| Feed | Purpose |
|---|---|
| Stage Schedule | Find the race or event stage ID |
| Stage Probabilities | Win probabilities for a season, event, or race |
High-Level Workflow
Seasons → Stage Schedule → race or season stage ID → Stage Probabilities
- Find the stage ID you want probabilities for (a race, an event, or the season).
- Call Stage Probabilities with that stage ID.
- Read the
markets, then each market'soutcomes.
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 exampleoutright)type:teamfor the constructor market,competitorfor the driver marketdescription: a human-readable market titleoutcomes: one entry per entrant, withid,name,probability, and a nestedteamorcompetitor
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:
Map Outcomes by the Nested ID, Not the Outcome IDAn outcome's own
idis 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 nestedcompetitor.idorteam.id. For example, the outcomeidsr:competitor:11249344carriescompetitor.idsr:competitor:495898(Lando Norris). See ID Handling.
Refresh Strategy
- Probabilities move leading up to and during an event; refresh on the response
cache-controlTTL. See Update Frequencies. - Use the
seasonstage for the title race and therace(orevent) stage for a single Grand Prix. - Do not request probabilities on
practice,qualifying,lap, orsportstages; they do not return valid data.
Best Practices
- Render
probabilityas a percentage and display the nested entity name, not the outcomeid. - Pair probabilities with the live results in Tracking Live Races and the tables in Tracking Championship Standings.
Updated 8 days ago
