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

Documentation / Horses

Last ten runs

The last ten runs, newest first.

GET/v1/horses/{horse_id}/form
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
required
https://api.horseracingapi.org/v1/horses/hs_yrjp3fkv/form

Press Run to see the live answer here.

curl "https://api.horseracingapi.org/v1/horses/hs_yrjp3fkv/form" \
  -H "X-API-Key: hra_live_…"

Parameters

NameIn · typeRequiredWhat it is
horse_idpath · stringYesThe horse.

Returns

FieldTypeWhat it holds
datestringThe day of the run.
race_idstringThe race, for the full result.
course_idstringThe course.
coursestringThe course name.
countrystringUSA, GB, IRE, FR or RSA.
race_typestringFlat, Hurdle, Chase and so on.
classstringWhere published, else null.
distancestringAs the course states it.
goingstringThe ground on the day.
surfacestringTurf, Dirt or All Weather.
runnersintegerHow many started.
positionintegerWhere it finished, or null.
statusstringfinished, or how the run ended: pulled_up, fell and so on.
distance_beatenstringHow far behind the winner, where published.
weightstringThe weight carried.
jockey_idstringWho rode it.
jockeystringThe jockey name.
trainer_idstringWho trained it then.
trainerstringThe trainer name.

Example answer

{
  "data": [
    {
      "date": "2026-10-20",
      "race_id": "rc_9c9cmvvp",
      "course_id": "cr_t6pv23df",
      "course": "Bordeaux Le Bouscat",
      "country": "FR",
      "race_type": "Flat",
      "class": null,
      "distance": "1m 1f 97y",
      "going": "Soft",
      "surface": "Turf",
      "runners": 6,
      "position": 1,
      "status": "finished",
      "distance_beaten": null,
      "weight": "9-2",
      "jockey_id": "jk_3k4knfq5",
      "jockey": "I Mendizabal",
      "trainer_id": "tr_aawg032s",
      "trainer": "E Libaud"
    },
    {
      "date": "2026-09-21",
      "race_id": "rc_n7exgvs9",
      "course_id": "cr_k3311dqx",
      "course": "Angers",
      "country": "FR",
      "race_type": "Flat",
      "class": null,
      "distance": "1m 2f 96y",
      "going": "Good",
      "surface": "Turf",
      "runners": 6,
      "position": 1,
      "status": "finished",
      "distance_beaten": null,
      "weight": "8-13",
      "jockey_id": "jk_tvq9x47z",
      "jockey": "A Pouchin",
      "trainer_id": "tr_aawg032s",
      "trainer": "E Libaud"
    },
    "… 8 more"
  ],
  "meta": {
    "plan": "results",
    "window": "2022-01-01 to now",
    "data_as_of": "2026-10-21T21:19:06Z",
    "count": 10
  }
}

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.
403upgrade_requiredYour plan does not open this endpoint. It is on the Results plan.
404not_foundNo record has that id.
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.