Skip to Content
API ReferenceSportsbooks

Sportsbooks

Get a list of available sportsbooks and their current status, including which tier is required to access each book’s data.

Endpoints

GET /api/v1/sportsbooks

Requires an API key. Available on all tiers (Free included). Unauthenticated requests return 401.

List All Sportsbooks

Example Requests

curl -X GET "https://api.sharpapi.io/api/v1/sportsbooks" \ -H "X-API-Key: YOUR_API_KEY"

Response

{ "data": [ { "id": "draftkings", "numerical_id": 12, "name": "draftkings", "display_name": "DraftKings", "has_live_odds": true, "has_player_props": true, "regions": ["US"], "is_sharp": false, "status": "active", "event_count": 1250, "last_update": "2026-01-26T02:24:58.000Z", "requires_tier": null }, { "id": "fanduel", "numerical_id": 14, "name": "fanduel", "display_name": "FanDuel", "has_live_odds": true, "has_player_props": true, "regions": ["US"], "is_sharp": false, "status": "active", "event_count": 1180, "last_update": "2026-01-26T02:24:50.000Z", "requires_tier": null }, { "id": "betmgm", "name": "betmgm", "display_name": "BetMGM", "has_live_odds": true, "has_player_props": true, "regions": ["US"], "is_sharp": false, "status": "active", "event_count": 950, "last_update": "2026-01-26T02:24:45.000Z", "requires_tier": "hobby" }, { "id": "caesars", "name": "caesars", "display_name": "Caesars", "has_live_odds": true, "has_player_props": true, "regions": ["US"], "is_sharp": false, "status": "active", "event_count": 920, "last_update": "2026-01-26T02:24:40.000Z", "requires_tier": "hobby" }, { "id": "espnbet", "name": "espnbet", "display_name": "theScore Bet", "has_live_odds": true, "has_player_props": true, "regions": ["US"], "is_sharp": false, "status": "active", "event_count": 880, "last_update": "2026-01-26T02:24:38.000Z", "requires_tier": "hobby" }, { "id": "betrivers", "name": "betrivers", "display_name": "BetRivers", "has_live_odds": true, "has_player_props": true, "regions": ["US"], "is_sharp": false, "status": "active", "event_count": 760, "last_update": "2026-01-26T02:24:30.000Z", "requires_tier": "pro" }, { "id": "rebet", "name": "rebet", "display_name": "Rebet", "has_live_odds": true, "has_player_props": true, "regions": ["US"], "is_sharp": false, "status": "active", "event_count": 640, "last_update": "2026-01-26T02:24:22.000Z", "requires_tier": null }, { "id": "pinnacle", "numerical_id": 28, "name": "pinnacle", "display_name": "Pinnacle", "has_live_odds": true, "has_player_props": true, "regions": ["GLOBAL"], "is_sharp": true, "status": "active", "event_count": 980, "last_update": "2026-01-26T02:24:55.000Z", "requires_tier": "sharp" }, { "id": "circa", "name": "circa", "display_name": "Circa Sports", "has_live_odds": true, "has_player_props": true, "regions": ["US"], "is_sharp": true, "status": "active", "event_count": 620, "last_update": "2026-01-26T02:24:52.000Z", "requires_tier": "sharp" }, { "id": "bookmaker", "name": "bookmaker", "display_name": "Bookmaker", "has_live_odds": true, "has_player_props": false, "regions": ["GLOBAL"], "is_sharp": true, "status": "active", "event_count": 850, "last_update": "2026-01-26T02:24:48.000Z", "requires_tier": "sharp" }, { "id": "bet365", "name": "bet365", "display_name": "Bet365", "has_live_odds": true, "has_player_props": true, "regions": ["UK", "EU", "AU"], "is_sharp": false, "status": "active", "event_count": 1100, "last_update": "2026-01-26T02:24:35.000Z", "requires_tier": "pro" }, { "id": "betway", "name": "betway", "display_name": "Betway", "has_live_odds": true, "has_player_props": true, "regions": ["UK", "EU"], "is_sharp": false, "status": "active", "event_count": 720, "last_update": "2026-01-26T02:24:18.000Z", "requires_tier": null }, { "id": "skybet", "name": "skybet", "display_name": "Sky Bet", "has_live_odds": true, "has_player_props": false, "regions": ["UK"], "is_sharp": false, "status": "active", "event_count": 580, "last_update": "2026-01-26T02:24:15.000Z", "requires_tier": null }, { "id": "prophetx", "name": "prophetx", "display_name": "ProphetX", "has_live_odds": true, "has_player_props": false, "regions": ["GLOBAL"], "is_sharp": true, "status": "active", "event_count": 310, "last_update": "2026-01-26T02:24:12.000Z", "requires_tier": "sharp" }, { "id": "betfair", "name": "betfair", "display_name": "Betfair", "has_live_odds": true, "has_player_props": false, "regions": ["UK", "EU", "AU"], "is_sharp": true, "status": "active", "event_count": 900, "last_update": "2026-01-26T02:24:10.000Z", "requires_tier": "sharp" }, { "id": "polymarket", "name": "polymarket", "display_name": "Polymarket", "has_live_odds": false, "has_player_props": false, "regions": ["US"], "is_sharp": false, "status": "active", "event_count": 420, "last_update": "2026-01-26T02:24:08.000Z", "requires_tier": null }, { "id": "kalshi", "name": "kalshi", "display_name": "Kalshi", "has_live_odds": true, "has_player_props": false, "regions": ["US"], "is_sharp": false, "status": "active", "event_count": 280, "last_update": "2026-01-26T02:24:05.000Z", "requires_tier": null } ], "meta": { "count": 17, "total": 17, "pagination": { "limit": 50, "offset": 0, "has_more": false, "next_offset": null }, "updated_at": "2026-01-26T02:25:00.000Z", "filters": {} } }

Sportsbook Object Schema

FieldTypeDescription
idstringUnique identifier (use in API filters)
numerical_idinteger | nullStable integer key for the sportsbook (frozen, never reused). New (May 2026) — additive, optional. See Entity reference IDs.
namestringInternal name (same as id)
display_namestringHuman-readable name
has_live_oddsbooleanSupports live/in-play odds
has_player_propsbooleanSupports player prop markets
regionsstring[]Available regions: US, UK, EU, AU, GLOBAL
is_sharpbooleanWhether the book is considered a sharp/efficient market
statusstringactive or inactive
event_countintegerNumber of events currently available
last_updatestringISO 8601 timestamp of last data update
requires_tierstring | nullMinimum tier required: null (free), hobby, pro, sharp

The event_count may be 0 and last_update may be null if a sportsbook is temporarily unavailable or experiencing data delays.

New (May 2026): numerical_id

numerical_id is a frozen, dense-from-1 integer assigned per sportsbook in the SharpAPI atlas. It’s stable across rebrands and slug renames — pinnacle is numerical_id: 28 regardless of any future display-name changes.

  • Frozen: never reused or remapped.
  • Optional: absent (or null) for sportsbooks not yet mapped (e.g. brand-new books in the catalog before assignment); slug id is always present.
  • Domain-scoped: unique across sportsbooks only.

Every odds row and opportunity leg also carries a matching sportsbook_ref block ({id, label, numerical_id}). See Entity reference IDs.

Book Access by Tier

The requires_tier field indicates the minimum subscription tier needed to access a sportsbook’s odds data through the API.

TierBooks AvailableIncluded Sportsbooks
Free23Kalshi, BetMGM, DraftKings, Bet365, and 19 more
Hobby23Same as Free
Pro23Same as Hobby
Sharp26All available sportsbooks
Enterprise26All available sportsbooks

Pinnacle, Circa Sports, Bookmaker, ProphetX, and Betfair require Sharp tier or higher. Pinnacle is a sharp book whose efficient lines are used as the reference for +EV calculations. Circa Sports is another known sharp book with deliberately tight lines and a focused prop menu. Requesting sharp book odds on Free, Hobby, or Pro tier will return a 403 tier_restricted error.

Understanding requires_tier

ValueMeaning
nullAvailable on all tiers, including Free
"hobby"Requires Hobby tier or higher
"pro"Requires Pro tier or higher
"sharp"Requires Sharp or Enterprise tier

Supported Sportsbooks

Major US Books

IDNameLivePropsTier
ballybetBally BetYesNoFree
betmgmBetMGMYesYesFree
betonlineBetOnlineYesYesFree
betriversBetRiversYesYesFree
bovadaBovadaYesYesFree
caesarsCaesarsYesYesFree
draftkingsDraftKingsYesYesFree
fanaticsFanaticsYesYesFree
fanduelFanDuelYesYesFree
fliffFliffYesYesFree
novigNovigNoNoFree
rebetRebetYesYesFree
thescorebettheScore BetYesYesFree

Sharp Books

IDNameLivePropsTier
circaCirca SportsYesLimitedSharp
pinnaclePinnacleYesYesSharp

Reading Pinnacle timestamps. odds_changed_at on a Pinnacle row is their trading-desk timestamp, not our pipeline’s. Pinnacle holds lines steady when the market has not moved — an idle value of 30+ minutes is common on MLB player props and NBA markets. Use last_seen_at for pipeline freshness. See Understanding Pinnacle’s odds_changed_at for what “stale” actually means on their feed.

International

IDNameLivePropsTier
bet105Bet105YesYesFree
bet365Bet365YesYesFree
betwayBetwayYesYesFree
ladbrokesLadbrokesYesYesFree
sabaSABAYesNoFree
skybetSky BetYesNoFree
stakeStakeYesYesFree
unibetUnibetYesYesFree

Exchanges

IDNameLivePropsTier
prophetxProphetXYesNoSharp

Prediction Markets

IDNameLivePropsTier
kalshiKalshiYesNoFree
polymarketPolymarketNoNoFree

Polymarket and Kalshi are prediction market platforms. Unlike traditional sportsbooks, they use binary outcome contracts priced between $0 and $1. SharpAPI normalizes contract prices into standard odds formats (American, decimal, implied probability) so you can compare them directly with sportsbook odds. Kalshi is CFTC-regulated.

Sharp vs Soft Books

Sharp Books

  • Lower vig (juice) — tighter margins mean better odds accuracy
  • Efficient lines — used as the reference for +EV and fair value calculations
  • Not available in all regions — Pinnacle is not licensed in the US
  • Examples: Pinnacle, Circa Sports, Bookmaker

Soft Books

  • Higher vig — wider margins create more room for +EV opportunities
  • More promotions — bonuses, boosts, and free bets
  • Slower line movement — may lag behind sharp market moves
  • Where value is found — the gap between soft book odds and sharp reference creates +EV
  • Examples: DraftKings, FanDuel, BetMGM, Caesars

Sharp books like Pinnacle set efficient lines quickly. Soft books often lag behind, creating windows where their odds offer positive expected value compared to the sharp reference. This is the foundation of +EV betting strategy.

Building a live betting tool? DraftKings and FanDuel have has_live_odds: true but frequently suspend markets during scoring plays and key moments. If you need continuous live coverage, Pinnacle (Sharp tier) is the reliable reference. See Live vs. Pre-Match for a full breakdown of book behavior during live play.

Last updated on