Raw odds feed

Prices from 140+ bookmakers, 60+ of them live in the UK & Ireland, each exactly as the bookmaker lists it, in one JSON schema. Exchange lay prices and the amount available come in the same reply, for teams that match, rate or model odds themselves.

GET/v2/odds/rawregion uk40,000 tokensTry this call

Tokens for one call of the whole UK & Ireland feed. A filtered call costs less: pricing publishes the table it is worked out from.

What's in a reply

One entry per bookmaker, each keeping its own names.

bookmakers[]
One entry per bookmaker or exchange, each with its own markets and a last_update time.
markets[].key
That bookmaker's own market type, lowercased: h2h and the rest.
outcomes[].name
The selection as that bookmaker writes it. In the example, Ferencváros is spelled three ways.
h2h_lay
An exchange's lay market: lay_price, and available, the amount you can lay at that price.
includeLinks=true
Adds a link to the event at each bookmaker.

Pre-match only. There are no in-play prices.

To see what exists before you pull it: GET /v2/sports and GET /v2/events, where every event carries a has_coverage flag.

Example · 17 Sep 2026, 17:32 UK time · one event, two bookmakers and one exchange

{
  "meta": {
    "feed_type": "raw",
    "region": "uk",
    "odds_format": "decimal",
    "processed_at": "2026-09-17T16:32:17.554Z"
  },
  "data": [
    {
      "id": "or_evt_ed3ca8739560",
      "cluster_id": null,
      "sport_key": "soccer_uefa_europa_league",
      "sport_title": "UEFA Europa League",
      "commence_time": "2026-09-17T19:00:00Z",
      "home_team": "Celtic FC",
      "away_team": "Ferencvaros",
      "bookmakers": [
        {
          "key": "7bet",
          "title": "7bet",
          "region": "uk",
          "last_update": "2026-09-17T16:31:51Z",
          "markets": [
            {
              "key": "h2h",
              "last_update": "2026-09-17T15:45:04Z",
              "outcomes": [
                { "name": "Celtic FC", "price": 1.71 },
                { "name": "Draw", "price": 4 },
                { "name": "Ferencvaros TC", "price": 4 }
              ]
            }
          ]
        },
        {
          "key": "betgoodwin",
          "title": "BetGoodwin",
          "region": "uk",
          "last_update": "2026-09-17T16:31:43Z",
          "markets": [
            {
              "key": "h2h",
              "last_update": "2026-09-17T13:39:55Z",
              "outcomes": [
                { "name": "Celtic", "price": 1.7 },
                { "name": "Draw", "price": 4 },
                { "name": "Ferencváros", "price": 4.5 }
              ]
            }
          ]
        },
        {
          "key": "betdaq",
          "title": "Betdaq",
          "region": "uk",
          "last_update": "2026-09-17T16:32:11Z",
          "markets": [
            {
              "key": "h2h",
              "last_update": "2026-09-17T16:32:11Z",
              "outcomes": [
                { "name": "Celtic", "price": 1.74 },
                { "name": "Draw", "price": 4.2 },
                { "name": "Ferencvárosi TC", "price": 5.1 }
              ]
            },
            {
              "key": "h2h_lay",
              "last_update": "2026-09-17T16:32:11Z",
              "outcomes": [
                {
                  "name": "Celtic",
                  "back_price": null,
                  "lay_price": 1.75,
                  "available": 351.13
                },
                {
                  "name": "Draw",
                  "back_price": null,
                  "lay_price": 4.4,
                  "available": 65.15
                },
                {
                  "name": "Ferencvárosi TC",
                  "back_price": null,
                  "lay_price": 5.2,
                  "available": 98.68
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}

Raw or matched

Both are on every plan, on the same key. They differ in what one entry is and how much of the work is already done.

DimensionRawMatched
EndpointGET /v2/odds/rawGET /v2/odds/{feed type}
One entry perBookmaker, per eventEvent
Selection namesAs each bookmaker writes themOne name per outcome, across bookmakers
Exchange lay pricesIn the exchange's own h2h_lay marketLowest first, beside every back price
Links to the eventWith includeLinks=trueOn every offer
FiltersSports, bookmakers, exchanges, markets, the kick-off window and updatedSinceSports, bookmakers, exchanges, markets and the kick-off window
Whole feed, one call40,000 tokens10,000 tokens
SuitsComparison sites, pricing models, and teams matching odds themselvesOddsmatchers and matched betting tools

How this compares with The Odds API

Bookmakers on this feed

Bookmakers

  • 10bet
  • 7bet
  • 888sport
  • Bally Bet
  • Bet Target
  • bet365
  • Bet600
  • Betano
  • Betfair Sportsbook
  • Betfred
  • BetGoodwin
  • BetMGM
  • Betnero
  • BetTOM
  • BetUK
  • BetVictor
  • Betway
  • BetWright
  • BoyleSports
  • Bwin
  • Casumo
  • CopyBet
  • Coral
  • Dabble
  • Dafabet
  • DAZN Bet
  • Double Bubble Bingo
  • DragonBet
  • FanTeam
  • Fitzdares
  • Geoff Banks
  • Grosvenor
  • HighBet
  • Hollywoodbets
  • Hopa
  • Jackpotjoy
  • Karamba
  • Ladbrokes
  • LeoVegas
  • LiveScore Bet
  • Lottoland
  • McBookie
  • Monopoly Casino
  • Mr Vegas
  • MrRex
  • NetBet
  • Octobet
  • Paddy Power
  • Parimatch
  • Planet Sport Bet
  • PricedUP
  • Pub Casino
  • Puntit
  • QuinnBet
  • Rainbow Riches Casino
  • Sky Bet
  • Sporting Index
  • Sportingbet
  • Spreadex
  • Star Sports
  • talkSPORT BET
  • Toals
  • Tote
  • Unibet
  • Vbet
  • Virgin Bet
  • William Hill

Exchanges

  • BETDAQ
  • Betfair Exchange
  • Matchbook
  • Smarkets

From the live coverage summary. Coverage shows each bookmaker by sport.

Questions

  • Can I switch to matched later?

    Yes. Every plan includes both, on the same key. The matched reply has a different shape, so you would parse it separately. Authentication, regions and tokens work the same way.

From the blog

Get an API key

Every plan includes every feed, Free included. Plans differ only in how many tokens you get.