The Veredus Analytics API
Point-in-time racing analytics as data: 180 computed features for every runner in every race — over 530,000 UK, Irish and international races back to 1988, and refreshed daily ahead of upcoming racing. Every value is computed strictly from information available before the race's off-time, so the dataset is safe to train on: no leakage, deterministic recomputation, one flat row per runner-race.
Veredus does not predict races. We produce the inputs — you bring the models, research questions and strategies.
Authentication
Requests are authenticated with an API key sent in the X-Api-Key header. Create and manage keys from your account — each key is shown once at creation and can be revoked at any time. Data endpoints require a key (or a signed-in session); the /api/v1/demo sample day is open for evaluation without one.
curl -H "X-Api-Key: vak_..." \
https://api.veredusanalytics.com/api/v1/races/{raceId}/analyticsEndpoints
A small, predictable REST surface served from api.veredusanalytics.com; access is issued with your subscription.
/api/v1/race-days?from=&to=Days that have racing, with race counts — navigate the calendar./api/v1/races?date=YYYY-MM-DDEvery race on a day (or the recent feed when no date is given)./api/v1/races/{raceId}A single race with its runners./api/v1/races/{raceId}/analyticsThe analytics payload: one object per runner with all 180 fields below./api/v1/courses/{courseId}/analytics?from=&to=&discipline=&distanceBucket=&surface=Point-in-time course snapshots (draw bias, favourite rates, draw-third win rates) per discipline / distance bucket / surface — monthly historically, daily once live. The same rows the runner analytics join against./api/v1/coursesThe browsable course collection: name, region, track variant, surface kind and direction./api/v1/courses/{courseId}?asOf=YYYY-MM-DDThe full course profile: identity (variant, sibling course, operator), layout, measured topology (circuit, turns with severities, climb, elevation profile) and the dated surface history — asOf returns the surface in force on any date./api/v1/open-data/course-topologyThe measured course-topology dataset in full — open data under ODbL, no key required. See Data licences for the attribution and licence split.Measured course topology (the courseTotalClimbM, courseUndulationIndex and courseElevationRangeM fields and the course-profile topology block) derives from OpenStreetMap and is open data under ODbL — © OpenStreetMap contributors; elevation produced using Copernicus data and information funded by the European Union (EU-DEM). Everything else is licensed under your subscription. Full details: Data licences.
Sample analytics response (truncated)
[
{
"raceId": "var_4f2a6dses2npqomq",
"horseId": "vah_9k3m2npq7x8w4t6r",
"computedAtUtc": "2026-07-05T20:04:11Z",
"careerRuns": 7,
"careerWins": 2,
"courseForm": 0.67,
"winRatioLast5": 0.4,
"improvingRpr": true,
"jockeyWinRate90Day": 0.21,
"trainer14DayWinRate": 0.25,
"stableForm": "3-7-18",
"sireProgenyWinRate": 0.14,
"drawBiasStrength": 0.08,
"distanceDifferenceY": 220,
"ratingDifference": -999,
"...": "…and the rest of the 180 fields"
}
]The data dictionary — all 180 fields
Conventions: rates are fractions in [0, 1]; form scores average 3 points for a win, 2 for 2nd, 1 for 3rd and 0 otherwise (position 0 — outside the top 9 or a non-finisher — always scores 0), normalised to [0, 1]; enum-coded fields are integers where 0 means unknown; the four delta fields use −999 when no previous run exists; 730 in lastRunDays means no previous run.
Keys identifying the runner-race pair and when the row was computed.
| Field | Type | Description |
|---|---|---|
raceId | string | Veredus race identifier (e.g. var_4f2a6dses2npqomq). |
horseId | string | Veredus horse identifier (e.g. vah_9k3m2npq7x8w4t6r). |
computedAtUtc | string (ISO date-time) | When this row was last (re)computed. Provisional pre-race recomputes and the final post-race compute overwrite the same row. |
position | number | Finishing position once the race has run; 0 for pre-race (provisional) rows and for finishes outside the top 9 or non-finishers. |
Getting access
Create an account, then issue your API keys from the account page. Subscription plans are on the pricing page.
