Greyhound Racing API

Every race, every trap,
timed to the hundredth.

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.

1,620,266races held
10.8Mrunner records
10 minmedian result delay
99.9%uptime, 90 days
RacecardResult
Great Britain SINCE 2013
663,126

races held · sectionals, going

Australia SINCE 2000
549,810

races held · dividends

Ireland SINCE 2002
407,330

races held · going, pedigree

Arriving now
19:10:01Harlow result+28 min
19:10:01Harlow result+12 min
19:10:01Nottingham result+9 min
19:10:01Towcester result+3 min
19:05:02Youghal result+14 min
19:05:02Yarmouth result+9 min
Coverage  121 tracks, Great Britain, Australia and Ireland, back to 2000 — and we publish what is missing. See what we cover →

What we hold

121 tracks. Every race,
every runner, every result.

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.

1,620,266 races · 10,837,290 runner records · updated every five minutes See the full coverage table →

The signature

Data as clean
as the rail.

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.

One envelope, every endpoint

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

Freshness is stamped, not guessed

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.

Gaps are declared

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.

Nothing is hard-coded

Tracks close — Crayford has gone. The track list comes from the API, so a list baked into your code cannot quietly go wrong.

Romford 19:34 A4 · 400m
LINE SPLIT

Romford · 400m · live

Trap 1—
Trap 2—
elapsed0.00s
result

By the numbers

A serious archive, kept fresh.

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.

Figures refresh daily — last built 18:21 UTC
1.6M Races Every graded card in all three regions, back to the first day of coverage.
10.8M Runners tracked Trap, weight, starting price, trainer and owner on every entry.
26+ years Of history Deepening every night as the pipeline settles the day’s racing.
121 Tracks All of them reachable on the free key, not a sampler of three.

Races indexed, by how far back you look

GBAUIE

Counted from the live table, not a marketing figure.

22,733 3 months
49,779 6 months
105,458 12 months
221,136 2 years

The same query behind /v1/races — what you see here is what the endpoint returns.

99.85% Uptime
12 min Typical results delay
Race finishesIn your app
Regions GB AU IE
Live status
01 Free sandbox Cards and results for yesterday, today and ahead, at 50 lookups a day. Try the data before you pay a penny. Try the sandbox 02 Documentation Every endpoint with parameters, five-language examples and a “Run it live” console right in the browser. Read the docs 03 Support Integration questions, data coverage or billing — a direct line to the people who built the feed. Get in touch

Ask the archive

26 years of racing,
answered in a sentence.

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

01

You ask

Plain English. No endpoint names, no parameters, no ids to look up first.

02

It calls the API

The same public endpoints you would call, on your own key, with the same limits.

03

You get data

Figures with their source and sample size. No predictions, ratings or tips.

Form analystreal answer
2 calls · 9.8s data as of today
Ask it something Or use it in Claude → Free plan, no card. 10 questions a week.

Why this feed

Built for people who take the data seriously.

Freshness

Honest, not hidden

Every race carries its lifecycle status and the exact moment its result reached the pipeline. Delays are measured and published on the status page.

Time

Timezone-correct

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.

Depth

A real archive

Career form, price history, trap statistics and track records, recomputed nightly from published results — not just today's card.

Live

Results stream

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

Sixty-two endpoints.
One envelope.

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.

62
10
Sections
3
Regions
Racecards2
GET/v1/racecards/today
GET/v1/racecards/upcoming
Races12
GET/v1/races
GET/v1/races/{id}
GET/v1/races/{id}/runners
GET/v1/races/{id}/result
GET/v1/races/{id}/status
GET/v1/races/{id}/precedents
GET/v1/races/{id}/field
GET/v1/races/{id}/analysis
GET/v1/races/{id}/pace
GET/v1/races/{id}/conditions
GET/v1/races/{id}/form
GET/v1/races/{id}/market
Results4
GET/v1/results/today
GET/v1/results/yesterday
GET/v1/results
GET/v1/results/latest
Meetings5
GET/v1/meetings
GET/v1/meetings/today
GET/v1/meetings/calendar
GET/v1/meetings/{id}/analysis
GET/v1/meetings/{id}
Dogs10
GET/v1/dogs/{id}/layoff
GET/v1/dogs/{id}/trend
GET/v1/dogs/search
GET/v1/dogs/{id}
GET/v1/dogs/{id}/form
GET/v1/dogs/{id}/entries
GET/v1/dogs/{id}/prices
GET/v1/dogs/{id}/head-to-head/{id}
GET/v1/dogs/{id}/pace
GET/v1/dogs/{id}/stats
Trainers5
GET/v1/trainers/search
GET/v1/trainers/{id}
GET/v1/trainers/{id}/runners
GET/v1/trainers/{id}/results
GET/v1/trainers/{id}/stats
Owners3
GET/v1/owners/search
GET/v1/owners/{id}
GET/v1/owners/{id}/stats
Tracks4
GET/v1/tracks
GET/v1/tracks/{id}
GET/v1/tracks/{id}/races
GET/v1/tracks/{id}/stats
Breeding6
GET/v1/sires
GET/v1/sires/{id}/stats
GET/v1/sires/{id}/progeny
GET/v1/dams
GET/v1/dams/{id}/stats
GET/v1/dams/{id}/progeny
Platform5
GET/v1/status
GET/v1/coverage
GET/v1/usage
GET/v1/archive
GET/v1/reference
Browse the full docs → Get a free key + 1 WebSocket results stream

Crowd-sourced, not scraped

Built by real people
at the track.

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.

01

Captured trackside

By people at the meeting, as it happens.

02

Kept current

A community of updaters keeps cards and results moving.

03

Gate-kept by us

Every entry checked before it goes live.

04

In your app

One clean shape across GB, AU and IE, stamped and streamed.

Scraped feeds
The difference
GreyhoundAPI
Whatever the source page shows, gaps and lag included
Where it comes from
Captured by people at the track — not lifted from a web page
Break the moment a track quietly redesigns its results table
When a track changes
A community of updaters keeps cards and results current
No provenance — no way to tell where a figure came from or how fresh it is
Who checks it
Every entry gate-kept and verified by us before it ships
A grey area you'd rather not build a business on
What you build on
Open, crowd-sourced data in one clean, consistent shape across all three regions
A single brittle source, with no one watching when it drifts
Knowing it's current
data_as_of and per-race freshness stamps on every response
You poll and hope — miss a race and you'll never know
How it reaches you
A WebSocket stream pushes results the moment they're logged

Open 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 stamped

Coverage

Three racing nations.One schema.

Britain, Australia and Ireland modelled identically: meetings, races, runners, results. A query written for Romford runs unchanged against Sandown Park or Shelbourne Park.

Great Britain greyhound racing data Great Britain Since 2013

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.

SPExchangeSectionals 66%CommentsOff times
31TRACKS
663.1kRACES
3.9mRUNNERS
DailyRACING
Australian greyhound racing data Australia Since 2000

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.

SP 78%ExchangeSectionals 70%Comments 36%Off times
71TRACKS
549.8kRACES
4.5mRUNNERS
6STATES
Irish greyhound racing data Ireland Since 2002

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.

SPSectionals 77%CommentsOff times 30%
19TRACKS
407.3kRACES
2.4mRUNNERS
DailyRACING
121TRACKS
1.6mRACES
26+YEARS

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

What tends to happen —
not just what happened.

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.

Included with Live Plus $199/mo 180 req/min · 600,000 a month · all 62 endpoints
trainer-stats · by_track 200 OK
// 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 }
  ]
}
Pre-aggregated server-side. One request, not a thousand rows and a group-by — which is exactly why it suits a model or an agent.
5splits per response — distance, trap, track, grade, going
60months of rolling window, your choice
600krequests a month on Live Plus
180requests a minute

What you build

One feed, plenty of surface area.

It's raw data — what you make of it is yours. A few things people wire it into:

Form & ratings engines

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}/stats

Exchange & trading tools

Betfair 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/latest

Alerting & bots

Push 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/upcoming

Research & backtesting

The 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}/results

Start here

Four calls to get the feel.

Paste your key and go — these four return the shape everything else follows.

Start free. Go live when you're ready.

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.