Documentation / Guides

Data integrity

Check what we hold for any date before you pay for it — races carded, results recorded, and anything without a result, with the reason.

Every claim on this page is checkable. Pick any date and see exactly what we hold for it — races carded, results recorded, and anything that has no result, with the reason. No key required, and the same figures our own monitoring reads.

—races in the archiveGreat Britain and Australia
—have a recorded resultof races that were actually run
—runner recordstimes, prices, sectionals
—confirmed abandonedcarded, never run

Look up any date

Counts rebuild nightly. If a day is short, this will say so.

Quick ranges

Loading…

Three states, and why the difference matters

A race with no result is not automatically a gap in our data. Cards get abandoned, races get voided, meetings get called off. What matters is being able to tell those apart, so you can reconcile a day against any other source and know whether to investigate or move on.

Complete result recorded

The race ran and we hold its finishing order, run times, sectionals where the track records them, starting prices and exchange prices.

This is what the results endpoints return.

Abandoned never run

The race was carded and did not take place, or ran and was voided. We confirm this against source before marking it — never by assuming an old race without a result must have been called off.

Requesting its result returns 200 with result_available: false, so a polling client stops immediately instead of retrying forever.

Unresolved no verdict yet

The race ran, has no result, and we have not yet confirmed why. These are the only genuine unknowns, and every one is visible in the checker above.

Results searches return meta.unresolved beside the total, so a short day explains itself without a support ticket.

How we know

Every racing day is reconciled against our source. Where a card produced results and one of its races is absent from them, that race did not run and is marked accordingly. Where a whole meeting produced nothing, we confirm the meeting itself rather than inferring from silence — a source that fails to answer is never treated as a source saying no.

Anything that cannot be positively confirmed stays unresolved and stays visible. That is why the figure above is not 100%.

Pull the figures yourself

The checker above is powered by an open endpoint. No key, no quota, no rate limit — it returns aggregate day counts only, and it is the same table our own dashboards read.

GET https://greyhoundapi.com/data-integrity.json?from=2026-07-10&to=2026-07-13&region=GB

Ranges are capped at 366 days. complete + abandoned + unresolved always equals races; if it ever does not, our rebuild is wrong and we would like to know.