Documentation / Results
Results by date
Archive PassMCP tool
search_resultsResults on any date from 2020 on. Covers the UK, Ireland and Australia.
GEThttps://api.greyhoundracingapi.com/v1/resultsTry it
No key yet? The free key is made in a moment and filled in here for you. Get a free key
GET https://api.greyhoundracingapi.com/v1/resultsRun works once the API is live; the code below works now with the login.
Parameters
| Name | Type | What it does | |
|---|---|---|---|
date | date | required | The day you want, YYYY-MM-DD, from 2020-01-01 on. |
country | string | Leave out for all three countries. GBIEAU | |
track | string | A track id from Tracks, such as romford. | |
page | integer | Page number, from 1. 50 races a page. | |
cursor | string | The meta.next_cursor from your last call, for the next page. | |
format | string | The answer format. Adding .csv to the path does the same as csv.jsoncsv |
Returns
A list of races in data and paging in meta: count, page, per_page, total, total_pages and next_cursor. A field we do not have for a race is null, never left out. See Pagination.
| Field | Type | What it holds |
|---|---|---|
race_id | string | Our id for the race. Stable, safe to store. |
track | string | Track id, as in Tracks. |
track_name | string | Track name for display. |
country | string | GB, IE or AU. |
no | integer | Race number at the meeting. |
off | time | Scheduled start, local to the track, HH:MM. |
off_utc | datetime | Scheduled start in UTC. |
distance_m | integer | Distance in metres. |
grade | string | Race grade, where one is given. |
settled_at | datetime | When the result arrived, UTC. Use it with since. |
result_status | string | provisional until confirmed, then final. |
result[].pos | integer | Finishing position. |
result[].trap | integer | Trap, 1 to 6 (1 to 8 in Australia). |
result[].runner | string | Greyhound name. |
result[].runner_id | string | Our id for the greyhound. Stable, safe to store. |
result[].trainer | string | Trainer name. |
result[].time | number | Run time in seconds. |
result[].sp | string | Starting price as given: fractional where there is one. |
result[].sp_decimal | number | Starting price in decimal odds. |
Example answer
A real answer from 6 October 2026, 13:10 UTC, trimmed to one race and three runners.
{
"data": [
{
"race_id": "rc_93w8ebbh",
"track": "nottingham",
"track_name": "Nottingham",
"country": "GB",
"no": 12,
"off": "21:46",
"off_utc": "2026-10-05T20:46:00Z",
"distance_m": 500,
"grade": "A3",
"settled_at": "2026-10-05T20:50:01Z",
"result_status": "final",
"result": [
{
"pos": 1,
"trap": 4,
"runner": "Bluejig Polly",
"runner_id": "rn_rz5pvd9h",
"trainer": "J Gray",
"time": 29.97,
"sp": "5/2",
"sp_decimal": 3.5
},
{
"pos": 2,
"trap": 1,
"runner": "Twilight Brook",
"runner_id": "rn_e4a6b61k",
"trainer": "P M Holland",
"time": 30.07,
"sp": "11/4",
"sp_decimal": 3.75
},
{
"pos": 3,
"trap": 3,
"runner": "Skeard Noah",
"runner_id": "rn_9syqf0e4",
"trainer": "B Denby",
"time": 30.31,
"sp": "5/2",
"sp_decimal": 3.5
}
]
}
],
"meta": {
"count": 50,
"page": 1,
"per_page": 50,
"total": 354798,
"total_pages": 7096,
"next_cursor": "cDI",
"took_ms": 57
}
}Errors
| Status | Code | What to do |
|---|---|---|
| 400 | bad_request | A value is not valid, a date is before 2020, or the key was put in the address. The message says which. |
| 401 | unauthorized | No key, or the key is wrong, revoked or expired. Check the header. |
| 403 | upgrade_required | Your plan does not include this endpoint. plan names the one that does. |
| 422 | unknown_parameter | A parameter this endpoint does not take. The message lists the ones it does. |
| 429 | rate_limited | Too many calls this minute. Wait for Retry-After. |
| 429 | quota_exceeded | Today's allowance is used. It resets at 00:00 UTC. |
| 503 | server_error | Our side. Not counted against you. Try again shortly, and see status. |