Sportsbook

William Hill Odds API

Pull William Hill prices through the SportsGameOdds API, normalised into the same structure as 85+ other books. Included on the free plan, so you can build against it before you pay anything.

The bookmakerID is williamhill. Not william-hill, not William Hill, not williamHill.

That sounds like a trivia question until you consider how most people build a bookmaker lookup: take the display name, lowercase it, replace the spaces with hyphens, and use that as the key. Do that here and every William Hill request comes back empty. Not an error — empty, which is considerably harder to notice.

Names and IDs are separate fields, and they do not always agree

William Hill is the clearest example in the book list, but it is not the only one. Display names carry spaces, punctuation and capitalisation that the IDs do not, and the two are maintained as separate fields rather than one being derived from the other. A name can be corrected without the ID moving, because the ID is the contract.

So do not derive one from the other in either direction. The bookmakers reference lists every bookmakerID with its display name, which is the list to build your lookup from. If you are storing books in your own database, store the ID as the key and treat the name as a label you render.

This matters more than it looks. A wrong ID in a request parameter returns an empty result rather than a 4xx, so the failure is silent: your comparison table renders, it just quietly has one fewer book in it than you think, on every row, forever.

William Hill on the free plan

The free Amateur plan carries nine of the 85+ books in the feed: FanDuel, Draft Kings, BetMGM, Caesars, ESPN BET, Bovada, Unibet, PointsBet and William Hill.

William Hill is the UK-facing book in that group. Most of the rest are American, which is worth knowing when you are deciding what to test your integration against — a book pricing to a British audience will not always post the same market list as one pricing to a US audience, and the free plan is the cheapest place to find that out.

The Unibet Odds API page covers the other side of that, including how three-way soccer markets are structured, since two of the eight free-plan leagues are soccer competitions.

Where William Hill shows up

William Hill is a main-markets book in this feed, not a props book. It prices 9 markets across 20 leagues, and they are all moneyline, three-way moneyline and totals — no player props, team props or game props at all.

Soccer regulation lines are the centre of it. Its deepest coverage is the three-way regulation moneyline and match totals in La Liga, Ligue 1, the Premier League, MLS and Brazil's Série A, with 7 markets in each. That is the market a soccer product is built around, and it is what this book is for.

American leagues are present but shallow. It appears in the NFL, NBA and MLB with two markets each and the NHL with four — the headline lines and little else. If you need NFL depth, DraftKings and FanDuel carry hundreds of markets there; William Hill carries two.

Requesting William Hill prices

Filter to William Hill alone with bookmakerID=williamhill:

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

More usefully, request it alongside the other books on the same market:

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

Every book comes back under the same oddID, so comparing them is a lookup rather than a name-matching problem — which is the same reason building against IDs rather than names matters.

What a William Hill price looks like

{
  "eventID": "...",
  "leagueID": "EPL",
  "odds": {
    "points-home-reg-ml3way-home": {
      "oddID": "points-home-reg-ml3way-home",
      "marketName": "3-Way Moneyline",
      "statID": "points",
      "statEntityID": "home",
      "periodID": "reg",
      "betTypeID": "ml3way",
      "sideID": "home",
      "fairOdds": "-135",
      "bookOdds": "-128",
      "byBookmaker": {
        "williamhill": { "odds": "-130", "available": true },
        "draftkings": { "odds": "-125", "available": true }
      }
    }
  }
}

Note the key inside byBookmaker is williamhill, matching the request parameter. Odds are strings, so -130 keeps its sign rather than becoming a number you have to guard against. fairOdds is the vig-free consensus across every book pricing that market while bookOdds keeps the margin in. The periodID is reg because a soccer result settles over ninety minutes plus stoppage, not extra time.

Coverage, honestly

William Hill does not price everything. Read byBookmaker on each odd rather than assuming it is there, and treat its absence as normal rather than as an error — particularly on the narrower prop categories, where the field of books pricing a market thins out considerably. The /markets endpoint returns the supported set by league if you would rather check before requesting odds.

Because an unrecognised bookmakerID also returns nothing, an empty result on its own does not tell you which of the two happened. If a filtered request comes back empty, check the ID against the bookmakers reference before assuming the book is not pricing the market.

Use cases for William Hill data

Prototyping is the honest first one. William Hill is available before you have entered a card, so it is part of the set you can validate an integration against rather than something you read about and hope works after upgrading.

For odds comparison tools, a book aimed at a different audience than the American majors is worth a column, because two books selling to the same customers tend to show the same number.

For player prop tooling, look elsewhere: William Hill carries no player props in this feed. PrizePicks and Underdog are prop-only by design, and DraftKings and Bet365 carry the most of any sportsbook.

William Hill API technical specifications

William Hill comes through the standard /v2/events endpoint, with no separate call, credential or schema.

Billing is per event object rather than per market or per book, so a ten-game slate is ten objects whether the response carries four books or eighty, and whether it returns four markets per game or four hundred.

The free Amateur plan gives you 2,500 objects a month at 10 requests a minute on a ten-minute update interval — enough to build against real fixtures, not enough to run anything live. Odds refresh sub-minute on Pro. 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 William Hill?
williamhill, all lowercase and with no space, hyphen or underscore. Pass bookmakerID=williamhill to /v2/events and read the price from byBookmaker.williamhill on each odd. Do not derive the ID by slugifying the display name — the name and the ID are separate fields and they do not always agree.
Is William Hill available on the free plan?
Yes. William Hill is one of nine bookmakers included on the free Amateur tier, alongside FanDuel, Draft Kings, BetMGM, Caesars, ESPN BET, Bovada, Unibet and PointsBet. William Hill also stays available on every paid plan above that.
Why did my William Hill request come back empty?
Most often because the bookmakerID was wrong. An unrecognised ID returns an empty result rather than an error, so a typo fails silently instead of throwing. Check the ID is exactly williamhill before concluding the book is not pricing the market. The other possibility is genuine: no single book prices every market, so read byBookmaker on each odd.
Which markets does William Hill price?
Main markets only: moneyline, three-way moneyline and totals, across 20 leagues. It carries no player props, team props or game props. The depth sits in soccer, with 7 markets each in La Liga, Ligue 1, the Premier League, MLS and Brazil's Serie A, while the NFL, NBA and MLB get two markets each and the NHL gets four. Coverage changes, so read byBookmaker on each odd or query the /markets endpoint rather than hardcoding a list.
Should I store bookmakers by name or by ID?
By ID. The bookmakerID is the stable contract that requests and responses are keyed on, while the display name is a label that can be corrected without the ID moving. Store the ID as your key and render the name, rather than the other way round.
Does adding William Hill to a request cost more?
No. Billing is per event object rather than per market or per book, so one game counts once whether the response carries four books or eighty. Adding William Hill to a request you were already making costs response size and nothing else.

Build against it before you pay anything

William Hill is one of nine books on the free plan. 2,500 objects a month.

1xBet→
Sportsbook
888 Sport→
Sportsbook
Bally Bet→
Sportsbook
Barstool→
Sportsbook
Bet365→
Sportsbook
BetAnySports→
Sportsbook
BetClic→
Sportsbook
Betfair Sportsbook→
Sportsbook
BetMGM→
Sportsbook
BetOnline→
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
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