For broadcasters & commentators
The stats layer for live race coverage
A keyed JSON API over the live timing feed, enriched with the archive behind it: every driver's record at this circuit in this class, personal bests, standing lap records, and the head-to-head history between any two drivers, ready the moment the commentary needs it.
Access is by API key, issued per broadcaster. The full API reference comes with your key.
Live timing, with the archive attached
One JSON endpoint, polled once or twice a second, carries the whole run: positions, gaps, lap and sector times, and the flags a caption generator actually wants.
The feed marks the moments worth talking about as they happen: a car going quicker than its driver has ever gone at this circuit, a lap inside the standing record for the class. Those comparisons are scoped to the exact circuit configuration, never just the venue, because a lap of the short circuit is not a lap of the long one.
| Field | What it tells you |
|---|---|
| pos / gap / laps | the running order, as published |
| best, last, sectors | lap and split times, with millisecond values |
| class | as the timekeeper typed it, plus our canonical name |
| matched + competitor_id | whether this entry is a driver the archive knows |
| pb_beat / pb_ref | quicker than their own best ever lap here |
| rec_beat / rec_ref | inside the standing class or outright record |
A stat card for whoever the camera is on
Ask for any driver and the answer arrives already scoped to the race they are in right now: their record at this circuit, in this class.
That default is the whole point. A commentator does not want a career average across five decades and fifteen circuits, they want how this driver goes here, in this company. Ask with no parameters during a live run and that is what comes back; add a filter for any other circuit or class they have raced, or ask for the full career with one flag.
Every card carries wins, podiums, average finish, places gained, best lap at the circuit, current and peak rating, and their most recent results, all from the same archive the public site reads, so nothing said on air can disagree with the page a viewer looks up afterwards.
Rivalries, on demand
Two cars nose to tail: one call returns their lifetime record against each other, and how it stands at this circuit in this class.
The head-to-head counts every race both drivers started, who finished ahead, and across which years, using only races where both actually took the flag, so a retirement is never scored as a defeat. The same scoping applies: during a live run the record defaults to the circuit and class on track, and one flag widens it to everything the two have ever contested.
| Field | Meaning |
|---|---|
| races | shared starts inside the scope |
| a_ahead / b_ahead | who finished in front, race by race |
| y0 / y1 | the years the rivalry spans |
| scope | the circuit and class the record was computed for |
| scope_cells | every circuit and class the pair have shared |
How access works
Keys are issued per broadcaster, by a human, and there is no charge while the API is in its first season.
- Get in touchUse the contact form and say who you are, what you are covering and roughly what you want on screen. A real person reads it.
- Receive your keyOne API key for your organisation, sent with the full endpoint reference. The key goes in a request header; everything is plain HTTPS JSON, so it works from any graphics system, overlay tool or scripting language with an HTTP client.
- Poll and publishStandings once or twice a second, stat cards and head-to-heads as the coverage needs them. Usage is tracked per key rather than hard-capped, so a busy race day is a conversation, not an outage.
Live names, classes and positions are relayed exactly as the timing feed publishes them and are provisional until results are official. Stat comparisons only ever attach to drivers the archive positively recognises; an entry it cannot match is delivered as timing only, never guessed.