Odds API for Arbitrage Betting

An arbitrage betting API that returns every book's price per market through byBookmaker, so you can scan every sportsbook and alt line for arbs and middles.

Updated June 2026Built on the live SportsGameOdds feed
How it works
  1. 1
    Pull every book in one call

    Request an event with odds and read each market's byBookmaker map, where every book's odds, line, and available flag arrive pre-collated across main lines and alternates.

  2. 2
    Compute total implied probability under 100%

    Take the best price per outcome across books, convert to decimal, and sum the inverses; a sum below 1.0 is an arbitrage, with margin (1 / sum) - 1 and stakes split by each outcome's implied probability.

  3. 3
    Where alt lines create middles, and why speed wins

    Compare alternate spreads and totals across books for gaps where both sides can win (for example, one book at -5.5 and another at +6.5), and act fast, since these windows close in seconds.

An arbitrage betting API is a data feed that returns every bookmaker's price for the same market in one response, so your software can scan for outcomes whose combined implied probability falls below 100%. That sub-100% gap is the locked-in margin you're hunting for. SportsGameOdds is built for it: 85+ books, exchanges, and prediction markets priced side by side under a single byBookmaker object, including the alternate lines where most arbs and middles hide.

Why use SportsGameOdds for arbitrage

  • One call returns every book's price. The byBookmaker object stacks 85+ sportsbooks, exchanges, and prediction markets against the same market, so a single request hands you the full price ladder to scan. You never poll each book or stitch separate feeds together.
  • Sharp anchors ship in the feed. Pinnacle and Circa sit next to DraftKings, FanDuel, BetMGM, Bet365, and Caesars, plus Kalshi and Polymarket prediction markets and DFS books like PrizePicks and Underdog. The sharp prices anchor your fair value, and the softer books are usually where the gap opens up.
  • Alt lines are first-class. Most real arbs, and nearly every middle, live on alternate spreads and totals rather than the headline line. Those alternates come through the same byBookmaker structure on player and team props too, so your scanner picks them up automatically rather than missing the one edge that was actually on the board.
  • A fair line is already computed. Each market ships fairOdds (no-vig consensus) and bookOdds (consensus with vig), so you can rank true edge and discard stale prices without building your own baseline first.
  • Deeplinks and settlement are bundled. Each priced outcome can carry a click-to-bet deeplink straight to the book's bet slip, and the score field grades the bet at every tier. The same feed that surfaces the arb helps you place it and confirm how it settled.

How an arbitrage finder works with our data

With arbitrage, the math is the easy part. The hard part is having every book's price for the same market, at the same instant, in one place. Scrape books one at a time and your prices are minutes stale before you can even compare them. Pull the event once from our feed and the comparison is already assembled.

Pull every book in one call

Request an event with odds and each market arrives already collated. A market is identified by its betTypeID, sideID, and periodID. Inside that market's byBookmaker map, every sportsbook's entry sits next to the others, keyed by bookmaker, carrying its odds, the line in spread or overUnder, and an available flag. You aren't merging feeds. You're reading one object that already holds the whole price ladder, main lines and alternates alike.

Compute total implied probability under 100%

For each outcome, take the best available price across books and convert it to decimal. Sum the inverse of those decimals, and that sum is the total implied probability. A normal market sums to more than 100% because of the vig. An arbitrage exists only when the best cross-book prices push that sum below 1.0. Your margin is (1 / sum) - 1, and you split stakes proportional to (1 / decimalOdds) / sum so every outcome returns the same profit. So if over @ 2.05 at one book and under @ 2.00 at another imply 48.78% + 50.00% = 98.78%, you've locked a margin of about 1.23%.

Where alt lines create middles, and why speed wins

A middle is the upside case: book A posts Home -5.5 while book B posts Away +6.5, and if the favorite wins by exactly 6 you cash both sides. Those gaps only show up when you can see alternate lines across books at the same time, which is what byBookmaker gives you. The catch is decay, since these windows close in seconds. Free Amateur updates roughly every 10 minutes, Pro tightens to sub-minute, and WebSocket streaming on All-Star pushes line changes the moment they move, so your scanner reacts instead of polling a stale snapshot.

Example request

One call fetches every upcoming event with its full cross-book price ladder:

curl "https://api.sportsgameodds.com/v2/events?leagueID=NBA&finalized=false&oddsAvailable=true" \
  -H "x-api-key: YOUR_API_KEY"

The same market comes back priced by every book under byBookmaker, with fairOdds and bookOdds already computed (trimmed):

{
  "odds": {
    "points-all-game-ou-over": {
      "oddID": "points-all-game-ou-over",
      "betTypeID": "ou",
      "sideID": "over",
      "fairOdds": "-108",
      "bookOdds": "-112",
      "byBookmaker": {
        "pinnacle":   { "odds": "-105", "overUnder": "224.5", "available": true },
        "draftkings": { "odds": "+100", "overUnder": "224.5", "available": true },
        "fanduel":    { "odds": "-102", "overUnder": "225.5", "available": true },
        "betmgm":     { "odds": "-110", "overUnder": "224.5", "available": true }
      }
    }
  }
}

Pair the over above with the best under price across books, sum the implied probabilities, and you have your scan. For the full stake-sizing and middle-detection logic, see the arbitrage calculator example, or browse the docs to wire it into your stack.

SportsGameOdds vs scraping books yourself

CapabilitySportsGameOddsScrape each sportsbook yourself
One-call multi-book coverage85+ books in a single byBookmaker responseA separate scraper per book, merged by hand
Alt linesIncluded for spreads, totals, and propsOften gated behind extra requests or rendered JS
Latency / streamingSub-minute (Pro), WebSocket push (All-Star)Throttled by each site's rate limits
Deeplinks to place the betClick-to-bet links on supported booksBuild and maintain per book
Settlement / scoresscore plus per-bet grading at every tierSource and reconcile separately
Maintenance / anti-bot burdenWe absorb layout changes and blockingBreaks on every redesign or IP block

Frequently asked questions

Related use cases

Build your arbitrage finder

Free plan available. 2,500 objects/month. No credit card required.