Horse Racing Data Feed
A horse racing data feed delivered as a RESTful JSON API. Runner form and career stats on the free tier, results and margins on Pro, live bookmaker prices and real-time results on Premium — across thoroughbred, harness and greyhound racing in 24+ countries.
Sign in with Google, GitHub or email, via Replit. No credit card needed.
What's in the Horse Racing Data Feed
Pre-race form, post-race results and in-market prices, all as structured JSON from one API key.
Runner Form & Career Stats
Every runner in every race: number, barrier, weight, jockey, trainer, form string, and career statistics broken down by track, distance and condition, with win and place strike rates.
Meetings & Venues
Discover what is running on any date, in any timezone, before you request a race. Track names resolve through fuzzy matching and aliases, so a slug you half-remember still lands.
Results & Margins
Finishing positions, margins and the official starting price for completed races — one race, or an entire meeting in a single call. Scratchings stay in the response, flagged rather than dropped.
Live Bookmaker Prices
Current win and place prices per runner, one entry per bookmaker and market type, with opening, high and low prices and movement history. Built to be polled through the last minutes before the jump.
Predictions & Analytics
ML win and place probabilities, speed maps, class profiles, form badges, track bias, and jockey and trainer statistics — derived from the same feed, so nothing needs a second integration.
24+ Countries, 3 Codes
Thoroughbred, harness and greyhound racing across 24+ countries, through one set of parameters and one API key.
How Often the Feed Updates
Pre-race form is a daily feed on every tier. What changes with the tier is how quickly race-day events reach you — scratchings, results, and the prices bookmakers are quoting.
| Data | Free & Pro | Premium & Enterprise |
|---|---|---|
| Race form and career stats | Daily, ahead of race day | Daily, ahead of race day |
| Scratchings, track condition, weather | With the batch pipeline | Live, as they are declared |
| Results and margins | Every 2–3 hours (Pro) | As races settle, with interim and correct-weight stages |
| Official starting price | After the race settles (Pro) | After the race settles |
| Live win and place prices | Not included | Continuous, 5-second edge cache |
Every race in the results feed carries a resultStatus — final, interim, pending or abandoned — so a race that has not been run is distinguishable from one that has run but is not ingested yet. An unresulted race returns 200 with pending, never a 404. Live price responses are cached for 5 seconds at the edge, so polling faster than that returns the same body; the prices reference covers cadence and staleness in detail, and the horse racing odds API page shows what each quote carries.
Feed Endpoints
Every endpoint takes the same date, track and race parameters, authenticated with an X-API-Key header. Call meetings first to discover what is running, then pull form, results or prices for any race it lists.
| Endpoint | Returns | Tier |
|---|---|---|
| GET /v1/form/meetings | Meetings and race numbers running on a date | Free |
| GET /v1/form | Runner form, career stats and race conditions for one race | Free |
| GET /v1/form/venues | Track lookup and slug resolution | Free |
| GET /v1/results | Finishing positions, margins and starting price — or a whole meeting via /v1/results/meeting | Pro |
| GET /v1/predictions | Win and place probabilities and model ratings | Pro |
| GET /v1/stats/… | Jockey, trainer, runner and track bias statistics | Pro |
| GET /v1/prices | Live win and place prices per bookmaker, with fluctuations | Premium |
One Request, Full Race Form
The feed is pull-based: pass a date, track, and race number and get structured form data for every runner back as JSON. Swap the path for /v1/results or /v1/prices with the same query string to close the loop after the race or watch the market before it.
- Race details — name, class, distance, prize money, start time with timezone
- Track condition, weather, and pace scenario
- Runner details — number, barrier, weight, age, jockey, trainer, claim
- Form strings and last-starts history
- Career stats with strike rates by track, distance, and condition
- Finishing positions, margins and official starting price (Pro)
- Jockey, trainer and track bias statistics (Pro)
- ML win/place predictions, speed maps and class profiles (Pro)
- Live bookmaker win and place prices with movement history (Premium)
{
"date": "2026-07-18",
"track": "Flemington",
"raceNumber": 7,
"raceName": "Lexus Handicap",
"distance": "2000m",
"condition": "Good 4",
"numberOfRunners": 12,
"runners": [
{
"number": 1,
"name": "Star Runner",
"jockey": "J. McDonald",
"trainer": "C. Waller",
"weight": 58.5,
"barrier": 5,
"form": "1121x32141",
"stats": {
"overall": {
"starts": 20,
"wins": 8,
"winPercent": 0.40
}
}
}
]
}GET /v1/prices?date=2026-07-18&track=flemington&race=7
Feed Coverage
Race form and results cover the same meetings, and live prices follow the bookmakers. How much each market carries varies, and coverage keeps growing as sources are added.
| Data | Markets | Racing codes |
|---|---|---|
| Race form | 24+ countries | Thoroughbred, harness, greyhound |
| Results | Every meeting with race form | Thoroughbred, harness, greyhound |
| Live prices | Every race the covered bookmakers are pricing | Quoted per bookmaker, fixed and tote markets |
Results have their own page — the racing results API — covering how positions, margins and stages behave.
How FormFav Compares to Traditional Racing Data Feeds
On-demand, not batch
Traditional racing data feeds push scheduled file drops you have to parse, store, and reconcile. FormFav is a pull-based feed: one HTTPS request returns the exact race you asked for, already structured. There is nothing to ingest and no directory to watch.
Form, results and prices behind one set of parameters
Most providers sell pre-race form, results and odds as separate products with separate identifiers. Here the date, track and race number you use for form are the same ones you use for results and live prices, so a race you fetched form for can be settled and priced with the identical query string.
Free tier, instant access
Most racing data feed providers gate everything behind sales calls and contracts. FormFav's free tier gives you 1,000 requests a day with career stats included — sign up and your key works immediately. Pro adds results and analytics with a 7-day trial, and Premium adds live prices and real-time results, all self-serve.
Built for developers and AI agents
An OpenAPI spec, a hosted MCP server, and a reference CLI mean the same feed powers your app backend, your scripts, and your AI assistant without extra integration work. ChatGPT, Claude, Cursor and Claude Code can query it as native tools.
Independent form analysis, not an official feed
FormFav provides independent form analysis and derived statistics. It is not an official race fields feed. If you are a licensed wagering operator, you remain responsible for any race fields approvals and for sourcing official racing materials through an authorised distributor where your operations require it.
Using an AI assistant rather than writing code? The AI agents guide connects the same feed to Claude, GPT and Gemini through the hosted MCP server.