Greyhounds search API
SearchDogs by name.
Search finds records by name and gives back their ids. Send q with three letters or more.
Try it
Your key stays in this browser and is filled in on every docs page.
200 OK13829 ms2 rows shownReal answer from 2026-11-03, trimmed
{
"data": [
{
"dog_id": "gh_afpjjfrrfq",
"name": "..",
"born": "0000-00-00",
"age_months": 24323,
"sex": "d",
"colour": null,
"season": null,
"sire": null,
"dam": null,
"career": {
"total_races": 14,
"total_wins": 0,
"win_pct": 0,
"by_grade": [
{
"grade": "M",
"races": 14,
"wins": 0
}
],
"first_run": "2012-12-08",
"last_run": "2013-06-23",
"days_since_last_run": 4881
}
},
{
"dog_id": "gh_9ejyqf446k",
"name": "A Bad Winter",
"born": "2020-06-01",
"age_months": 77,
"sex": "d",
"colour": "bk",
"season": "",
"sire": "Rockybay Foley",
"dam": "Rossinarna Biddy",
"career": {
"total_races": 59,
"total_wins": 11,
"win_pct": 18.64,
"by_grade": [
{
"grade": "A1",
"races": 3,
"wins": 0
},
{
"grade": "A2",
"races": 10,
"wins": 2
},
{
"grade": "A3",
"races": 11,
"wins": 2
}
],
"first_run": "2022-03-25",
"last_run": "2024-09-20",
"days_since_last_run": 774
}
}
],
"meta": {
"sport": "greyhounds",
"endpoint": "/search",
"count": 50,
"next_cursor": "WyJBIEJpdCBPZiBUcnVkeSIsMTEwNzAxNTQ3NV0",
"as_of": "2026-11-03T04:20:01Z",
"cached": false,
"age_seconds": 0
}
}No key yet? Get a free key: it reads yesterday for every sport and is filled in here once made.
Parameters
Query values this call takes. Anything else is refused with bad_param and the list it accepts.
| Name | Type | What it does | |
|---|---|---|---|
| q | string | optional | The name to look for. Three letters or more works best. |
| 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 |
|---|---|---|
| dog_id | id | The dog, by our id |
| name | string | Its name |
| born | date | Date of birth |
| age_months | integer | Age in metresonths |
| sex | string | Sex |
| colour | null | Colour |
| season | null | The season |
| sire | null | Sire |
| dam | null | Dam |
| career | object | Career |
| 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