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

API reference / Racing

GET /v1/racing/price-history

Racing price history / closing line

Every price move for a race, per runner per bookmaker, with the opening and closing line. Identify the race either by `race_id`, or by `venue` + `race_number` + `date` — use the latter for past races, because race ids are only resolvable from the live feed, which holds the next ~6 hours. **The series is change-only.** Each point is a price MOVE, not a sample: a gap means the price held steady. `move_pct` is open→close, positive meaning the price drifted out. **`open_price` and `close_price` are the first and last CAPTURED prices for that book, not guaranteed market open and close.** Capture starts when a race enters the 60-minute window, and a book that does not quote that early gets its first price whenever it starts quoting: measured over 30,448 series on 2026-08-15, 44% of series began at the 60-minute baseline and 56% began later. At the other end 63% of series have a final point inside 120s of the jump and 81% inside 300s, so the rest are not closing lines either. Read `open_secs_to_jump`, `close_secs_to_jump` and `open_is_baseline` on each bookmaker before using a series for closing-line value, and drop the ones that do not reach the jump. History goes back to `history_from` on the response. The retention target is 45 days but capture began 2026-08-04, so the store is younger than that and grows daily.

Requires X-API-Key 5 credits

Request

curl 'https://api.puntersedge.online/v1/racing/price-history?race_id=YOUR_RACE_ID' \
  -H 'X-API-Key: YOUR_KEY'

Parameters

NameIn TypeRequired Description
race_id query string no Race id. If omitted, give venue + race_number + date.
venue query string no Venue name, case-insensitive (with race_number + date)
race_number query integer no
date query string no Race date, YYYY-MM-DD (UTC)
bookmakers query string no Comma-separated bookmaker keys
include_points query boolean no False returns open/close/high/low only
max_points query integer no Cap on returned points; response flags truncation

Responses

Status codes: 200, 401, 402, 422, 429, 500. Response bodies are JSON; the full schema is in /openapi.json.

Related endpoints

Try it against live data

The free tier needs no credit card, and the sandbox endpoints need no key at all.

Get a free API key Quickstart
This site contains wagering-related analysis and is intended for Australian users aged 18+. Gambling involves risk. Please gamble responsibly.