Cards, results, sectionals and exchange prices from Britain, Australia and Ireland, live as the traps open and back through 26 years of racing. One schema, one key.
races held · sectionals, going
races held · dividends
races held · going, pedigree
What we hold
Complete cards and complete results, per track, back to 2000. What each nation publishes on top of that differs, so we show which fields every track carries before you build on it.
| Track | Races | Share of races | Also carries | Since |
|---|
Australia: Victoria and Western Australia throughout; New South Wales to mid-2023; Queensland, South Australia and Tasmania to mid-2022. Shares are of each nation's completed races.
The signature
Six traps, one lure, a fixed distance. Greyhound racing is a tidy sport and the feed matches it — every race comes back in the same shape, whether it ran at Romford tonight or Wentworth Park in 2019.
Same keys, same types, same nulls. A race from 2000 parses with the code
you wrote for tonight — distance_m is always a number,
never "500m".
Every result says whether it is provisional or
complete, and when it was last touched. You never have to
wonder whether a time will change under you.
About a third of British runs carry no sectional. We say which, per track, rather than returning a zero and letting you find out in production.
Tracks close — Crayford has gone. The track list comes from the API, so a list baked into your code cannot quietly go wrong.
Romford · 400m · live
By the numbers
Coverage across Great Britain, Australia and Ireland, measured in the open and updated continuously. Which tracks race on which days is on the racing calendar.
Counted from the live table, not a marketing figure.
The same query behind /v1/races — what you see here is
what the endpoint returns.
Ask the archive
Most people who want this data do not want to write a client for it. They want one question answered, properly, from the real archive — not a search box, not a PDF, and not a model guessing. So we built the assistant on top of the same API.
Who asks, and what they ask
Plain English. No endpoint names, no parameters, no ids to look up first.
The same public endpoints you would call, on your own key, with the same limits.
Figures with their source and sample size. No predictions, ratings or tips.
Why this feed
Every race carries its lifecycle status and the exact moment its result reached the pipeline. Delays are measured and published on the status page.
UTC everywhere, rendered track-local, with date parameters resolved per track — a Sydney "today" and a London "today" both behave exactly as you'd expect.
Career form, price history, trap statistics and track records, recomputed nightly from published results — not just today's card.
Subscribe to results, status changes and card updates over WebSocket, with a 15-minute replay window so you never miss an event.
The full surface
Everything the feed exposes — racecards to results, dogs to breeding, markets
to the live stream — in a single consistent shape, filterable by region=GB or
region=AU or region=IE across every one.
Crowd-sourced, not scraped
GreyhoundAPI isn't a scraper pointed at someone else's results page.
It's an open, crowd-sourced database — cards and results captured by people trackside and kept current by a community of updaters, with every entry gate-kept and checked by us before it goes live.
By people at the meeting, as it happens.
A community of updaters keeps cards and results moving.
Every entry checked before it goes live.
One clean shape across GB, AU and IE, stamped and streamed.
data_as_of and per-race freshness stamps on every responseOpen data, built by people, and looked after so it stays accurate. Every entry on the right is something you can check for yourself in a response.
See how freshness is stampedCoverage
Britain, Australia and Ireland modelled identically: meetings, races, runners, results. A query written for Romford runs unchanged against Sandown Park or Shelbourne Park.
Every British track, every day. Sectional times on about two thirds of runs, exchange prices beside SP on most and results usually within minutes of the off.
Victoria since 2000: Ballarat, Bendigo, Geelong and 10 more tracks. New South Wales, South Australia, Western Australia, Queensland and Tasmania from 2019, with Richmond, The Gardens, Wentworth Park and 31 more.
Tralee, Shelbourne Park, Limerick and the rest of the Irish circuit. Beaten distances, going allowance, a comment on each run and sectional times on about three quarters.
A struck-through tag is a field that nation does not publish. Irish results carry no off time, so we store the date and say so. A percentage on a tag is the share of the last year's runs that carry it.
Live Plus · statistics & AI
Results tell you the past. The three statistics endpoints turn that archive into splits — by distance, trap, track, grade and going, with best and average winning times in each. One call answers a question that would otherwise be a thousand result rows and your own group-by.
Career splits for one greyhound: strike rate by distance, trap, track, grade and going, with best and average winning times in each.
How a yard performs at a given track, over a rolling window you choose —
?months= up to 60, or pin it
to one course with ?track_id=.
The same splits, plus by_trainer
— the question only an owner thinks to ask: which yards is this ownership actually
winning with.
// GET /v1/trainers/118/stats?months=12 { "trainer_id": 118, "name": "M E Wiley", "window_months": 12, "overall": { "runs": 1887, "wins": 342, "win_pct": 18.12, "place_pct": 52.52 }, "by_track": [ { "track": "Romford", "runs": 1831, "win_pct": 18.30 }, { "track": "Central Park", "runs": 43, "win_pct": 13.95 } ], "by_distance": [ { "distance_m": 400, "runs": 1687, "win_pct": 18.02, "best_time_s": 23.64 } ], "by_trap": [ { "trap": 1, "runs": 370, "win_pct": 24.05 } ] }
Splits are the shape a language model can actually reason over. Raw results burn context and force the model to do arithmetic it’s bad at; a pre-aggregated split is a fact it can quote. We built two things on our own endpoints to show what that looks like.
An agent reads tonight’s card, pulls the splits for every runner and commits to a verdict ahead of the off. Then the result lands and you see whether it was right.
Plain English in, named tool calls out — you can see exactly which endpoints it reached for to answer. Point it at your own key and it runs on your quota, not ours.
What you build
It's raw data — what you make of it is yours. A few things people wire it into:
Career form, sectionals, run and adjusted times and trap stats — the inputs for your own model, updated nightly from published results.
/dogs/{id}/form/races/{id}/runners/tracks/{id}/statsBetfair market summaries, starting prices and implied moves alongside the result, so your dashboard shows price and outcome together.
/races/{id}/market/dogs/{id}/prices/results/latestPush results and status changes into Slack, Discord or your own service the moment a race settles — no polling, no missed jumps.
wss://…/v1/stream/racecards/upcomingThe full archive with head-to-heads and historical prices, in one shape, ready to pull into a notebook and test an idea against.
/races/dogs/{id}/head-to-head/{rival}/resultsStart here
Paste your key and go — these four return the shape everything else follows.
/v1/races/{race_id}
01
Full detail for one greyhound race: track, grade, distance, going, scheduled and official off-times, lifecycle status, freshness metadata and the complete runner line-up.
Open in docs →/v1/racecards/today
02
Every greyhound racecard scheduled today in Great Britain and Australia, resolved per track-local calendar day, with runners, traps, grades and start times.
Open in docs →/v1/results/latest
03
Results ordered by the moment they reached the pipeline — the polling companion to the WebSocket stream, with a since cursor for gapless catch-up.
Open in docs →/v1/dogs/{dog_id}/head-to-head/{rival_id}
04
Compare two greyhounds directly: shared races, who finished ahead and how often, plus each dog's career record — the factual rivalry view.
Open in docs →A free key gives you the race & track endpoints against a rolling seven-day window — enough to build and evaluate. When you need live-day data, the full archive and the stream, one plan covers it.