Fundamentals
Football odds data, explained
Football is where odds data does most of its volume. This explains the main markets, how they're structured as event, market and selections, and how matched back/lay pairs work for football.
· 5 min read
Over/under markets price whether goals, points or corners finish above or below a line. For data, the line is part of the selection: here is why that changes how you compare, match and arb totals across books.
Over/under (totals) markets price whether a count finishes above or below a line: goals, points, corners, cards. The classic example is over/under 2.5 goals in a football match. For data, the important part is that the line is not decoration, it is part of the selection. A book offers several lines on the same market, and a comparison only means something when it lines up over against under at the same line across books.
An over/under market prices a numeric outcome against a threshold. The book publishes a line, say 2.5 goals, and two selections: over the line, and under it. Over 2.5 wins if three or more goals are scored; under 2.5 wins if two or fewer are. The half-point line exists so there is no exact-hit draw. Totals extend well beyond goals: total corners, total cards, total points in a basketball game, all follow the same shape.
This sits alongside the other football markets you will already be modelling. If you are mapping the full set, football odds data covers how match odds, both teams to score and the rest fit together, and how odds data is structured covers the event, market and selection layering that every market shares.
The line is a field because a single over/under market is not one price, it is a small set of prices, one pair per line. A football match commonly carries over/under at 0.5, 1.5, 2.5, 3.5 and higher, each with its own over price and under price. Treat over as a single selection and you have thrown away the information that tells you which threshold the price refers to. The line must travel with the odds.
In practice that means every totals selection carries a line value next to the market key and the over/under side. Two rows can share the same event and the same market and still be different bets, because their lines differ. The line is what makes them distinct.
{
"event": "Arsenal vs Chelsea",
"market": "over_under_goals",
"line": 2.5,
"selection": "over",
"back": { "bookmaker": "bet365", "odds": 1.95 },
"lay": { "exchange": "betfair", "odds": 1.99, "liquidity": 1240 },
"rating": 97.8,
"qualifying_loss": -0.15
// ... region, feed_type and freshness fields elided
}The line field is doing the load-bearing work here. Change it to 3.5 and this is a different market with a different price, even though the event, the over_under_goals market key and the over side are unchanged. A totals feed that omits the line is not usable for comparison, because you cannot tell which threshold each price belongs to.
You must compare the same line because over 2.5 at one book and over 3.5 at another are not the same bet, and putting their prices side by side is meaningless. This is the single most common mistake when handling totals data. A comparison is only valid when the line matches: over 2.5 against over 2.5, under 2.5 against under 2.5. Line up different thresholds and the higher price looks like an edge when it is really just a longer bet.
It gets harder because books do not all offer the same lines, and they do not all price a given line to the same margin. One book might headline 2.5 while another leans on 2.75 as an Asian-style split line. Your matching layer has to key on the line, not just the market, and skip pairs where no shared line exists. Books that quote quarter-lines behave like Asian handicap data: the line is continuous rather than a fixed half-point, so exact-line matching matters even more.
For matched betting and arbitrage, a totals opportunity is a relationship between two prices at the same line: an over price at one venue set against the opposing under, or against an exchange lay. You can back over 2.5 at one book and lay over 2.5 on an exchange, or back over 2.5 at one book and back under 2.5 at another when the combined prices leave a margin. Either way the two sides must sit on the identical line, or the position is not real.
This is where matched data earns its place. OddsRelay pairs each totals back price with the current lay price for the same selection at the same line, drawn from three exchanges (Betfair, Smarkets, Matchbook), and attaches a rating and a qualifying_loss so the row is ready to render. The line is carried through the whole pipeline, so an over 2.5 back is only ever matched to an over 2.5 lay, never to a 3.5 by accident. That correctness is the part you would otherwise have to build and police yourself.
The same discipline runs across coverage: 60+ UK books with bet365 included, totals lines mapped and matched consistently rather than left as raw prices you have to reconcile. It powers a leading UK matched-betting platform today, where every totals row on the oddsmatcher is a line-matched back/lay pair.
Over/under markets price a count against a line, books offer several lines per market, and the line is a data field you carry with every price. Compare like-for-like at the same line or the comparison is worthless. If you would rather not build the line-aware matching yourself, a free trial gives you the full UK feed with totals already matched at the correct line, and the coverage dashboard shows what is live before you commit.
Written by
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 Fundamentals cluster
What is an odds API? A 2026 guide for builders18+ · Data product for licensed operators. Please gamble responsibly.
Fundamentals
Football is where odds data does most of its volume. This explains the main markets, how they're structured as event, market and selections, and how matched back/lay pairs work for football.
· 5 min read
Fundamentals
Asian handicap gives one side a goal head-start, which lets a bet half-win or half-lose. For your data that makes the line a field, not an afterthought. Here is how to model it.
· 6 min read
Fundamentals
Odds data is a four-level hierarchy: event to market to selection to price, plus bookmaker, region and freshness metadata. Once the shape clicks, integrating a feed is straightforward.
· 5 min read