Skip to content
OddsRelay

Horse racing odds data and each-way, for builders

Racing is where each-way and extra-place matched betting lives, and it is the most demanding odds data to model. Here is what makes it hard and what a matched feed delivers for it.

James5 min read

Horse racing odds data is more involved than football, and that is exactly why the best matched-betting value lives here. A football match has two teams and a draw. A single race has many runners, each with a win price and a separate place price governed by terms that change per race. Add best-odds-guaranteed, add extra-place offers, add prices that move fast in the minutes before the off, and racing becomes the hardest odds data to model correctly. This guide is for builders who need to get it right.

What makes horse racing odds data harder than football?

The runner count and the place terms are what make racing hard. A football market resolves to a handful of selections you can enumerate once. A race can hold a large, variable field, and each runner carries two things you must track: its win price, and its each-way settlement under terms that differ from race to race. Model football and you can hardcode the shape. Model racing and the shape moves under you every card.

On top of that sit the promotions that make racing the home of matched betting: best-odds-guaranteed (BOG) and extra-place offers. Both change what a price is actually worth, which means the raw number on a bookmaker page is not the number you settle against. A feed that ignores this gives you prices that look usable and are not.

How do the racing markets work?

Racing has three linked markets a builder must handle together: win, place, and each-way. The win market is the simplest: the price a runner is quoted to finish first. The place market pays if the runner finishes inside the places on offer. each_way is the two-part bet matched betting runs on: one stake on the win, one on the place, settled independently.

The place part is where the data complexity lives. Place terms are expressed as a number of places paid and a fraction of the win odds. A common shape is 1/5 odds for the first 4 places, but the fraction and the place count both vary by field size and by bookmaker. Two books can quote the same win price and settle the place part completely differently. Your data model has to carry those terms per selection, not assume them.

Why do BOG and extra-place add data complexity?

Best-odds-guaranteed and extra-place offers both break the assumption that a settled return follows the displayed price. BOG means if the starting price beats the price you took, you are paid at the bigger one, so the settlement price can differ from the price at bet time. Extra-place offers pay an additional place beyond the standard terms for a given race, which shifts the each-way maths for that race only.

For a builder, both are stateful, per-offer, per-race adjustments layered on top of the base price. You cannot compute an accurate each-way rating without knowing them. This is the detail that separates a racing feed that works from one that merely returns numbers. We go deeper on the mechanics in the data behind each-way and extra-place.

Why is racing the most time-sensitive data?

Racing prices move faster and closer to a hard deadline than any other pre-match market. Football odds drift over days. Racing prices can shift sharply in the final minutes before the off, then the market closes entirely. A price that was accurate ten minutes ago may be stale by the time a user acts on it, and a stale racing price is worse than a missing one because it still looks live.

That shapes what freshness has to mean for racing. Our honest posture is pre-match polling on roughly a few-second cycle, which suits pre-match each-way and pre-match arbitrage. We do not claim real-time in-play racing, because that is not what we ship. Freshness, uptime and latency are published on the coverage dashboard so you can judge the cycle against your own tolerance rather than take a number on trust.

What does a matched racing row look like?

A matched racing row carries both the win part and the place part, each with its own back price and exchange lay price. That pairing is what makes an each-way opportunity computable. Here is the shape of a single each-way row (illustrative, not live data):

One each-way racing row · illustrative shape
{
  "event": "14:30 Ascot",
  "market": "each_way",
  "selection": "Runner Nine",
  "place_terms": { "places": 4, "fraction": "1/5" },
  "win": {
    "back": { "bookmaker": "bet365", "odds": 9.00 },
    "lay":  { "exchange": "betfair", "odds": 9.40, "liquidity": 620 }
  },
  "place": {
    "back": { "bookmaker": "bet365", "odds": 2.60 },
    "lay":  { "exchange": "smarkets", "odds": 2.68, "liquidity": 410 }
  },
  "rating": 96.8,
  "qualifying_loss": -0.21
  // ... region, feed_type, bog/extra_place, freshness fields elided
}

The fields a raw racing API cannot give you are the paired lay blocks, the carried place_terms, and the rating and qualifying_loss computed across both parts of the each-way bet. That is the matching step, done before you receive the data. The lay side comes from three exchanges (Betfair, Smarkets, Matchbook), which is what exchange and lay coverage explains in full.

Which feed types matter for racing?

Three feed types carry the racing-specific work, and they are available as standard rather than as a special case you assemble yourself:

  • Each-way: the win and place parts paired with exchange lay prices, with place terms carried per selection, so an each-way oddsmatcher renders on day one.
  • Extra-place: offers flagged and priced against the base race terms, so the profit calculation reflects the additional place rather than ignoring it.
  • Best-odds-guaranteed (BOG): the settlement adjustment captured, so a rating reflects the guaranteed price rather than only the price at bet time.

All of it draws on 60+ UK books with bet365 included, which matters for racing because the offers and place terms differ book to book and the value is in the spread across them. bet365 is covered as one book among many, reliably maintained, not a fragile special case. For the wider picture of how racing sits inside a matched dataset, see the matched-betting data guide.

The short answer

Racing is the hardest odds data to model and the richest for matched betting, because place terms, BOG and extra-place all sit between the displayed price and the real return, and prices move fast near the off. A matched feed carries that work for you: win and place parts paired against exchange lay prices, terms and offers captured, rated and ready to render. It powers a leading UK matched-betting platform today. You can see the racing coverage live on the coverage dashboard, or start a free trial and pull each-way rows against your own build.

Matched betting & oddsmatcher

Written by

James

Founder, OddsRelay

James is the founder of OddsRelay — the odds-data feed behind matched betting, arbitrage and odds-comparison products: 60+ UK bookmakers with bet365 included, matched against exchange lay prices and delivered as one clean, documented API. He writes here about how that data layer actually behaves — coverage, matching, freshness and the trade-offs — from the side that builds and runs it. The same feed powers a leading UK matched-betting platform today.

Part of the Matched betting & oddsmatcher cluster

Oddsmatcher data, explained

18+ · Data product for licensed operators. Please gamble responsibly.