Best odds API for matched betting: a buyer's checklist
OddsRelay · · Updated · 5 min read
For matched betting, score an odds API on its pairs first: each bookmaker back price set beside an exchange lay price for the same selection, with the money available at that lay. bet365, UK & Ireland depth, board types and measurable freshness decide between the feeds that pass.
Why does matched betting need a different odds API?
Matched betting runs on a relationship between two prices. A qualifying bet is a bookmaker back price set against an exchange lay price for the same selection, and the gap between them is what an oddsmatcher ranks. Many odds APIs are built for comparison sites, where one price per bookmaker is enough. They stop where matched betting starts.
The missing work has two parts. The lay side needs exchange prices with real money behind them. The pairing needs a matcher that knows a bookmaker's runner and an exchange's runner are the same selection, even when the names and event labels differ.
The checklist, in order of weight
- Pairing: does the feed deliver back and lay prices already joined per selection, or two price lists you must match yourself? This is the deciding axis, because the matcher is the slow part of any build.
- Lay depth: which exchanges supply the lay side, and does each lay price carry the amount available at it? A lay price with nothing behind it cannot be placed.
- bet365: is it included on every plan, or missing or sold as an extra? For a UK audience its absence is disqualifying.
- UK & Ireland depth: how many bookmakers are live there today, and can you check which ones without a sales call?
- Board types: offers go beyond the standard back-and-lay. Each-way and extra-place need place terms and a place lay market, and dutching needs back legs from different bookmakers that together cover every outcome.
- Measurable freshness: does every response say when the board was built and when each venue was last read? A published maximum update time can be checked. An adjective in a pitch cannot.
- Cost control: can you poll without paying for unchanged data, and price a call before you make it?
How do the categories of option compare?
There are four broad categories, and they differ most on the pairing axis. The table compares the categories rather than named products, so read it as a pattern with exceptions:
| Option category | Pairing | bet365 | Where the work lands |
|---|---|---|---|
| General developer odds APIs | Back prices, sometimes exchange prices, unpaired | Varies by supplier | You build the matcher, and often the exchange integration |
| Large-operator trading feeds | Usually unpaired, matching is your job | Varies, often by negotiation | You build the matcher |
| Build it yourself | Whatever you build | Yours to collect and maintain | All of it, for as long as you run it |
| Matched-betting feeds | Back and lay paired per selection | Varies by supplier | Your arithmetic and your front end |
Categories scored on the matched-betting criteria. Fit depends on which column you can afford to own.
General APIs and trading feeds are good at what they were built for, which is breadth of prices. For the wider build-versus-buy reasoning, the guide to choosing an odds data provider walks the trade-offs without the matched-betting lens.
Named providers are compared on the comparison pages, where every competitor fact is cited to the provider's own public pages and dated.
What a paired row looks like
A paired board hands your oddsmatcher both sides of the bet in one object. Below is the shape of one event on the standard board, trimmed to one outcome. The lay offer sits under the same outcome as the back offer, and available is the money on offer at that lay price:
{
"meta": {
"feed_type": "standard", "region": "uk", "odds_format": "decimal",
"processed_at": "2026-09-18T11:40:12.504Z",
"last_seen": { "william_hill": { "soccer": "2026-09-18T11:40:09Z" } },
"count": 1,
"version": "v2",
"next_cursor": null
},
"data": [{
"event_id": "or_evt_4c1a9e02b7d3",
"sport_key": "soccer_epl",
"sport_title": "Premier League",
"commence_time": "2026-09-20T14:00:00Z",
"home_team": "Newcastle",
"away_team": "Brighton",
"markets": [{
"key": "h2h",
"outcomes": [{
"name": "Newcastle",
"back": [{ "bookmaker": "william_hill", "price": 2.05, "link": null }],
"lay": [{ "exchange": "matchbook", "price": 2.08, "available": 1120, "link": null }]
}]
}]
}]
}The feed carries prices and liquidity, nothing derived. The rating and qualifying loss are simple arithmetic on the pair, and the oddsmatcher widget shows them. In your own code it looks like this:
const back = 2.05, lay = 2.08, commission = 0.02, stake = 10; const rating = (back / lay) * 100; const layStake = (stake * back) / (lay - commission); const qualifyingResult = layStake * (1 - commission) - stake; // negative is a loss, same whichever side wins
When you evaluate any candidate, ask for a real response rather than a screenshot. If the lay offer is missing, or sits in a separate list you must join by name, the matcher work is still ahead of you. The API reference has examples for every board, and the matched-betting data guide goes deeper on each field.
Where OddsRelay sits on the checklist
OddsRelay is a matched-betting feed. It covers 140+ bookmakers, 60+ of them live in the UK & Ireland, with bet365 included on every plan. Each back price is paired against exchange lay from Betfair, Smarkets, Matchbook and BETDAQ. Pairs are liquidity-gated, so a lay price with little money behind it is not offered as a match.
The six matched boards and the raw feed are on every plan, and plans differ only in tokens. The matched feed lists each board and what it adds. Every response carries the board time (processed_at), and a matched board adds last_seen per venue and sport, so the age of a price is something you measure. Every product on sale meets a maximum update time of 10–20 s.
On cost, you poll with If-None-Match, and an unchanged board comes back as a 304 that spends no tokens. ?quote=true prices a call before you make it, and filters and tokens explains how a request is priced.
It is not the answer for everyone. It serves one region, the UK & Ireland, and if odds collection is your own product, owning the pipeline can make more sense than buying one.
Check it against your own shortlist
See which bookmakers and exchanges are live today on the coverage page. When you want real responses to score against the checklist, request access.