API reference
GreyhoundAPI documentation
Thirty-eight REST endpoints and a WebSocket stream over greyhound racing in Great Britain and Australia: racecards, runners, results, sectionals, starting prices, Betfair market summaries, dogs, trainers, owners, tracks and breeding. Race data only — no predictions, no ratings, no betting advice.
Machine-readable: OpenAPI 3.1 spec · Postman collection · generated from the same registry as these pages · Changelog. Every endpoint page has a Run it live console — bring a key.
Quickstart
Base URL https://api.greyhoundapi.com/v1, key in the X-API-Key
header, JSON in a meta/data envelope. First call:
curl "https://api.greyhoundapi.com/v1/racecards/today?region=GB" \
-H "X-API-Key: $GAPI_KEY"<?php
$ch = curl_init('https://api.greyhoundapi.com/v1/racecards/today?region=GB');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['X-API-Key: ' . getenv('GAPI_KEY')],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response['data']);const res = await fetch('https://api.greyhoundapi.com/v1/racecards/today?region=GB', {
headers: { 'X-API-Key': process.env.GAPI_KEY }
});
if (!res.ok) throw new Error(`GreyhoundAPI ${res.status}`);
const { meta, data } = await res.json();
console.log(meta.data_as_of, data);import { useEffect, useState } from 'react';
export default function Example() {
const [data, setData] = useState(null);
useEffect(() => {
fetch('https://api.greyhoundapi.com/v1/racecards/today?region=GB', {
headers: { 'X-API-Key': import.meta.env.VITE_GAPI_KEY }
})
.then((r) => r.json())
.then((body) => setData(body.data));
}, []);
if (!data) return <p>Loading…</p>;
return <pre>{JSON.stringify(data, null, 2)}</pre>;
}Browser code exposes whatever key it ships with — use a sandbox key for prototypes and proxy live keys through your own server in production.
import os
import requests
r = requests.get(
"https://api.greyhoundapi.com/v1/racecards/today?region=GB",
headers={"X-API-Key": os.environ["GAPI_KEY"]},
timeout=10,
)
r.raise_for_status()
body = r.json()
print(body["meta"]["data_as_of"], body["data"])New here? Read Getting started, then Timezones & dates and Data freshness — the two guides that make a GB + AU racing consumer behave correctly.
Guides
12Read these before the reference — they are the difference between a call that works and an integration that behaves.
Start here3
Reading a response5
Limits & delivery4
Racecards
2Upcoming greyhound racecards for Great Britain and Australia — every scheduled race with runners, traps, grades, distances and track-local start times, resolved per calendar day.
/v1/racecards/today
Every greyhound racecard scheduled today in Great Britain and Australia, resolved per track-local calendar day, with runners, traps, grades and start times.
/v1/racecards/upcoming
A rolling window of the next greyhound races to jump across GB and AU — from the next hour up to the next 48 — ordered by scheduled start time.
Races
6Search and retrieve individual greyhound races: full runner line-ups, grades, going, off-times, lifecycle status, results and starting-price and Betfair market summaries for any race in the archive.
/v1/races
Search the full greyhound race archive by date range, region, track, grade, distance, handicap flag and lifecycle status, with cursor pagination.
/v1/races/{race_id}
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.
/v1/races/{race_id}/runners
Just the runners for one race: trap draws, dogs, breeding, trainers, owners, weights — and positions, times and prices once the result is in.
/v1/races/{race_id}/result
The result view of a race: finishing order, starting prices, sectionals, run times, beaten distances, run comments, dividends and the exact off and receipt times.
/v1/races/{race_id}/status
The lifecycle and freshness record of a race: current status, official off delay, when results arrived and how far behind the scheduled start they were.
/v1/races/{race_id}/market
Factual market data for a race: each runner's starting price plus a Betfair exchange summary — last, low and high back/lay prices, matched volume and trade count.
Results
3Greyhound racing results as they arrive: finishing order, starting prices, winning times, sectionals, beaten distances and forecast/tricast dividends, searchable across the full historical archive.
/v1/results/today
Every greyhound race completed today across GB and AU, most recent first, with finishing order, prices, times and dividends.
/v1/results
Search historical greyhound results across the whole archive by date range, region, track, grade, distance, dog, trainer or owner.
/v1/results/latest
Results ordered by the moment they reached the pipeline — the polling companion to the WebSocket stream, with a since cursor for gapless catch-up.
Meetings
3Greyhound race meetings grouped by fixture — every race staged at a track on a given day, with per-meeting summaries for GB and AU fixtures.
/v1/meetings
Find greyhound meetings by track-local date, region and track — each with a summary of the races staged at the fixture.
/v1/meetings/today
Today's greyhound fixtures across GB and AU, each meeting with its full race list, resolved per track-local calendar day.
/v1/meetings/{meeting_id}
One meeting in full: the track, the track-local date and every race staged at the fixture with grade, distance, start time and status.
Dogs
7Individual greyhound records: identity, breeding, seasonality, career statistics, complete race-by-race form, upcoming entries, price history and head-to-head comparisons.
/v1/dogs/search
Find greyhounds by name, sire, dam or sex — the entry point for dog IDs used across the form, entries, prices and head-to-head endpoints.
/v1/dogs/{dog_id}
A greyhound's full profile: identity, colour, breeding, seasonality and career statistics including per-grade record and days since last run.
/v1/dogs/{dog_id}/form
A greyhound's complete race-by-race history, newest first: track, grade, distance, trap, position, price, sectional, run time, weight and run comment.
/v1/dogs/{dog_id}/entries
A greyhound's declared upcoming runs: race, track, grade, distance, trap draw and track-local start time.
/v1/dogs/{dog_id}/prices
Every historical run for a greyhound with its starting price and Betfair exchange summary — factual market data across the dog's whole career.
/v1/dogs/{dog_id}/head-to-head/{rival_id}
Compare two greyhounds directly: shared races, who finished ahead and how often, plus each dog's career record — the factual rivalry view.
/v1/dogs/{dog_id}/stats
Career splits for one greyhound: strike rate by distance, trap, track, grade and going, with best and average winning times in each — what tends to happen, rather than what happened.
Trainers
5Greyhound trainer profiles with factual career aggregates, upcoming declared runners and full historical results.
/v1/trainers/search
Find greyhound trainers by name and get the trainer IDs used across the profile, runners and results endpoints.
/v1/trainers/{trainer_id}
A trainer's profile with factual aggregates: runners and wins over the last 12 months, strike rate and the per-track breakdown.
/v1/trainers/{trainer_id}/runners
Every upcoming declared runner for a trainer across GB and AU, with race, trap, grade, distance and track-local start time.
/v1/trainers/{trainer_id}/results
A trainer's historical results, newest first: every runner with race, position, price and time, filterable by date range.
/v1/trainers/{trainer_id}/stats
Strike rate for one trainer split by track, distance, trap and grade over a rolling window — answering how a yard performs AT A GIVEN TRACK, which a flat results list cannot.
Owners
3Greyhound owner and syndicate records: registered dogs, upcoming entries and the results achieved under each ownership.
/v1/owners/search
Find greyhound owners and syndicates by name — the entry point for owner IDs used on the owner profile endpoint.
/v1/owners/{owner_id}
An owner or syndicate in full: registered greyhounds, upcoming entries and the results achieved under the ownership.
/v1/owners/{owner_id}/stats
Strike rate for one ownership by track, distance, trap and grade — and by trainer, the question only an owner can answer: which yards is this ownership actually winning with.
Tracks
4Every GB and AU greyhound track with its timezone, distances raced, trap-by-trap win statistics and track records — all recomputed nightly from published results.
/v1/tracks
Every GB and AU greyhound track that has raced in the last two weeks — currently-running courses, not the all-time roster — with its region, IANA timezone, active flag, the distances raced there and the grades it has actually carded in the last four weeks.
/v1/tracks/{track_id}
One track's record: name, region, timezone, active status, every distance raced there and the grades carded in the last four weeks.
/v1/tracks/{track_id}/races
Racecards and results at one track, filterable by track-local date range and lifecycle status.
/v1/tracks/{track_id}/stats
Descriptive statistics for a track: trap-by-trap win counts and percentages per distance, and the track record at each distance — recomputed nightly from results.
Breeding
2Sire and dam progeny records: every offspring with career aggregates, for greyhound breeding and pedigree research.
/v1/sires/{name}/progeny
Every recorded offspring of a sire with each dog's career aggregates — the pedigree view for greyhound breeding research.
/v1/dams/{name}/progeny
Every recorded offspring of a dam with each dog's career aggregates, mirroring the sire progeny endpoint.
Platform & reference
3Operational endpoints: live data-pipeline freshness, your own key usage and limits, and decode tables for grades, going codes and run-comment abbreviations.
/v1/status
Live health of the data pipeline: last sync per region, races currently awaiting results, and 24-hour delay statistics — the same numbers shown on the public status page.
/v1/usage
Your own API key's consumption: requests today and this billing month, your plan's limits, and when each window resets.
/v1/reference
Decode tables for the whole API: race grades, regions and timezones, going descriptions, runner statuses and the standard run-comment abbreviations.
WebSocket stream
Results and status changes pushed the moment they reach the
pipeline, over wss://greyhoundapi.com/v1/stream. Channels,
replay and limits are covered in the
WebSocket guide.