Greyhound results
Every race with its finishing order, traps, greyhounds, trainers, run times and starting prices.
Three ways in
| Endpoint | For | Plan |
|---|---|---|
/v1/results/yesterday | Yesterday, every meeting. The free key reads this. | Free key |
/v1/results/today | Today, each race added as it settles. | Race Pass |
/v1/results?date= | Any date from 1 January 2020. | Archive Pass |
How the records link
A race has a race_id and a track; each runner in result has a runner_id. Both ids are stable, so you can store them and join across days. The track id is the one Tracks lists, and the one the track parameter takes.
Provisional and final
result_status is provisional when a result first arrives and final once confirmed. settled_at is when it arrived, in UTC.
Common jobs
Show tonight's winners as they come in: poll /v1/results/today?since= every minute or two.
Build a trainer or greyhound history: walk the archive day by day with /v1/results?date=, paging each day, and key rows on runner_id.
Fill a sheet each morning: fetch /v1/results/yesterday.csv from Google Sheets.
curl "https://api.greyhoundracingapi.com/v1/results/today?country=GB&since=19%3A30" \ -H "X-API-Key: $KEY"
import os, requests r = requests.get( "https://api.greyhoundracingapi.com/v1/results/today", params={"country": "GB", "since": "19:30"}, headers={"X-API-Key": os.environ["KEY"]}, timeout=30, ) print(r.json()["data"])
const r = await fetch("https://api.greyhoundracingapi.com/v1/results/today?country=GB&since=19%3A30", { headers: { "X-API-Key": process.env.KEY }, }); console.log((await r.json()).data);
$ch = curl_init("https://api.greyhoundracingapi.com/v1/results/today?country=GB&since=19%3A30"); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["X-API-Key: " . getenv("KEY")], ]); $data = json_decode(curl_exec($ch), true); print_r($data["data"]);