Skip to Content
API ReferenceBetting Splits

Betting Splits

Get public betting splits (handle % and bet %) from DraftKings and Circa Sports.

GET /api/v1/splits

Authentication

Requires API key. Available to all tiers.

What are betting splits?

Handle % is the percentage of total money wagered on each side. Bet % is the percentage of total tickets (bets placed) on each side.

The gap between bet % and handle % reveals sharp money. If 30% of tickets carry 60% of the money, sharp bettors are on that side.

Data Sources

SourceTypeUpdate Frequency
DraftKingsRecreational book (~35% US market share)Every 5 minutes
Circa SportsSharp-friendly book (attracts professionals)Every 5 minutes

Comparing DraftKings (recreational) vs Circa (sharp) splits reveals where professional money diverges from the public.

Query Parameters

ParameterTypeDescription
sportstringFilter by sport (comma-separated). Example: basketball
leaguestringFilter by league (comma-separated). Example: nba,ncaab
sportsbookstringFilter by splits source. Example: draftkings,circa
event_idstringFilter by canonical event ID (comma-separated)
limitintegerMax results (default 100, max 500)
offsetintegerPagination offset (default 0)

Response

{ "success": true, "data": [ { "event_id": "nba_thunder_timberwolves_2026-03-15", "sport": "basketball", "league": "nba", "book": "draftkings", "away_team": "Minnesota Timberwolves", "home_team": "Oklahoma City Thunder", "spread": { "away_line": 9.5, "home_line": -9.5, "handle_pct": { "away": 0.55, "home": 0.45 }, "bets_pct": { "away": 0.59, "home": 0.41 } }, "total": { "line": 225.5, "handle_pct": { "over": 0.51, "under": 0.49 }, "bets_pct": { "over": 0.67, "under": 0.33 } }, "moneyline": { "away_odds": 310, "home_odds": -395, "handle_pct": { "away": 0.51, "home": 0.49 }, "bets_pct": { "away": 0.22, "home": 0.78 } }, "fetched_at": "2026-03-15T14:30:00Z" } ], "meta": { "total": 25, "limit": 100, "offset": 0, "sources": ["draftkings", "circa"], "sports": ["basketball", "mma"] } }

Response Fields

FieldTypeDescription
event_idstringCanonical event ID — use this to join with /odds data
sportstringAtlas-normalized sport name
leaguestringAtlas-normalized league name
bookstringSource sportsbook for the splits data
away_teamstringAway team name
home_teamstringHome team name
spread.away_linenumberAway spread line (e.g., +9.5)
spread.home_linenumberHome spread line (e.g., -9.5)
spread.handle_pctobjectMoney % on each side (away, home; 0.0-1.0)
spread.bets_pctobjectTicket % on each side (away, home; 0.0-1.0)
total.linenumberOver/under line (e.g., 225.5)
total.handle_pctobjectMoney % (over, under; 0.0-1.0)
total.bets_pctobjectTicket % (over, under; 0.0-1.0)
moneyline.away_oddsnumberAway moneyline odds (American format)
moneyline.home_oddsnumberHome moneyline odds (American format)
moneyline.handle_pctobjectMoney % on each side (away, home; 0.0-1.0)
moneyline.bets_pctobjectTicket % on each side (away, home; 0.0-1.0)
fetched_atstringISO 8601 timestamp when data was last scraped

The event_id field uses the same canonical ID format as the /odds endpoint, so you can join splits with odds data directly. For example, fetch odds for a specific game and compare with its splits:

GET /api/v1/odds?event_id=nba_thunder_timberwolves_2026-03-15 GET /api/v1/splits?event_id=nba_thunder_timberwolves_2026-03-15

Per-Selection Bet % (BetMGM)

In addition to the game-level splits from this endpoint, BetMGM odds items in the /odds response include an inline public_bet_pct field (0.0-1.0) representing ticket percentage per selection. This is available on NBA (100%), MLB (100%), and NHL (~60%) prematch markets.

Examples

curl "https://api.sharpapi.io/api/v1/splits?league=nba" \ -H "X-API-Key: YOUR_API_KEY"

Splits History

Track how splits shift over time for a specific event.

GET /api/v1/splits/history?event_id={event_id}

Query Parameters

ParameterTypeRequiredDescription
event_idstringYesCanonical event ID
sportsbookstringNoFilter by book (comma-separated)
limitintegerNoMax entries (default 100, max 500)

Response

Entries are sorted oldest-first, showing how splits evolved over the game day.

{ "success": true, "data": [ { "book": "draftkings", "ts": "2026-03-15T14:30:00Z", "timestamp": 1710513000, "spread": { "handle_pct": { "away": 0.55, "home": 0.45 }, "bets_pct": { "away": 0.59, "home": 0.41 } }, "total": { "handle_pct": { "over": 0.51, "under": 0.49 }, "bets_pct": { "over": 0.67, "under": 0.33 } }, "moneyline": { "handle_pct": { "away": 0.51, "home": 0.49 }, "bets_pct": { "away": 0.22, "home": 0.78 } } }, { "book": "draftkings", "ts": "2026-03-15T14:35:00Z", "timestamp": 1710513300, "spread": { "handle_pct": { "away": 0.58, "home": 0.42 }, "bets_pct": { "away": 0.60, "home": 0.40 } } } ], "meta": { "event_id": "nba_thunder_timberwolves_2026-03-15", "total": 2, "books": ["draftkings", "circa"], "oldest": "2026-03-15T14:30:00Z", "newest": "2026-03-15T14:35:00Z" } }

Data is collected every 5 minutes and retained for 48 hours.

curl "https://api.sharpapi.io/api/v1/splits/history?event_id=nba_thunder_timberwolves_2026-03-15" \ -H "X-API-Key: YOUR_API_KEY"

Interpreting Splits

SignalWhat it means
Bet % high, Handle % lowPublic side — lots of small bets
Bet % low, Handle % highSharp side — fewer but larger bets
DK and Circa agreeMarket consensus — both public and sharp aligned
DK and Circa divergeSharp-public split — Circa (sharp) disagrees with DK (public)

Splits data only comes from recreational books (DraftKings) and one sharp-adjacent book (Circa). No sharp book publishes splits. Use splits as one signal alongside line movement and +EV analysis, not in isolation.

Last updated on