Docs› Coverage› Pricing› Status› Support›
  1. Home
  2. Documentation
  3. Today's racecards

Greyhound racing API: Today's racecards

Today's racecards

Today's racecards for every meeting. UK, Ireland and Australia.

Documentation / Racecards

Today's racecards

Race PassArchive PassMCP tool todays_racecards

Today's racecards for every meeting. Covers the UK, Ireland and Australia.

GEThttps://api.greyhoundracingapi.com/v1/racecards/today

Try 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/racecards/today
Run works once the API is live; the code below works now with the login.

Parameters

NameTypeWhat it does
countrystringLeave out for all three countries.
GBIEAU
trackstringA track id from Tracks, such as romford.
pageintegerPage number, from 1. 50 races a page.
cursorstringThe meta.next_cursor from your last call, for the next page.
formatstringThe 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.

FieldTypeWhat it holds
race_idstringOur id for the race. Stable, safe to store.
trackstringTrack id, as in Tracks.
track_namestringTrack name for display.
countrystringGB, IE or AU.
nointegerRace number at the meeting.
offtimeScheduled start, local to the track, HH:MM.
off_utcdatetimeScheduled start in UTC.
distance_mintegerDistance in metres.
gradestringRace grade, where one is given.
runners[].trapintegerTrap, 1 to 6 (1 to 8 in Australia).
runners[].runnerstringGreyhound name.
runners[].runner_idstringOur id for the greyhound. Stable, safe to store.
runners[].trainerstringTrainer name.

Example answer

A real answer from 6 October 2026, 13:10 UTC, trimmed to one race and three runners.

{
    "data": [
        {
            "race_id": "rc_945kmh69",
            "track": "sheffield",
            "track_name": "Sheffield",
            "country": "GB",
            "no": 1,
            "off": "11:01",
            "off_utc": "2026-10-06T10:01:00Z",
            "distance_m": 500,
            "grade": "A4",
            "runners": [
                {
                    "pos": 2,
                    "trap": 1,
                    "runner": "Trickysteddybear",
                    "runner_id": "rn_jhsqwe1z",
                    "trainer": "R Holt",
                    "time": null,
                    "sp": "6/4",
                    "sp_decimal": 2.5
                },
                {
                    "pos": 3,
                    "trap": 2,
                    "runner": "Gurtnacrehy Rhys",
                    "runner_id": "rn_5g4y8zxv",
                    "trainer": "P Webster",
                    "time": null,
                    "sp": "11/4",
                    "sp_decimal": 3.75
                },
                {
                    "pos": 1,
                    "trap": 3,
                    "runner": "Listen Jessie",
                    "runner_id": "rn_xgfvd5nx",
                    "trainer": "K Hodson",
                    "time": null,
                    "sp": "7/1",
                    "sp_decimal": 8
                }
            ]
        }
    ],
    "meta": {
        "count": 50,
        "page": 1,
        "per_page": 50,
        "total": 177,
        "total_pages": 4,
        "next_cursor": "cDI",
        "took_ms": 58
    }
}

Errors

StatusCodeWhat to do
400bad_requestA value is not valid, a date is before 2020, or the key was put in the address. The message says which.
401unauthorizedNo key, or the key is wrong, revoked or expired. Check the header.
403upgrade_requiredYour plan does not include this endpoint. plan names the one that does.
422unknown_parameterA parameter this endpoint does not take. The message lists the ones it does.
429rate_limitedToo many calls this minute. Wait for Retry-After.
429quota_exceededToday's allowance is used. It resets at 00:00 UTC.
503server_errorOur side. Not counted against you. Try again shortly, and see status.