Documentation / Guides
Race Day plan overview
Today and yesterday, with the prices on: what the Race Day plan covers, every endpoint it reaches, and what still needs Live.
Today and yesterday, with the money on.
Every card, every result and every price for the two days still trading. It is the plan for screens, bots and bet-placement tools that only ever ask about racing happening now. It is not an archive plan: anything older than yesterday is refused, with the window named, rather than quietly returning less.
The window
Counted at each track in its own timezone, so an Australian card comes back whole. The floor moves at local midnight: a race you read at 23:55 can be outside the window five minutes later.
What it adds to a free key
This is the whole argument for the plan. A free key already reads these two days. What it cannot read is the money.
On this plan
- Starting prices, fractional and decimal
- Betfair back and lay, with matched amounts
- Runner weights and handicap marks
- Race weather, hour by hour
- Forecast and tricast dividends
- The results stream and webhooks
Still the Live plan
- Any racing before yesterday
- A dog's form and past runs
- Odds history and price movement
- Trainer, dog and owner statistics
- Sire and dam breeding records
- Bulk archive download
Every endpoint on the plan
20 REST endpoints, plus the results stream and webhooks. Each links to its own page, with parameters and a sample response.
| Endpoint | What it answers | Plan |
|---|---|---|
GET /v1/racecards/today |
Today's racecards | |
GET /v1/racecards/upcoming |
Upcoming races | |
GET /v1/races |
Search races | |
GET /v1/races/{race_id} |
Get a race | |
GET /v1/races/{race_id}/runners |
Race runners | |
GET /v1/races/{race_id}/result |
Get a race result | |
GET /v1/races/{race_id}/status |
Race status & freshness | |
GET /v1/races/{race_id}/market |
Race market summary | |
GET /v1/results/today |
Today's results | |
GET /v1/results/yesterday |
Yesterday's results | |
GET /v1/results/latest |
Latest results | |
GET /v1/tracks |
List tracks | |
GET /v1/tracks/{track_id} |
Get a track | |
GET /v1/tracks/{track_id}/races |
Races at a track | |
GET /v1/tracks/{track_id}/stats |
Track statistics | |
GET /v1/status |
Pipeline status | |
GET /v1/coverage |
Coverage ledger | |
GET /v1/usage |
Your usage | |
GET /v1/archive |
All statistics | |
GET /v1/reference |
Reference data | |
WSS results stream |
Results and status changes as they settle | |
Webhooks |
A POST to your URL when a result lands |
What a refusal looks like
Asking for older racing is answered rather than ignored: the date asked for, the window that applies, and the plan that carries it.
{
"error": {
"code": "outside_plan_window",
"message": "Race Day covers today and yesterday (2026-09-22 onward). 2026-09-15 needs the Live plan, which carries the full archive.",
"your_plan": "race_day",
"required_plan": "live",
"window": { "from": "2026-09-22", "to": "upcoming" },
"upgrade_url": "https://greyhoundapi.com/account"
}
}