Greyhounds results API
ResultsResults with sectionals and starting prices.
Results returns every finished greyhounds race for a day. Leave out date and you get yesterday, which is also what the free key reads. Each row carries the final score, both sides with their ids and the competition, so one call fills a results page and every id opens the next one.
Try it
Your key stays in this browser and is filled in on every docs page.
{
"data": [
{
"race_id": "gh_gq1nzkg6hp",
"meeting_id": "gh_e2h08c7yme",
"region": "IE",
"track": {
"track_id": "gh_y2dtvvm3rm",
"name": "Clonmel",
"region": "IE",
"timezone": "Europe/Dublin"
},
"race_number": 12,
"grade": "A4",
"class_letter": "A",
"class_number": 4,
"distance_m": 480,
"race_type": "Flat",
"is_handicap": false,
"going": "Sand",
"field_size": 6,
"scheduled_start": {
"utc": "2026-11-01T21:26:00Z",
"local": "2026-11-01T21:26:00+00:00"
},
"status": "complete",
"off": {
"utc": "2026-11-01T21:26:00Z",
"delay_s": null
},
"freshness": {
"first_seen": "2026-10-28T16:05:01Z",
"results_received": "2026-11-01T21:35:01Z",
"results_delay_s": 541,
"updated": "2026-11-02T05:33:39Z"
},
"result": {
"result_status": "final",
"positions": [
{
"position": 1,
"trap": 4,
"rug": null,
"dog_id": "gh_1tkhafk5hv",
"dog_name": "Pops Sophie",
"trainer": {
"trainer_id": "gh_9cm11bfzej",
"name": "Ms Veronica Drea"
},
"sp": {
"fraction": "5/1",
"decimal": 6
},
"sectional_s": null,
"run_time_s": 28.89,
"adjusted_time_s": 28.89,
"weight_kg": 28.6,
"weight": {
"kg": 28.6,
"status": "weighed",
"last_race": {
"race_id": "gh_hbn9q3qr14",
"start": "2026-10-25T19:04:00Z",
"kg": 28.6,
"age_months": 24,
"days_before": 7
},
"change_kg": 0
}
},
{
"position": 2,
"trap": 1,
"rug": null,
"dog_id": "gh_br7eneej08",
"dog_name": "Kerryroad Jessie",
"trainer": {
"trainer_id": "gh_1ekcs7gf1m",
"name": "Kevin Mclean"
},
"sp": {
"fraction": "5/1",
"decimal": 6
},
"sectional_s": null,
"run_time_s": 29.06,
"adjusted_time_s": 29.06,
"weight_kg": 29.9,
"weight": {
"kg": 29.9,
"status": "weighed",
"last_race": {
"race_id": "gh_x3txpw6xqx",
"start": "2026-10-18T19:34:00Z",
"kg": 30.4,
"age_months": 36,
"days_before": 14
},
"change_kg": -0.5
}
},
{
"position": 3,
"trap": 6,
"rug": null,
"dog_id": "gh_xm8yzr4j8p",
"dog_name": "Chaotic Panther",
"trainer": {
"trainer_id": "gh_kwx9hd1s48",
"name": "Ms. Dora Hattemore"
},
"sp": {
"fraction": "7/2",
"decimal": 4.5
},
"sectional_s": null,
"run_time_s": 29.1,
"adjusted_time_s": 29.1,
"weight_kg": 29.5,
"weight": {
"kg": 29.5,
"status": "weighed",
"last_race": {
"race_id": "gh_x3txpw6xqx",
"start": "2026-10-18T19:34:00Z",
"kg": 29,
"age_months": 37,
"days_before": 14
},
"change_kg": 0.5
}
}
],
"forecast_dividend": null,
"tricast_dividend": null,
"prize_money": "1st €240 | 2nd €60 | 3rd €40 | 4th €40 | 5th €40 | 6th €40 Race Total €460",
"off": {
"utc": "2026-11-01T21:26:00Z",
"delay_s": null
},
"received": {
"utc": "2026-11-01T21:35:01Z",
"delay_s": 541
},
"weather": {
"hour_utc": "2026-11-01T21:00:00Z",
"temp_c": 6.4,
"humidity_pct": 89,
"wind_kph": 8.1,
"gust_kph": 16.2,
"wind_from": "NNE",
"wind_deg": 18,
"precip_mm": 0,
"conditions": "clear",
"before_race": {
"rain_6h_mm": 0,
"rain_24h_mm": 0.1,
"wind_avg_6h_kph": 9.6
}
}
}
},
{
"race_id": "gh_tyny3w183d",
"meeting_id": "gh_e2h08c7yme",
"region": "IE",
"track": {
"track_id": "gh_y2dtvvm3rm",
"name": "Clonmel",
"region": "IE",
"timezone": "Europe/Dublin"
},
"race_number": 11,
"grade": "A3",
"class_letter": "A",
"class_number": 3,
"distance_m": 480,
"race_type": "Flat",
"is_handicap": false,
"going": "Sand",
"field_size": 6,
"scheduled_start": {
"utc": "2026-11-01T21:09:00Z",
"local": "2026-11-01T21:09:00+00:00"
},
"status": "complete",
"off": {
"utc": "2026-11-01T21:09:00Z",
"delay_s": null
},
"freshness": {
"first_seen": "2026-10-28T16:05:01Z",
"results_received": "2026-11-01T21:30:01Z",
"results_delay_s": 1261,
"updated": "2026-11-02T05:33:39Z"
},
"result": {
"result_status": "final",
"positions": [
{
"position": 1,
"trap": 1,
"rug": null,
"dog_id": "gh_awdtrr8f7e",
"dog_name": "Dakota Fern",
"trainer": {
"trainer_id": "gh_q5nmrewqgt",
"name": "Mr. William Esmonde"
},
"sp": {
"fraction": "7/2",
"decimal": 4.5
},
"sectional_s": null,
"run_time_s": 28.72,
"adjusted_time_s": 28.72,
"weight_kg": 27.2,
"weight": {
"kg": 27.2,
"status": "weighed",
"last_race": {
"race_id": "gh_07c6ww2r2q",
"start": "2026-10-04T18:42:00Z",
"kg": 26.8,
"age_months": 23,
"days_before": 28
},
"change_kg": 0.4
}
},
{
"position": 2,
"trap": 4,
"rug": null,
"dog_id": "gh_20873wp2t7",
"dog_name": "Roses Rapper",
"trainer": {
"trainer_id": "gh_pacyxtrtkj",
"name": "Mr. Paul King"
},
"sp": {
"fraction": "3/1",
"decimal": 4
},
"sectional_s": null,
"run_time_s": 28.96,
"adjusted_time_s": 28.96,
"weight_kg": 34.5,
"weight": {
"kg": 34.5,
"status": "weighed",
"last_race": {
"race_id": "gh_f5g2my7qdb",
"start": "2026-10-25T19:24:00Z",
"kg": 34,
"age_months": 23,
"days_before": 7
},
"change_kg": 0.5
}
},
{
"position": 3,
"trap": 5,
"rug": null,
"dog_id": "gh_9hkadykh3f",
"dog_name": "Chaotic Matilda",
"trainer": {
"trainer_id": "gh_kwx9hd1s48",
"name": "Ms. Dora Hattemore"
},
"sp": {
"fraction": "9/4",
"decimal": 3.25
},
"sectional_s": null,
"run_time_s": 29.31,
"adjusted_time_s": 29.31,
"weight_kg": 24,
"weight": {
"kg": 24,
"status": "weighed",
"last_race": {
"race_id": "gh_f5g2my7qdb",
"start": "2026-10-25T19:24:00Z",
"kg": 24,
"age_months": 38,
"days_before": 7
},
"change_kg": 0
}
}
],
"forecast_dividend": null,
"tricast_dividend": null,
"prize_money": "1st €260 | 2nd €65 | 3rd €40 | 4th €40 | 5th €40 | 6th €40 Race Total €485",
"off": {
"utc": "2026-11-01T21:09:00Z",
"delay_s": null
},
"received": {
"utc": "2026-11-01T21:30:01Z",
"delay_s": 1261
},
"weather": {
"hour_utc": "2026-11-01T21:00:00Z",
"temp_c": 6.4,
"humidity_pct": 89,
"wind_kph": 8.1,
"gust_kph": 16.2,
"wind_from": "NNE",
"wind_deg": 18,
"precip_mm": 0,
"conditions": "clear",
"before_race": {
"rain_6h_mm": 0,
"rain_24h_mm": 0.1,
"wind_avg_6h_kph": 9.6
}
}
}
}
],
"meta": {
"sport": "greyhounds",
"endpoint": "/results",
"count": 50,
"page": 1,
"per_page": 50,
"total": 171,
"total_pages": 4,
"next_cursor": "WyIyMDI2LTExLTAxIDE2OjEwOjAxIiw5NTg5MDcwNzFd",
"next_page": 2,
"prev_page": null,
"as_of": "2026-11-02T09:40:35Z",
"cached": false,
"age_seconds": 0
}
}Parameters
Query values this call takes. Anything else is refused with bad_param and the list it accepts.
| Name | Type | What it does | |
|---|---|---|---|
| date | date | optional | One day, written YYYY-MM-DD. Leave it out for the default day. The free key reads yesterday only. |
| competition | id | optional | Only this competition, by its id from Competitions. |
| page | integer | optional | Which page of rows, from 1. |
| per_page | integer | optional | Rows per page, up to 100 on most lists. |
Returns
Each row of data, from a real answer. Every id is ours and opens its own endpoint.
| Field | Type | What it holds |
|---|---|---|
| race_id | id | The race, by our id |
| meeting_id | id | The meeting, by our id |
| region | string | The region |
| track | object | The track |
| race_number | integer | Race number |
| grade | string | The grade |
| class_letter | string | Class letter |
| class_number | integer | Class number |
| distance_m | integer | Distance in metres |
| race_type | string | Race type |
| is_handicap | boolean | Is handicap |
| going | string | The going |
| field_size | integer | Runners in the race |
| scheduled_start | object | Scheduled start time |
| status | string | Its state: scheduled, live, finished or similar |
| off | object | Off |
| freshness | object | Freshness |
| result | object | The result |
| meta | What it holds |
|---|---|
| sport, endpoint | What you asked |
| count | Rows in this answer |
| page, per_page, total, next_cursor | Where you are in a paged list, when it is paged |
| as_of | When the data was built |
| cached, age_seconds | Whether this is a stored copy, and its age |
| access | On the free key: what it reads, and the plan that opens the rest |
Errors
Codes this call can give. Each is explained in Errors.
| Status | Code | When |
|---|---|---|
| 401 | no_key | No key sent, or not in a form we read |
| 401 | bad_key | A key we do not know |
| 403 | plan | The free key asked for a date other than yesterday |
| 422 | bad_param | A value this call does not take |
| 429 | rate | Over the calls a minute for your plan |
| 503 | upstream | The data is not answering; retry after Retry-After |
The free key reads yesterday. The Greyhounds plan opens live, fixtures and every date held, for $79 a month.
Add Greyhounds