Sportsbook

BetOnline Odds API

Pull BetOnline prices through the SportsGameOdds API, normalised into the same structure as 85+ other books. One request returns its lines alongside every other book on the same market.

A sportsbook's market list is not purely a commercial decision. What a book is allowed to offer depends in part on who licenses it, which is why two books covering the same match can publish quite different sets of markets.

BetOnline is not tied to a single regulated market the way a US state-licensed book is. That shows up in the data as a different coverage shape rather than as more coverage, and it is the reason to carry it.

Where BetOnline shows up in the coverage tables

The Premier League coverage table on our EPL page lists a different set of books for each market category. BetOnline appears in one of them: shots and attacking props — shots, shots_onGoal, shots_assisted, dribbles_attempted and assists.

The books named for that category are not the same ones named for the headline match lines. Moneylines, spreads and totals list DraftKings, FanDuel, BetMGM, Caesars and the rest of the majors. Shots and attacking props list bet365, FanDuel, BetRivers, BetOnline, PrizePicks, Novig and Ballybet.

That gap is the whole point. On a Premier League moneyline you have more books than you need and they mostly agree. On shots on goal for a specific midfielder, the field thins out fast, and a book that prices it is worth more to you than the tenth book pricing the moneyline.

The same pattern holds across the tables generally: headline markets are crowded, the long tail is not, and the books in the long tail are rarely the biggest names.

Which plan includes BetOnline

BetOnline is available on the Rookie plan and above. The free Amateur tier carries a shorter list of nine books that does not include it, so a request filtered to betonline on that plan returns an empty result rather than an error. Pricing lists the books on each tier.

Requesting BetOnline prices

Filter to BetOnline alone with bookmakerID=betonline:

curl "https://api.sportsgameodds.com/v2/events?leagueID=EPL&bookmakerID=betonline&oddsAvailable=true" \
  -H "x-api-key: YOUR_API_KEY"

In practice you want it alongside the books it complements rather than on its own:

curl "https://api.sportsgameodds.com/v2/events?leagueID=EPL&bookmakerID=betonline,bet365,fanduel,prizepicks&oddsAvailable=true" \
  -H "x-api-key: YOUR_API_KEY"

Every book in the response sits under the same oddID, so comparing them is a lookup rather than a name-matching exercise.

What a BetOnline price looks like

Player props use the player's ID as the statEntityID, following the same {statID}-{statEntityID}-{periodID}-{betTypeID}-{sideID} pattern as every other market:

{
  "eventID": "...",
  "leagueID": "EPL",
  "odds": {
    "shots_onGoal-PLAYER_ID-game-ou-over": {
      "oddID": "shots_onGoal-PLAYER_ID-game-ou-over",
      "marketName": "Shots On Goal Over/Under",
      "statID": "shots_onGoal",
      "statEntityID": "PLAYER_ID",
      "periodID": "game",
      "betTypeID": "ou",
      "sideID": "over",
      "fairOdds": "+118",
      "fairOverUnder": "1.5",
      "bookOdds": "+110",
      "byBookmaker": {
        "betonline": { "odds": "+120", "overUnder": "1.5", "available": true },
        "bet365": { "odds": "+105", "overUnder": "1.5", "available": true }
      }
    }
  }
}

Odds and lines both arrive as strings, so +120 stays "+120" with the plus sign intact and "1.5" does not quietly become a float. fairOdds is the vig-free consensus across every book pricing that market and bookOdds keeps the margin in, which gives you a benchmark without computing one.

Coverage, honestly

BetOnline does not price everything, and its coverage is less predictable than a major book's. Read byBookmaker on each odd rather than assuming it is there, and treat its absence as normal rather than as an error. The /markets endpoint returns the supported set by league if you would rather check up front.

This is also a book where availability genuinely varies for your end users depending on where they are, as it does for Fliff on the US side. If you are building a product that surfaces a price and then sends someone to a book, that is worth handling in your interface rather than assuming every line you can read is a line your user can act on.

Use cases for BetOnline data

Odds comparison is the direct one, with the caveat above about what you present to whom. The value is concentrated in the markets where fewer books compete rather than in the headline lines.

For arbitrage tools, books outside the main cluster turn up on one leg more often than their size suggests, simply because they are not watching the same competitors as closely.

For positive EV work and modelling generally, a book with a different market list gives you markets to price that the crowded books never post, which is usually more useful than another opinion on a spread you already have twenty views of.

BetOnline API technical specifications

BetOnline comes through the standard /v2/events endpoint, with no separate call, credential or schema for any individual book.

Billing is per event object rather than per market or per book, so a ten-match weekend is ten objects whether you ask for BetOnline alone or BetOnline alongside eighty others. Adding books to a request you were already making costs response size and nothing else.

Odds refresh sub-minute on Pro, with a longer interval on Rookie. The API documentation covers authentication, pagination and the full parameter list, and handling odds covers reading byBookmaker in code.

Frequently asked questions

What is the bookmakerID for BetOnline?
betonline, in lowercase. Pass bookmakerID=betonline to /v2/events and read the price from byBookmaker.betonline on each odd. Build against the ID rather than the display name, since the two do not always match across books.
Which plans include BetOnline?
Rookie and above. The free Amateur tier carries a shorter list of nine books that does not include BetOnline, so filtering a request to bookmakerID=betonline on that plan returns an empty result rather than an error.
Why carry BetOnline when I already have the major books?
Because coverage overlaps least where it matters most. The headline markets are priced by dozens of books that mostly agree, while narrower categories like shots and attacking props are priced by a much smaller set. BetOnline appears in that second group, so it adds markets rather than another opinion on markets you already have.
Which markets does BetOnline price?
It appears in our Premier League coverage table under shots and attacking props, covering shots, shots on goal, shots assisted, dribbles attempted and assists, alongside core game lines across the major leagues. Coverage changes, so read byBookmaker on each odd or query the /markets endpoint rather than hardcoding a list.
Is BetOnline available to all of my users?
Not necessarily. Availability differs by where an end user is, which is worth handling in your interface if your product surfaces a price and then links someone to a book. The API returns the line regardless; whether a given user can act on it is a separate question your product needs to answer.
Does adding BetOnline to a request cost more?
No. Billing is per event object rather than per market or per book, so one match counts once whether the response carries four books or eighty. Adding BetOnline to a request you were already making costs response size and nothing else.

Cover the markets the big books skip

BetOnline and every other book we carry on the same oddID, in one request.

1xBet→
Sportsbook
888 Sport→
Sportsbook
Bally Bet→
Sportsbook
Barstool→
Sportsbook
Bet365→
Sportsbook
BetAnySports→
Sportsbook
BetClic→
Sportsbook
Betfair Sportsbook→
Sportsbook
BetMGM→
Sportsbook
BetPARX→
Sportsbook
BetRivers→
Sportsbook
Betr Sportsbook→
Sportsbook
Betsson→
Sportsbook
BetUS→
Sportsbook
Bet Victor→
Sportsbook
Betway→
Sportsbook
BlueBet→
Sportsbook
Bookmaker.eu→
Sportsbook
Bovada→
Sportsbook
BoyleSports→
Sportsbook
Caesars→
Sportsbook
Casumo→
Sportsbook
Circa→
Sportsbook
Coolbet→
Sportsbook
Coral→
Sportsbook
DraftKings→
Sportsbook
ESPN BET→
Sportsbook
Everygame→
Sportsbook
Fanatics→
Sportsbook
FanDuel→
Sportsbook
Fliff→
Sportsbook
FOX Bet→
Sportsbook
FourWinds→
Sportsbook
Grosvenor→
Sportsbook
GTbets→
Sportsbook
Ladbrokes→
Sportsbook
LeoVegas→
Sportsbook
LiveScore Bet→
Sportsbook
LowVig→
Sportsbook
Marathon Bet→
Sportsbook
Mr Green→
Sportsbook
MyBookie→
Sportsbook
Neds→
Sportsbook
NordicBet→
Sportsbook
Paddy Power→
Sportsbook
Pinnacle→
Sportsbook
PlayUp→
Sportsbook
PointsBet→
Sportsbook
Prophet Exchange→
Sportsbook
SI Sportsbook→
Sportsbook
Sky Bet→
Sportsbook
SportsBet→
Sportsbook
SugarHouse→
Sportsbook
SportsBetting.ag→
Sportsbook
Superbook→
Sportsbook
Suprabets→
Sportsbook
TAB→
Sportsbook
TABtouch→
Sportsbook
Tipico→
Sportsbook
TopSport→
Sportsbook
Unibet→
Sportsbook
Virgin Bet→
Sportsbook
William Hill→
Sportsbook
Wind Creek (Betfred PA)→
Sportsbook
WynnBet→
Sportsbook
Betfred→
Sportsbook
Betsafe→
Sportsbook
BoomBet→
Sportsbook
NorthStar Bets→
Sportsbook
Stake→
Sportsbook
theScore Bet→
Sportsbook
Bodog→
Sportsbook
Prime Sports→
Sportsbook