Greyhound racing data API
Greyhounds data, live through one keyGreyhound racing in Great Britain, Ireland and Australia: today's cards with every trap, results with sectionals and starting prices, each dog's form and times, trainers, and trap and time statistics for every track.
Endpoints
Everything greyhounds answers
Each one opens in the docs with a live console, your key already filled in.
| Method | Address | What it gives | Free key | |
|---|---|---|---|---|
| GET | /v1/greyhounds/cards/today | Today's cards with every trap | Plan | Try it |
| GET | /v1/greyhounds/results | Results with sectionals and starting prices | Yesterday | Try it |
| GET | /v1/greyhounds/races/{id} | One race with every trap measured | Yesterday | Try it |
| GET | /v1/greyhounds/dogs/{id}/form | A dog's runs and times, newest first | Yesterday | Try it |
| GET | /v1/greyhounds/trainers/{id} | A trainer and their figures | Yesterday | Try it |
| GET | /v1/greyhounds/tracks | Every track held | Yesterday | Try it |
| GET | /v1/greyhounds/tracks/{id}/stats | Trap and time statistics for a track | Yesterday | Try it |
| GET | /v1/greyhounds/search | Dogs by name | Yesterday | Try it |
A real answer
What comes back
Kept from the API each night, exactly as a caller receives it, lists cut to a few rows.
{
"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
}
}{
"data": [
{
"track_id": "gh_kekb8vzb4q",
"name": "Ballarat",
"slug": "ballarat",
"region": "AU",
"timezone": "Australia/Melbourne",
"active": true,
"distances": [
390,
450,
545
],
"grades": [
"FF",
"G5",
"G6"
]
},
{
"track_id": "gh_3fvnxcztd5",
"name": "Bendigo",
"slug": "bendigo",
"region": "AU",
"timezone": "Australia/Melbourne",
"active": true,
"distances": [
101,
425,
430
],
"grades": [
"FF",
"G4",
"G5"
]
}
],
"meta": {
"sport": "greyhounds",
"endpoint": "/tracks",
"count": 62,
"as_of": "2026-11-03T04:20:01Z",
"cached": false,
"age_seconds": 0
}
}{
"data": {
"race_id": "gh_3ryzkd67vc",
"region": "AU",
"track": {
"track_id": "gh_zy56tg2824",
"name": "Muswellbrook"
},
"distance_m": 328,
"grade": "M",
"is_handicap": false,
"scheduled_start": {
"utc": "2013-06-23 03:05:00"
},
"field": {
"runners": 9,
"avg_first_split_s": null,
"with_split_figure": 0
},
"runners": [
{
"trap": 0,
"dog_id": "gh_bx80gj740q",
"dog_name": "Bella Nina",
"pace": {
"avg_first_split_s": null,
"runs": 0
},
"here": {
"runs": 2,
"wins": 0,
"places": 2,
"win_pct": 0,
"scope": "this track and distance"
},
"from_this_trap": {
"track_trap_win_pct": null,
"track_trap_runs": 0
},
"at_this_grade": {
"grade": "M",
"runs": 15,
"wins": 0,
"win_pct": 0
},
"layoff": {
"days_since_last_run": 12,
"band": "8-14",
"band_runs": 4,
"band_wins": 0,
"band_win_pct": 0
}
},
{
"trap": 1,
"dog_id": "gh_stdj3mq26x",
"dog_name": "Moon Terrace",
"pace": {
"avg_first_split_s": null,
"runs": 0
},
"here": {
"runs": 8,
"wins": 0,
"places": 2,
"win_pct": 0,
"scope": "this track and distance"
},
"from_this_trap": {
"track_trap_win_pct": 22.23,
"track_trap_runs": 1588
},
"at_this_grade": {
"grade": "M",
"runs": 28,
"wins": 0,
"win_pct": 0
},
"layoff": {
"days_since_last_run": 415,
"band": "57+",
"band_runs": 4,
"band_wins": 0,
"band_win_pct": 0
}
},
{
"trap": 2,
"dog_id": "gh_afpjjfrrfq",
"dog_name": "..",
"pace": {
"avg_first_split_s": null,
"runs": 0
},
"here": {
"runs": 5,
"wins": 0,
"places": 2,
"win_pct": 0,
"scope": "this track and distance"
},
"from_this_trap": {
"track_trap_win_pct": 14.03,
"track_trap_runs": 1554
},
"at_this_grade": {
"grade": "M",
"runs": 14,
"wins": 0,
"win_pct": 0
},
"layoff": {
"days_since_last_run": 7,
"band": "0-7",
"band_runs": 7,
"band_wins": 0,
"band_win_pct": 0
}
}
],
"thin": [
{
"trap": 0,
"dog_name": "Bella Nina",
"reason": "2 runs at this track and distance",
"min_runs": 6
},
{
"trap": 2,
"dog_name": "..",
"reason": "5 runs at this track and distance",
"min_runs": 6
},
{
"trap": 3,
"dog_name": "Boss Number Two",
"reason": "2 runs at this track and distance",
"min_runs": 6
}
],
"form_state_computed_utc": "2026-11-02 03:50:02",
"note": "Measurements only, never a forecast. Form state is rebuilt nightly."
},
"meta": {
"sport": "greyhounds",
"endpoint": "/races/{id}",
"as_of": "2026-11-03T04:20:01Z",
"cached": false,
"age_seconds": 0
}
}Goes well with
Sports often taken with greyhounds
Can I try greyhounds before I pay?
Yes. The free key reads yesterday's greyhounds data on every endpoint except live and fixtures, 50 calls a day, no card.
What does the Greyhounds plan include?
Every greyhounds endpoint, live and upcoming included, the full history we hold, 120 calls a minute and 250,000 a month, for $79 a month or $790 a year.
Does it answer like the other sports?
Yes. Greyhounds answers in the same shape as every other sport, through the same key, so code written for one reads the rest.
Can I use it with Claude?
Yes. The MCP server turns each greyhounds endpoint into a tool, on the same key.