HORSERACINGAPI --:--:-- UTC Sign inFree key

Documentation / Reference

Courses

Every course in the five nations, with its latest meeting.

GET/v1/courses
Try itRuns against the real API with your key
No key yet? The free key is made the moment you sign in, and appears here by itself.Get a free key
optional
optional
https://api.horseracingapi.org/v1/courses?country=FR

Press Run to see the live answer here.

curl "https://api.horseracingapi.org/v1/courses?country=FR" \
  -H "X-API-Key: hra_live_…"

Parameters

NameIn · typeRequiredWhat it is
countryquery · stringNoOnly this nation: USA, GB, IRE, FR or RSA.USAGBIREFRRSA
pagequery · integerNoWhich page, from 1.

Returns

FieldTypeWhat it holds
course_idstringOur own id for the course.
namestringThe course.
countrystringUSA, GB, IRE, FR or RSA.
last_meetingstringThe day it last raced.

Example answer

{
  "data": [
    {
      "course_id": "cr_cgp1pfpm",
      "name": "Agen",
      "country": "FR",
      "last_meeting": "2026-06-20"
    },
    {
      "course_id": "cr_ergv3yxp",
      "name": "Agon-Coutainville",
      "country": "FR",
      "last_meeting": "2026-07-05"
    },
    "… 95 more"
  ],
  "meta": {
    "plan": "free",
    "window": "yesterday",
    "data_as_of": "2026-10-21T21:19:06Z",
    "count": 97,
    "page": 1,
    "per_page": 500,
    "total": 97,
    "total_pages": 1,
    "next_page": null,
    "prev_page": null,
    "next_cursor": null
  }
}

Errors

StatusCodeWhen
400bad_requestA value is the wrong shape, or the key was sent in the address.
401unauthorizedNo key, or one we do not know.
422unknown_parameterA parameter this endpoint does not take.
429rate_limitedOver your calls a minute. Retry after the seconds given.
429quota_exceededYour allowance is used. The answer says when it comes back.
503server_errorOn our side. Try again in a minute.