18+ Only  |  Gambling can be addictive — please gamble responsibly  |  Gambling Help: 1800 858 858  |  GambleAware
Transparency first

How the racing results archive is built

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.

Where the data comes from

1. Recorded Betfair market history

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".

2. Rebuilt hourly, from scratch

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.

3. Venue → meeting → race → runner

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.

What the fields mean

Betfair Starting Price (BSP)

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.

Favourite

The favourite is the runner with the shortest BSP in that race. Favourite strike rates on venue pages count settled races only.

Pre-off movement

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.

Scratchings

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.

Getting the same data programmatically

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.

Limitations, stated plainly

  • Coverage begins when the recorder began capturing a code, and a recorder outage leaves a permanent gap for the races it missed.
  • BSP is not what a bookmaker paid. Comparing archive prices to bookmaker settled prices will show differences; that is the two sources disagreeing honestly, not an error in either.
  • Exchange commission means a real BSP backer's net return is lower than the displayed gross price implies.
  • The archive is rebuilt on an hourly schedule, so a just-settled race can take up to an hour to appear.
This site contains wagering-related analysis and is intended for Australian users aged 18+. Gambling involves risk. Please gamble responsibly.