Skip to content
OddsRelay

How to get bookmaker odds data into your app

There are two ways to get bookmaker odds into your app: collect it yourself, or license a feed. Here's how each works, what to decide first, and the integration sketch for the faster path.

James4 min read

There are two ways to get bookmaker odds data into your app: collect it yourself, or license a feed. For most apps a feed is the faster path: you call one authenticated endpoint and render predictable JSON, instead of owning a collection pipeline. This guide covers what to decide first, how the integration actually looks, and when building your own is the right trade.

What do you need to decide before you start?

Decide four things first, because they shape every route that follows. The answers determine whether a single feed covers you or whether you are signing up for a much larger build.

  • Which books: do you need bet365, the hardest book to cover well, or a handful of easier ones? bet365 alone changes the difficulty of the DIY route sharply.
  • Which regions: UK only, or domestic books in markets like South Africa and Nigeria that the big aggregators skip? Coverage breadth is where most feeds quietly fall short.
  • Raw or matched: do you need the back price on its own, or paired with an exchange lay price? Matched betting and arbitrage need the pair, not the single number.
  • How fresh: is pre-match data on a short polling cycle enough, or are you betting on something faster? Be honest here, because the freshness you claim drives your whole architecture.

If you are unsure what these terms map to in practice, what an odds API is sets the baseline, and how the data is structured shows the shape a row arrives in. Settle these four answers and the rest of the decision is mechanical.

How do you get odds data from a feed?

With a feed, you get odds data in four steps and no SDK: get a key, call one endpoint, parse the JSON, and cache it. The whole integration is an authenticated HTTP request returning predictable rows, so a developer can read the docs and render results the same afternoon.

The request is a single GET against one endpoint with a Bearer key. With OddsRelay that is the /v1/odds/{type} endpoint on api.oddsrelay.io:

Minimal request · illustrative
curl -H "Authorization: Bearer or_live_xxx" \
  "https://api.oddsrelay.io/v1/odds/match_odds?region=uk"

The response is an array of matched rows. Each carries the event, the market, the selection, the bookmaker back price, the paired exchange lay price with its liquidity, and the computed rating and qualifying_loss. One row, trimmed for clarity:

One matched row · illustrative shape
{
  "event": "Arsenal vs Chelsea",
  "market": "match_odds",
  "selection": "Arsenal",
  "back": { "bookmaker": "bet365", "odds": 2.10 },
  "lay":  { "exchange": "betfair", "odds": 2.14, "liquidity": 1840 },
  "rating": 98.1,
  "qualifying_loss": -0.12
  // ... region, feed_type and freshness fields elided
}

The back/lay pairing, with rating and qualifying_loss already computed, is the part a raw bookmaker price cannot give you. Your oddsmatcher or scanner renders that row directly: no exchange integration, no matcher to build. The full envelope and field list are in the API docs.

How should you cache and poll it?

Cache with ETag and poll on the matcher cycle. The endpoint returns an ETag header; send it back as If-None-Match on your next call and you get a 304 Not Modified when nothing has changed, so you only transfer bytes when prices actually move.

  1. Make your first call and store the ETag from the response.
  2. On the next poll, send If-None-Match: <etag>; a 304 means your cached rows are still current.
  3. Poll on roughly the matcher cadence: our honest posture is pre-match polling on roughly a few-second cycle, so polling faster than that gains you nothing.

When should you collect the data yourself?

Collect it yourself only when odds collection is your core product and your moat. Building your own gives you control, but it trades a few weeks of upfront speed for permanent maintenance: bookmaker pages change, markets are deep and numerous, and a pipeline that worked last month can quietly go stale.

The prices are the easy part. The lasting cost is keeping coverage whole across 60+ books with bet365 included, then matching each back price against three exchanges (Betfair, Smarkets and Matchbook) to produce the rating and qualifying_loss your app actually renders. That matcher and liquidity model is a second product on top of the collection one, and neither ever finishes.

So the route you pick is really a choice about where your engineering time goes. We work the full maths through in buy versus build, but the short version is below.

Collect it yourselfLicense a feed
Time to first matched rowWeeks to monthsAn afternoon
Exchange matchingYou build the matcher and liquidity modelDone: back/lay paired, rated
Coverage upkeepYours, indefinitely, for 60+ booksThe supplier's job
What you focus onA collection arms raceYour product

The short answer

To get bookmaker odds into your app, license a feed unless collection is your core product. You call one authenticated endpoint, parse predictable JSON, and cache it with ETag/304, with the prices already matched against exchange lay odds. OddsRelay delivers exactly that, bet365 included as standard, and it powers a leading UK matched-betting platform today.

The fastest way to see the shape of the data is to call it. Start a free trial to get a key and render real matched rows, or check what is live right now on the live coverage dashboard before you commit.

Fundamentals

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 Fundamentals cluster

What is an odds API? A 2026 guide for builders

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