The greyhound and horse racing results pages are generated from recorded market history by a defined, repeatable process. This page describes that process — where the prices come from, what the fields mean, and what the archive can and cannot tell you.
Every race page is built from exchange market history our own recorder captured while the market was live — not scraped after the fact from a results site. If the recorder was not running for a race, that race is absent from the archive; a gap means "we did not record it", never "we removed it".
The archive database is a full idempotent rebuild, run hourly. Nothing is hand-edited between rebuilds, and re-running the build over the same history produces the same pages. Newly ingested races appear as new pages automatically.
Pages are organised the way the sport is: each venue page aggregates its meetings, each meeting its races, and each race lists its runners. Venue-level statistics (favourite strike rate, average winner price, biggest upset) are computed from the races on that venue's own pages, so you can check any aggregate against the rows beneath it.
The headline price shown per runner is the Betfair Starting Price — the exchange's reconciled price at the jump. It is an exchange price, not a bookmaker price: real returns on the exchange are reduced by commission, and a bookmaker may have offered better or worse than BSP on any given runner.
The favourite is the runner with the shortest BSP in that race. Favourite strike rates on venue pages count settled races only.
Runner rows carry the recorded price at fixed points before the off (five, two and one minute out) alongside the last traded price, and race pages flag the strongest steamer — the runner whose price shortened most into the jump. Movement is computed from our own recorded ticks, so it can be verified against the price history the API serves.
Runners removed before the race keep their row with a non-runner status rather than being deleted, so fields counted per race reflect what actually jumped.
The API's /v1/racing/results endpoint serves settled results for API customers: finishing order with one bookmaker's settled win and place prices, plus scratchings and their deductions. Note the source differs from this archive — the endpoint settles against a bookmaker's declared prices, the archive shows exchange BSP — so the two are complementary rather than duplicates. Historical pre-off prices are available via /v1/racing/price-history, and you can try both in the playground.