BlogMatched betting

What is an oddsmatcher?

An oddsmatcher lists bookmaker back prices beside exchange lay prices for the same selection, sorted so the closest match comes first. The oddsmatcher data behind each line is three facts: the back price, the lay price and the money available to lay.

The rating and qualifying loss it shows are arithmetic on those prices.

What an oddsmatcher does

An oddsmatcher is a search tool for matched bettors. A matched bettor backs a selection at a bookmaker to meet an offer's terms, then lays the same selection on an exchange so the two bets roughly cancel. The cost of a match is the gap between the two prices, so the closer they sit, the less the offer costs to take.

It shows each match as a ranked line with the event, the selection, the bookmaker and its price, the exchange and its price, and the money available to lay. Filters narrow it by sport, bookmaker, odds range or kick-off time. The data underneath decides whether that ranking can be trusted.

The data an oddsmatcher runs on

Each line needs three facts about one selection at one moment. The bookmaker's back price. The exchange's lay price. And available, the money on offer at that lay price. They have to describe the same event, market and selection.

Here is one outcome from a matched board, trimmed to a single back and lay offer. The shape is the real /v2 one.

A single outcome from GET /v2/odds/standard, trimmed · example

{
  "event_id": "or_evt_917dd44bce05",
  "commence_time": "2026-09-20T14:00:00Z",
  "home_team": "Arsenal",
  "away_team": "Chelsea",
  "markets": [{
    "key": "h2h",
    "outcomes": [{
      "name": "Arsenal",
      "back": [{ "bookmaker": "william_hill", "price": 2.9, "link": null }],
      "lay":  [{ "exchange": "smarkets", "price": 3.0, "available": 175, "link": null }]
    }]
  }]
}

That is all the feed sends for this outcome: source prices and the lay stake on offer. There is no score in it. The rating and the qualifying loss come next, and you work them out.

How the rating is calculated

The usual rating is the back price divided by the lay price, times 100. With a back of 2.9 and a lay of 3.0 it comes to about 96.7. At 100 the two prices are level. Below it, the gap between them is the cost of the match, and the further below, the more it costs.

Your code, computing the rating from a back and lay price · example

const back = 2.9;  // bookmaker back price
const lay = 3.0;   // exchange lay price
const rating = (back / lay) * 100; // 96.67

A rating is a sorting key and nothing more. This version ignores exchange commission. Some tools build commission in, which is why two of them can show different ratings for the same prices.

What qualifying loss means

Qualifying loss is what the back bet and the lay bet cost together, before any free bet or bonus is counted. The two bets rarely cancel exactly, because the prices differ and the exchange charges commission on a winning lay. The standard lay stake balances both outcomes so the loss is the same whichever way the event goes.

Your code, qualifying loss at your own commission rate · example

const back = 2.9, lay = 3.0;
const stake = 10;         // back stake
const commission = 0.02;  // your exchange commission rate
const layStake = (stake * back) / (lay - commission);     // 9.73
const ifBackWins = stake * (back - 1) - layStake * (lay - 1); // -0.46
const ifLayWins = layStake * (1 - commission) - stake;        // -0.46

On a 10-unit stake, this match loses about 0.46 either way. That is what qualifying for the offer costs. Change the commission to your own rate and the figure moves, which is the reason it belongs in your code: only you know the rate you pay. The qualifying loss and ratings guide goes further, and the oddsmatcher widget shows both figures.

Lay liquidity decides what is usable

A close price is worthless if the exchange cannot take your lay. The available figure is the money waiting at that lay price. In the example, 175 is enough to lay the 9.73 stake several times over. If it were 4, most of the lay would go unmatched or fill at a worse price, and the qualifying loss above would no longer hold.

OddsRelay's matched boards pair a lay offer only when it has a minimum amount of money behind it, and each offer shows that money as available. Your own stake size is a different threshold, so filter on available as well.

The response says how old a price can be

Freshness is a property of the data you hold. Every reply carries meta.processed_at, the time the board was built. A matched envelope also carries meta.last_seen, the last read per venue and sport, so the current time minus it is an upper bound on a price's age. Show that age next to each line and your users can judge it for themselves. Every product on sale meets a maximum update time of 10–20 s for match odds, and for every market within six hours of kick-off. Further from kick-off, prices in the other markets can be older. The freshness guide covers the fields, and the conditional requests guide shows how to poll without re-downloading an unchanged board.

Consumer oddsmatchers and a developer feed

A consumer oddsmatcher is a website a matched bettor logs into. A developer feed is an API that your own product reads. For one person placing bets, the consumer tool is the right shape. For a team building an oddsmatcher, a comparison page or an alerting tool, it does not help, because those tools are generally sold as screens to read rather than as data to license.

Consumer oddsmatcherDeveloper data feed
PairingDone, shown on screenDone, delivered as back and lay offers
Rating and qualifying lossShown by the toolYour arithmetic, at your commission rate
FiltersThe tool's own screen filtersSports, bookmakers, exchanges, markets and a kick-off window, set in the request

That pairing is the hard part (what oddsmatcher-ready means). Matching one team name across dozens of bookmakers and the exchanges is where a home-built oddsmatcher spends most of its effort. OddsRelay covers 140+ bookmakers, 60+ of them live in the UK & Ireland, bet365 included, and the matched feed pairs them against Betfair, Smarkets and Matchbook. How to build an oddsmatcher walks through what is left for you to write.

Run the sums on a live pair

Check which bookmakers and exchanges are live on the coverage page, and read the response shapes in the API reference.

Sources, checked 29 September 2026

  1. Smarkets: what is commission? (opens in a new tab)

Related posts

18+ · OddsRelay supplies odds data only and takes no bets. Please gamble responsibly.