APIHorseRacing

Documentation / Guides

Coverage by country

Which jurisdictions publish what, counted rather than claimed.

The most common support question about any racing feed is "why is this field null", and nine times in ten the answer is that the jurisdiction never published it. This guide is here so you can find that out before you write the code rather than after.

Two different questions

People say "coverage" to mean two things that need separating.

  • Do you have the races? How many races we hold from a country, and over what span.
  • Do the races carry the field? Whether the jurisdiction publishes official ratings, or class, or a winning time, at all.

A country can be strong on the first and useless on the second. France is a good example: tens of thousands of races, and official ratings on about four percent of runners.

The split that matters most

A full finishing order means every runner carries a position. Placings only means the first four home are published and nothing below them, so most of the field comes back with position: null.

Just over half of our archive is the second kind, almost entirely because of America. That is not a gap in our data; it is what was released, and no provider has what was never published.

If your work counts placings, counts beaten runners, or computes anything per-runner from a finishing position, you cannot use American racing for it. Better to know now.

Which fields exist where

Measured from the loaded archive at the last data load, as a share of that country's runners. These move as the backfill advances; the coverage page always has the current figures and /v1/meta/coverage returns them to your code.

FieldGBIREFRUSA
Finishing position82%81%76%45%
Starting price96%98%100%100%
Official rating76%63%4%77%
Race class100%6%1%
Winning time94%96%
Opening price59%52%
Tote dividends96%97%98%98%

Three of those are worth calling out because they contradict what people assume.

  • Price movement is British and Irish, and substantial there. Not the handful of runners we originally described. It is essentially absent everywhere else, so any model using it works on two countries.
  • America publishes ratings and tote dividends, on most races. It is the finishing order it does not publish.
  • Race class is a British idea. Ireland carries it on six percent of races and France on one. A filter on class is a filter on Britain.

Checking it from code

GET /v1/meta/coverage   # totals, the split, and your own window
GET /v1/countries       # per jurisdiction, with the field flags

Read /v1/countries once at startup and refuse to run on a region you cannot support, rather than producing quiet nonsense. A position_pct below about 0.6 means most runners have no finishing position.

Things that do not exist at all

  • Sectional and in-running times. None, anywhere, at any point in the archive. If your model needs fractions, this is the wrong feed and no plan changes that.
  • Bookmaker odds comparison. Starting price, an opening price where one was published, and the tote. We are not a price aggregator.
  • Predictions, tips or ratings of our own. We supply data and take no view on any race.

The archive is still filling

The backfill runs from January 2017 forward and has not reached the present yet. Every figure grows daily until it does, and nothing already loaded changes. data_as_of on every response and the status page both tell you where it has got to.