Building motorsport analytics since 2022

The motorsport
analytics platform.

Who wins, who pits, who's fading — live race intelligence, pushed to you every lap.

14ML models
50+live feeds
<1sdelivery latency
POST your-app.com/racing-hookLIVE
14:22:31.102timing.data● 200142ms
14:22:31.371pit.lane-times● 200 89ms
14:22:31.644tire.history● 200 94ms
14:22:32.008race-control.messages● 200201ms
14:22:45.009weather.data● 200134ms
14:24:02.314timing.data● 200156ms
14:24:03.120session.info● 200117ms
timing.dataAnalytics-enriched timing
{
  "feed": "timing.data",
  "sessionId": "9560",
  "utc": "2026-06-08T14:32:18.441Z",
  "drivers": [
    {
      "driverId": "norris-lando",
      "constructorId": "mclaren",
      "number": "4",
      "tla": "NOR",
      "name": "Lando Norris",
      "team": "McLaren F1 Team",
      "position": 1,
      "gapToLeader": null,
      "interval": null,
      "lastLapTime": {
        "display": "1:27.412",
        "ms": 87412
      },
      "bestLapTime": {
        "display": "1:27.412",
        "ms": 87412
      },
      "sectors": [
        {
          "display": "28.441",
          "ms": 28441
        },
        {
          "display": "31.204",
          "ms": 31204
        },
        {
          "display": "27.767",
          "ms": 27767
        }
      ],
      "speeds": {
        "i1": 276,
        "i2": 298,
        "fl": 293,
        "st": 344
      },
      "pitStops": 1,
      "inPit": false,
      "retired": false
    },
    {
      "driverId": "verstappen-max",
      "constructorId": "red-bull-racing",
      "number": "1",
      "tla": "VER",
      "name": "Max Verstappen",
      "team": "Red Bull Racing",
      "position": 2,
      "gapToLeader": {
        "display": "+4.218",
        "seconds": 4.218
      },
      "interval": {
        "display": "+4.218",
        "seconds": 4.218
      },
      "lastLapTime": {
        "display": "1:28.103",
        "ms": 88103
      },
      "bestLapTime": {
        "display": "1:27.831",
        "ms": 87831
      },
      "sectors": [
        {
          "display": "28.612",
          "ms": 28612
        },
        {
          "display": "31.411",
          "ms": 31411
        },
        {
          "display": "27.808",
          "ms": 27808
        }
      ],
      "speeds": {
        "i1": 274,
        "i2": 296,
        "fl": 291,
        "st": 341
      },
      "pitStops": 1,
      "inPit": false,
      "retired": false
    },
    {
      "driverId": "leclerc-charles",
      "constructorId": "ferrari",
      "number": "16",
      "tla": "LEC",
      "name": "Charles Leclerc",
      "team": "Scuderia Ferrari",
      "position": 3,
      "gapToLeader": {
        "display": "+8.211",
        "seconds": 8.211
      },
      "interval": {
        "display": "+3.993",
        "seconds": 3.993
      },
      "lastLapTime": {
        "display": "1:28.209",
        "ms": 88209
      },
      "bestLapTime": {
        "display": "1:28.001",
        "ms": 88001
      },
      "sectors": [
        {
          "display": "28.700",
          "ms": 28700
        },
        {
          "display": "31.502",
          "ms": 31502
        },
        {
          "display": "28.007",
          "ms": 28007
        }
      ],
      "speeds": {
        "i1": 272,
        "i2": 295,
        "fl": 289,
        "st": 339
      },
      "pitStops": 2,
      "inPit": false,
      "retired": false
    }
  ]
}
14
production ML models
80K+
feed events per race
340K+
laps analyzed
77
seasons since 1950
Validated against live prediction markets

Our models are sharper than the market.

We grade our models against live prediction markets: real, money-backed odds on Polymarket and Kalshi. In 2026, our win probabilities scored closer to the result than theirs, before lights-out and live.

Real predictions, not replays. Every number was made with the outcome unknown, then graded against what happened and against the live market price.

Pre-race winner · vs Polymarket
6 of 9 races
Our lights-out line priced the winner more accurately than the market in six of the season's nine races.
Leadp = 0.005
Live win probability · vs Kalshi
44% better
As the race runs, our win probabilities are 44% closer to the real outcome than the live market's.
Leadmid p=0.001 · late p=0.011
Champion called · 2018–2025 vs baseline
75% vs 38%
From round five, across eight seasons, we name the eventual champion 75% of the time. A standings baseline gets 38%.
Lead8 seasons
Title race · round by round

We track the fight as it swings

Each line is the model's live championship probability after every round of 2025. If we just followed the points leader, one line would sit on top all year. Instead the lead changes hands — Piastri our favorite from late August into October — before Norris's late surge to the title.

Norris · championPiastriVerstappen
PIASTRI AHEAD0255075100%AprMayJunJulAugSepOctNovNOR 81%VER 10%PIA 9%

Norris took the title, but he was never a lock. Our model had him as low as 24% in early September, with Piastri at 76%. Calling a season isn't backing the leader; it's being right about when the lead is real.

The full scorecard

Every market, including the ones we don't win

MarketSeasonUs vs the marketSignificanceCalibration (ours vs market)Verdict
Pre-race winner2026Sharper in 6 of 9 racesp = 0.0050.020 vs 0.022Lead
Live winner, mid + late202644% better calibratedp ≤ 0.010.014 vs 0.025Lead
Drivers' champion2025Right 71% vs 24%p < 0.010.015 vs 0.044Lead
Live winner, opening laps2026Leveln.s.on parParity
Podium (top 3)2026Leveln.s.market tighterParity
Constructors' champion2024Leveln.s.0.088 vs 0.109Parity

“Parity” means the market was efficient and we matched it. We leave those in. A scorecard with no parity rows isn't honesty, it's marketing.

Under the hood

The models feeding those lines

±0.3s
Race pace
We read each driver's true pace to within a third of a second a lap.
±2 laps
Tyre life
We call the performance cliff about two laps before it hits.
86%
Reliability
We correctly rank which of two cars is likelier to retire 86% of the time.
73%
Wet-tyre calls
We catch the switch to wet compounds 73% of the time.
NB

One rule: a miss is reported as a miss. The live in-race edge is significant but rests on a five-race 2026 sample, so it's suggestive, not yet proven. It settles as the season runs. Every number is measured out of sample, never fit and reported on the same data.

See the predictions land, live.

What our models said, live, checked against what happened. Race by race.

F1 — 50+ live feeds

50+ real-time feeds,
pushed the moment they fire.

50+ real-time feeds across timing, race control, strategy, and more — pushed directly to your endpoint the moment they happen. The Developer tier unlocks every live data feed; Custom adds the ML feed suite on top. The Free tier lets you build and test on historical and simulated sessions.

50+
Real-time feeds
Developer tier: every data feed · Custom: full catalog
Timing6 feeds

Lap times, sector splits, gaps, and mini-sector detail — every lap.

timing.datatiming.statstiming.lap-history
Race Control4 feeds

Flags, race control messages, and team communications.

session.track-statusrace-control.messagesregulatory.stewards-decision
Session5 feeds

Session status, clock, lap count, track status, and the driver list.

session.statussession.lap-countdriver.list
Tires & Pit6 feeds

Tire stints and history, pit stops, and pit-lane timing.

tire.currenttire.historytire.stints
Weather8 feeds

Track conditions, rainfall events, forecasts, and weather intelligence.

weather.dataweather.data-seriesweather.rain-onset
Race Events3 feeds

Synthesized event streams — overtakes, milestones, qualifying events.

events.racesession.timingevents.qualifying

Feed id values (e.g. timing.data, race-control.messages) are in the Feed Catalog.

ML Analytics — Available on Custom

Every payload arrives
already intelligent.

Position distributions, pit and safety-car probabilities, tyre state — inside the timing data you already consume.

Custom tier

Your payload, enriched.

On the Custom tier, every timing payload gets an analytics key at the root — all fourteen models, for every driver.

Tire health score + predicted laps remaining
Win probability + delta from last lap
Pit stop probability + expected window
Safety car probability per lap
Per-pair overtake probability
LTOE normalized pace delta
POST your-app.com/racing-hook
{
  "feed": "timing.data",
  "sessionId": "9560",
  "drivers": [{
    "driverId": "verstappen-max",
    "constructorId": "red-bull-racing",
    "number": "1", "tla": "VER",
    "Position": 1, "GapToLeader": "—",
    // ↓ RaceHooks Analytics enriched fields
    "analytics": {
      "tireHealth": { "tireHealth": 0.62 },
      "pitStopProbability": 0.74,
      "winProbability": { "probability": 0.58 },
      "ltoe": { "degradationSec": -0.182 }
    }
  }]
}
pit stop probabilitysafety carovertakeLTOE lap-time outlier estimationtyre cliffundercut threatundercut timing callovercut threatqualifying pacefastest lapDNF risktyre compoundpit-stop countpit-window survival

How each model works, and how it's calibrated: the models reference →

+ Algorithmic layer

Beyond the models — race intelligence in every payload.

The fourteen ML models sit alongside a continuously-updated algorithmic layer — probabilistic race state computed analytically, not sampled. It ships in the same analytics key.

Win & Podium Probability

Monte Carlo
"winProbability": 0.58,
"podiumProbability": 0.91,
"winProbabilityDelta": +0.12

Position Distribution

Monte Carlo
"positionDistribution": [
  0.58, 0.21, 0.12, 0.05, …
]

Expected Championship Points

ECP / ECPA
"ecp": 18.4,
"ecpa": +2.1,
"ecpaEvent": "SAFETY_CAR"

Tyre Health

EKF / Kalman
"tireHealth": 0.62,
"degRateSecPerLap": 0.04,
"cliffLapPredicted": 6

All fourteen ML models above — each with full technical documentation: training approach, input features, output fields, and business context.

Explore the full analytics documentation →
Full finishing-position distributions, every lap.
Friday pre-race previews from practice pace, before lineups lock.
Built for

Who builds on RaceHooks

Fantasy & DFS Projections

Every scoring category, projected live.

Finishing-position distributions
Expected place differential
Fastest lap & laps led
Friday pre-race preview

Quant & Research Tooling

Calibrated probabilities you can backtest.

Winning-margin & duration projections
Pit-timing distributions
Current-season replay backtesting
Sub-second webhook & SSE delivery

Media & Broadcast

Surface the story before it happens.

Overtake probability
LTOE normalized pace
Race control messages
Race events feed

Developer Tools

Build without waiting for race day.

Current-season replay
1×, 5×, 10× playback
HMAC-signed payloads
Full delivery logs
Pricing

Simple, transparent pricing.

Replay this season's races free. Go paid to get it live.

Free
$0

Build and test your integration before going live.

Start building
Included
Historical session data
5 current-season simulate sessions
HMAC-SHA256 signing
Community support
Live feeds
Analytics payload
Most popular
Developer
$99/mo
or $79/mo billed annually

Every live feed, metered by delivery — build and ship commercial products.

Start Developer
Included
All 29 live data feeds
50,000 deliveries/mo, then $3 per 1,000
10 current-season simulate sessions
Build & sell commercially
HMAC-SHA256 signing
99.5% delivery SLA
ML analytics payload
Custom
Custom

Production-scale delivery, an SLA, the full 14-model analytics stack, dedicated infrastructure — whatever your product needs.

Talk to sales
What we build

Unlimited live delivery, contractual SLA, the full 14-model ML analytics stack (win/podium probability, tyre health, pit predictions, 22 derived feeds), dedicated infrastructure, custom limits and throughput, a named CSM — priced around what you actually use, not a fixed tier. Talk to sales@racehooks.io.

Cancel anytime. Annual billing saves 20% — and Simulate lets you build against real race data any time, even between race weekends.

Developer experience

First webhook in five minutes.

Register an endpoint. Subscribe to a feed. Your first delivery arrives in under 5 minutes.

01
Simulate any race

Replay this season's sessions at up to 10× — build before race day.

02
HMAC-signed delivery

Every payload signed. One line to verify.

03
Full delivery logs

Headers, status, latency, retries — every attempt, exportable.

Run your first replay →
# Register your webhook (after signup)
curl -X POST https://api.racehooks.io/v1/webhooks \
  -H "Authorization: Bearer ${TOKEN}" \
  -d '{
    "webhookUrl": "https://your-app.com/racing",
    "feedId": "timing.data"
  }'

# Done. Live race data comes to you.
Platform Roadmap

F1 live. IndyCar data live. More coming.

One integration across every series. Your code keeps working as sports launch.

F1
Formula 1
LIVE
IRL
IndyCar
API LIVE
NASCAR
NASCAR
ROADMAP
FE
Formula E
ROADMAP
IndyCar data API is live now

Query results (1996–2026), standings, schedule, and roster today. Real-time IndyCar streaming delivery is in development — get notified when it ships.

FAQ

Common questions

Something else? Email us.