Use this for any question about odds, prices, the market, favourites or
"what is X paying". get_race_card() carries no prices. Takes the same
arguments as get_race_card(), so a race you pulled form for can be priced
unchanged.
Each runner has a `prices` list with one entry per bookmaker and market type
(`marketType` is 'fixed' or 'tote'; one bookmaker can quote both), carrying
`bookmaker`, `win` and `place` decimal odds and its own `capturedAt` (books
update independently, so freshness is per bookmaker). Win-market fluctuation
fields `open`, `close`, `high`, `low` and `movements` appear when the bookmaker
publishes them, and `startingPrice` is that bookmaker's own settled price once
the race has run.
Before the jump each priced runner also has a `market` summary across
bookmakers: `best` (longest win price) and `bestBookmakers`, `consensus`
(median price), and `fair` / `fairProbability` (margin removed by the power
method, which allows for the favourite-longshot bias), `edge` (best vs fair)
and `rank` (1 = favourite). Consensus and fair need 3 bookmakers, or 2 of the
market leaders where the race is run: TAB, Ladbrokes and Sportsbet in
Australia, New Zealand and Hong Kong; Ladbrokes UK (with Coral) and William
Hill in the UK, Ireland and Europe. `edge` describes the prices; it is not a
tip. The race-level `market` gives each bookmaker's `overround` and
`bestOverround`, the book made of the best prices.
A quote older than the freshness allowance for this race's time to jump comes
back with `stale: true` and no `win`/`place`; the fluctuation fields stay valid
as a record. That allowance tightens as the race approaches, and a finished
race is always stale, which is not a coverage gap. An empty `prices` list or
only stale quotes means no current price, not that there is no market. Runners
marked `scratched` come from our race card; a missing price does not mean
scratched. Prices are cached for seconds: re-asking shortly before the jump is
fine, but do not poll in a loop.
Requires a Premium or Enterprise account; other tiers get a 403 telling them
so. Pro accounts get results (get_race_results) but not odds.
Args:
date: Race date in YYYY-MM-DD format. Range: 30 days ago to 7 days ahead.
track: Track/venue name (e.g. 'flemington', 'randwick'). Case-insensitive.
race: Race number (1-20).
race_code: Race type — 'gallops' (default), 'harness', or 'greyhounds'.
country: Country code — 'au' (default), 'nz', 'hk', 'gb', 'us', etc.
timezone: IANA timezone for date interpretation (e.g. 'Europe/London').
Defaults to Australia/Sydney — set this for overseas racing so the
date matches the local race day.