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

Documentation / Results

Latest results

The newest results, as they are declared, each with its full finishing order.

GET/v1/results/latest
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/results/latest?per_page=2

Press Run to see the live answer here.

curl "https://api.horseracingapi.org/v1/results/latest?per_page=2" \
  -H "X-API-Key: hra_live_…"

Parameters

NameIn · typeRequiredWhat it is
countryquery · stringNoOnly this nation: USA, GB, IRE, FR or RSA.USAGBIREFRRSA
per_pagequery · integerNoHow many to a page, 1 to 50. Default 25.

Returns

FieldTypeWhat it holds
race_idstringOur own id for the race. Stable, safe to store.
meeting_idstringThe meeting it was run at.
course_idstringThe course.
coursestringWhere it was run.
countrystringUSA, GB, IRE, FR or RSA.
datestringThe course's own calendar day, YYYY-MM-DD.
timestringThe advertised start, course time, HH:MM.
off_timestringWhen it actually started, course time, HH:MM:SS.
namestringThe race title as run.
race_typestringFlat, Hurdle, Chase and so on, where the nation publishes it.
classstringWhere the nation publishes one, else null.
distancestringAs the course states it.
goingstringThe ground as declared on the day.
surfacestringTurf, Dirt or All Weather.
handicapbooleanWhether it was a handicap.
runnersintegerHow many started.
result_availablebooleanTrue once the result is declared.
winning_timestringWhere the nation publishes one, as M:SS.ss, else null. Never guessed.
finishing_orderarrayEvery runner in order: position, status, distance_beaten, cloth, draw, horse_id, horse, age, weight, jockey_id, jockey, trainer_id, trainer, owner_id, owner.

Example answer

{
  "data": [
    {
      "race_id": "rc_3yh12h8j",
      "meeting_id": "mt_fhx5gesa",
      "course_id": "cr_rsqqeptz",
      "course": "Belmont Park",
      "country": "USA",
      "date": "2026-10-21",
      "time": "21:05",
      "off_time": "21:12:15",
      "name": "Race 8 - Maiden Claiming",
      "race_type": null,
      "class": null,
      "distance": "6f 110y",
      "going": "Firm",
      "surface": "Dirt",
      "handicap": false,
      "runners": 9,
      "result_available": true,
      "winning_time": null,
      "finishing_order": [
        {
          "position": 1,
          "status": "finished",
          "distance_beaten": null,
          "cloth": 7,
          "draw": 7,
          "horse_id": "hs_34xer2s6",
          "horse": "Richies Love",
          "age": 3,
          "weight": "8-11",
          "jockey_id": "jk_s4cw84ry",
          "jockey": "Kendrick Carmouche",
          "trainer_id": "tr_ah0dgtjt",
          "trainer": "Michael Miceli",
          "owner_id": "ow_1tzx1gq3",
          "owner": "Ruggeri Stable, Inc And Miceli, Michael"
        },
        {
          "position": 2,
          "status": "finished",
          "distance_beaten": null,
          "cloth": 6,
          "draw": 6,
          "horse_id": "hs_85bsv5vb",
          "horse": "Rocolino",
          "age": 3,
          "weight": "8-11",
          "jockey_id": "jk_jha0spxk",
          "jockey": "Dalila Rivera",
          "trainer_id": "tr_7wgf9v8z",
          "trainer": "Lolita Shivmangal",
          "owner_id": "ow_qkc7648q",
          "owner": "Bueti, Marie"
        },
        "… 7 more"
      ]
    },
    {
      "race_id": "rc_0hks9m2r",
      "meeting_id": "mt_gghvc8xt",
      "course_id": "cr_1e5waa5x",
      "course": "Horseshoe Indianapolis",
      "country": "USA",
      "date": "2026-10-21",
      "time": "20:53",
      "off_time": "20:57:27",
      "name": "Race 6 - Starter Optional Claiming",
      "race_type": null,
      "class": null,
      "distance": "1m",
      "going": "Firm",
      "surface": "Turf",
      "handicap": false,
      "runners": 7,
      "result_available": true,
      "winning_time": null,
      "finishing_order": [
        {
          "position": 1,
          "status": "finished",
          "distance_beaten": null,
          "cloth": 6,
          "draw": 6,
          "horse_id": "hs_nrpyv461",
          "horse": "Shankar",
          "age": 6,
          "weight": "8-10",
          "jockey_id": "jk_9seas2qn",
          "jockey": "Joseph Romero",
          "trainer_id": "tr_jb8vesce",
          "trainer": "Tracey Wisner",
          "owner_id": "ow_zg8dyabb",
          "owner": "Tracey Wisner Racing Llc"
        },
        {
          "position": 2,
          "status": "finished",
          "distance_beaten": null,
          "cloth": 5,
          "draw": 5,
          "horse_id": "hs_5sh540e3",
          "horse": "Baytown Parfait",
          "age": 5,
          "weight": "8-12",
          "jockey_id": "jk_202803rr",
          "jockey": "Orlando Mojica",
          "trainer_id": "tr_gfddj9tg",
          "trainer": "Michael Tomlinson",
          "owner_id": "ow_93s0r903",
          "owner": "Liberty Racing Stables Llp"
        },
        "… 5 more"
      ]
    }
  ],
  "meta": {
    "plan": "results",
    "window": "2022-01-01 to now",
    "data_as_of": "2026-10-21T21:19:06Z",
    "count": 2
  }
}

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.
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.