GB & AU · REST + WebSocket

The racecard,
as JSON.

Greyhound racing data for Great Britain and Australia — racecards, results, sectionals, starting prices and Betfair markets, plus dogs, trainers, tracks and breeding. Thirty-five endpoints, one clean envelope, official SDKs.

Free 500 calls/day $99/mo live compare plans →

No card to start · 35 endpoints · GB + AU

$ curl https://api.greyhoundapi.com/v1/races/1229082 \
     -H "X-API-Key: $GREYHOUNDAPI_KEY"

{
  "meta": { "data_as_of": "2026-07-08T14:03Z", "count": 1 },
  "data": {
    "race_id": 1229082, "track": "Romford", "distance_m": 400,
    "status": "complete",
    "runners": [
      { "trap": 1, "dog": "Miami Yeats", "position": 1, "sp": "5/2" },
      { "trap": 2, "dog": "Full Monty",  "position": 2 }
    ]
  }
}
import { GreyhoundAPI } from "@greyhoundapi/sdk";

const gapi = new GreyhoundAPI({ apiKey });

// today's GB card, then one race
const card = await gapi.racecards.today({ region: "GB" });
const race = await gapi.races.get(1229082);

console.log(race.runners[0].dog); // "Miami Yeats"
from greyhoundapi import GreyhoundAPI

gapi = GreyhoundAPI(api_key=key)

# today's GB card, then one race
card = gapi.racecards_today(region="GB")
race = gapi.race(1229082)

print(race["runners"][0]["dog"])  # "Miami Yeats"
use GreyhoundApi\Client;

$gapi = new Client($key);

// today's GB card, then one race
$card = $gapi->racecardsToday(["region" => "GB"]);
$race = $gapi->race(1229082)["data"];

echo $race["runners"][0]["dog"];  // "Miami Yeats"

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. Consistent shapes, measured freshness, no surprises.

By the numbers

A serious archive, kept fresh.

Coverage across Great Britain and Australia, measured in the open and updated continuously — figures refresh daily.

325kRaces
1.9MRunners tracked
8.5 yearsOf history
34Tracks
98.74% uptime 3567 min typical results delay Regions GB & AU Live status →

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.

Stop scraping

The data is the easy part. Keeping it isn't.

Greyhound data looks scrapeable until a track redesigns its results table on a Friday night. An API is the part you don't have to babysit.

DIY scraping

  • Markup changes silently and your pipeline breaks mid-card
  • Results arrive whenever — no way to tell fresh from stale
  • Timezones and per-track calendars you have to get right yourself
  • No sectionals, prices or history unless you stitch more sources
  • No push — you poll, and hope you didn't miss a race
  • It's your pager at 2am when GB and AU both change formats

GreyhoundAPI

  • One stable endpoint shape across every race and both regions
  • data_as_of and per-race freshness stamps on every response
  • UTC in, track-local resolved — dates just work
  • Sectionals, run times, SPs, Betfair markets and the archive included
  • A WebSocket stream pushes results the moment they land
  • We maintain the scrapers. You build the product.

Coverage

Two countries, one shape.

The same envelope, parameters and pagination across every endpoint and both regions. Filter anything by region=GB or region=AU.

2regions — Great Britain & Australia
35REST endpoints
1WebSocket results stream
0predictions, ratings or betting tips

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.

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.