Sportsbook

FanDuel Odds API

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

FanDuel is one of the two prices almost every US-facing product has to show. Its real strength is ice hockey: it carries more NHL markets than any other book we cover, and it spans 33 leagues, second only to Pinnacle for breadth. On basketball it is strong but not first — Bet365 prices noticeably more NBA markets.

Its coverage is sport-shaped rather than uniform, though, and that is the part worth knowing before you build against it.

Strong on basketball, thinner on baseball

Baseball is where FanDuel gives most ground. It is absent from several MLB categories we list — pitching props (strikeouts, earned runs, outs recorded), the individual inning markets, and team and game specials. Bet365 and Pinnacle appear in all three, with DraftKings and BetMGM covering the pitching props and the inning markets.

On soccer it is missing from two Premier League categories: card props and passing and defensive props.

None of that makes it a weak book. It means that if your product is baseball-first, treating FanDuel and DraftKings as interchangeable will leave holes in exactly the markets a baseball product cares about. On basketball the same assumption is safe.

The /markets endpoint returns the supported set by league from live data, which is the version to build against rather than any table.

Which plan includes FanDuel

FanDuel is on the free Amateur tier, alongside DraftKings, BetMGM, Caesars, ESPN BET, Bovada, Unibet, PointsBet and William Hill. The free tier limits the league list, the request rate and the refresh interval rather than the book's markets. Pricing has the detail.

Requesting FanDuel prices

Filter to FanDuel alone with bookmakerID=fanduel:

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

More usefully, request it next to the books you are comparing it against:

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

Player props come back in the same response as the game lines. There is no separate props endpoint to call and reconcile.

What a FanDuel prop 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": "NBA",
  "odds": {
    "points-ANTHONY_EDWARDS_1_NBA-game-ou-over": {
      "oddID": "points-ANTHONY_EDWARDS_1_NBA-game-ou-over",
      "opposingOddID": "points-ANTHONY_EDWARDS_1_NBA-game-ou-under",
      "marketName": "Anthony Edwards Points Over/Under",
      "statID": "points",
      "statEntityID": "ANTHONY_EDWARDS_1_NBA",
      "periodID": "game",
      "betTypeID": "ou",
      "sideID": "over",
      "fairOdds": "-108",
      "fairOverUnder": "26.5",
      "bookOdds": "-112",
      "byBookmaker": {
        "fanduel": { "odds": "-105", "overUnder": "27.5", "available": true },
        "draftkings": { "odds": "-115", "overUnder": "26.5", "available": true }
      }
    }
  }
}

Look at the two overUnder values before the two prices. FanDuel is a full point higher than DraftKings on the same player, in the same game. Comparing prices without comparing lines is the single most common mistake in building a consensus, and on props it happens constantly.

Odds and lines are both strings, so -105 arrives as "-105" and "27.5" stays a string rather than becoming a float you have to guard against.

Coverage, honestly

FanDuel does not price every market, and no single book does. Read byBookmaker on each odd rather than assuming it is there, and treat its absence as normal rather than as an error.

Prop catalogues change more than game lines do — books add and drop prop types between seasons and sometimes within them. Query /markets if you would rather check up front than handle it at runtime. Every book we carry, and the plan each one is on, is listed on the bookmakers index.

Use cases for FanDuel data

Odds comparison is the direct one — FanDuel and DraftKings are the two prices US users expect to see side by side.

For player prop tools, FanDuel's basketball depth makes it a strong anchor, especially against the DFS operators. Our provider guide compares what the main prop data sources actually return.

For arbitrage and positive EV work, measure FanDuel against the vig-free fairOdds consensus rather than against any single rival book.

For DFS and lineup tools, you can put a FanDuel prop line next to a PrizePicks or Underdog number on the same player and stat.

FanDuel API technical specifications

FanDuel 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. A ten-game slate is ten objects whether the response carries four books or eighty, and whether it carries four markets per game or four hundred. Props are the clearest case where that matters: a single game can return hundreds of prop markets and still counts once.

Odds refresh sub-minute on Pro, with a longer interval on Rookie and the free Amateur tier. Scores and settlement data ship alongside the odds, so there is no separate results integration — see bet tracking and settlement. The API documentation covers authentication, pagination and the full parameter list, handling odds covers reading byBookmaker in code, and there are SDKs for TypeScript, Python, Ruby, Go and Java.

Frequently asked questions

What is the bookmakerID for FanDuel?
fanduel, in lowercase and one word. Pass bookmakerID=fanduel to /v2/events and read the price from byBookmaker.fanduel on each odd. Build against the ID rather than the display name, since the two do not always match across books.
Which plans include FanDuel?
All of them, including the free Amateur tier, where it sits alongside DraftKings, BetMGM, Caesars, ESPN BET, Bovada, Unibet, PointsBet and William Hill. The free tier limits the league list, the request rate and the refresh interval rather than the book's markets.
Which markets does FanDuel cover?
On basketball, every NBA category we publish — scoring, rebound and assist, combo, defensive, shooting and milestone props plus quarter and half splits. Coverage is thinner on baseball, where it is absent from pitching props, individual inning markets and team and game specials, and on soccer, where it is absent from card props and passing and defensive props. Coverage changes, so query the /markets endpoint rather than hardcoding a list.
Can I treat FanDuel and DraftKings as interchangeable?
On basketball, broadly yes. On baseball, no — FanDuel is absent from several MLB categories that DraftKings does cover, including pitching props and the individual inning markets, so a baseball-first product built on that assumption will find holes in exactly the markets it cares about.
Why does FanDuel show a different line to other books?
Because each book sets its own number, not just its own price. Every entry in byBookmaker carries its own overUnder or spread alongside its odds, so a book can be a full point away on a player prop while looking similar on price. Read both fields together when building a consensus.
Do I need a separate request to get FanDuel player props?
No. Props come back in the same /v2/events response as the game lines, keyed by the same oddID pattern with the player's ID as the statEntityID. There is no separate props endpoint to call and reconcile against the event.
Does FanDuel have a public odds API?
FanDuel does not offer a public developer API for its odds. SportsGameOdds provides FanDuel prices through one unified API alongside 85+ other books in the same schema, so adding it to an existing integration is a parameter change rather than new parsing code.

Compare lines, not just prices

FanDuel 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
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
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