28-day cross-book analysis

Which sportsbook prices player props most accurately?

We grade every prop against the league's official box-score feed (MLB Stats API, NBA CDN, NHL API, ESPN for soccer). Below is a real 28-day window across 7 sportsbooks and 12 markets — the closer a book's Over hit rate sits to 50.0%, the more balanced its line.

75,840
graded outcomes
7
sportsbooks
28
day window
12
markets compared

Bovada prices the most markets closest to 50/50

Bovada sits closest to a balanced 50% Over hit rate in 3 of 12 markets we tracked — more than any other book. That's the technical definition of "the sharpest line" before vig.

Bovada graded 17,816 outcomes in this window

Bovada carried the deepest coverage of any book here, with 17,816 Over outcomes graded across the 12 markets in the comparison. Sample size translates to confidence: cells from higher-volume books are statistically more reliable than thin ones.

Game lines Game Totals has a 16.6-point cross-book spread

Pinnacle's Game Totals Overs hit 47.2% while Bovada's hit 30.6% on the same market — same players, same league, same period. That's where cross-book line shopping lives.

Over hit rate by market and book

Each cell shows the percent of Over outcomes that won, last 28 days. Greener = closer to 50/50. A book's Over hitting at 48-52% on a market is balanced pricing; outside that range the book is taking a measurable side of the action.

MarketPinnacleDraftKingsFanDuelBetMGMBovadaBetRiversUnibet
Pitcher Strikeouts
MLB
54.4%
n=632
52.1%
n=486
51.9%
n=568
51.6%
n=395
51.4%
n=628
53.2%
n=556
Batter Hits
MLB
54.2%
n=4,551
48.4%
n=4,000
57.5%
n=5,575
Batter Total Bases
MLB
46.6%
n=5,780
40.0%
n=2,055
46.0%
n=3,985
38.4%
n=2,887
34.9%
n=5,672
Hits + Runs + RBIs
MLB
46.3%
n=4,268
46.4%
n=3,210
46.2%
n=5,925
Player Points
NBA
44.9%
n=385
40.7%
n=440
42.0%
n=281
44.2%
n=747
45.9%
n=109
45.5%
n=110
Player Rebounds
NBA
46.2%
n=357
44.2%
n=405
49.0%
n=257
44.8%
n=647
46.3%
n=95
46.3%
n=95
Player Assists
NBA
44.4%
n=322
43.4%
n=316
42.6%
n=223
46.2%
n=498
50.8%
n=65
51.6%
n=64
Player 3s Made
NBA
41.8%
n=311
34.2%
n=342
38.8%
n=227
40.1%
n=521
46.7%
n=75
46.7%
n=75
Shots on Goal
NHL
42.5%
n=468
Goalie Saves
NHL
37.3%
n=51
Moneyline
Game lines
Game Totals
Game lines
47.2%
n=8,679
32.6%
n=622
40.0%
n=617
32.1%
n=627
30.6%
n=5,444
36.0%
n=595
35.3%
n=597
All markets (avg)47.3%47.4%42.9%46.2%39.9%46.0%39.6%

Cell value = won ÷ total of all graded Over outcomes on that market / book in the window. Cells with fewer than 30 graded outcomes are omitted (insufficient sample). Highlighted cell per row = book closest to a balanced 50%. The footer row averages all markets per book.

How to read this

50% Over ≠ break-even at -110

A market with a 50% Over hit rate at standard -110 / -110 pricing still loses 4.5% over time to vig. To actually profit on the Over, you need it to hit at least 52.4%. So a book sitting at 48-50% on Overs is doing exactly what it's supposed to.

Low Over % = book-favorable, not necessarily mispriced

Markets with 0.5 lines on rare events (player_blocks, batter_doubles) naturally hit Over far below 50% because most players don't record any of the stat in a given game. That's the natural base rate, not a mispricing — though it does mean books print the Under consistently.

Why Pinnacle anchors fair-line math

Pinnacle is the closest-to-50% book on most markets here because they take sharp action and move lines until both sides clear equally. That's why our +EV calculator uses Pinnacle as the no-vig anchor.

Cross-book spreads are where shopping pays off

When two books on the same market sit 5+ percentage points apart on their Over hit rate, that's real pricing divergence — and the kind of edge a multi-book API surfaces that a single-book scrape never could.

Methodology

Source data: Every prop in the comparison is scraped from the listed book's public odds feed every 90 seconds, then matched against the league's official stats API after the game ends (MLB Stats API for baseball, NBA CDN for basketball, NHL Stats for hockey). Resolution is automatic and book-agnostic — we don't use any book's own settlement; the league's box score is the single source of truth.

Window: Last 28 days of graded outcomes. Rolling — refreshes hourly.

Sample-size floor: A (book, market) cell is included only if at least 30 Over outcomes were graded in the window. Cells below the floor are shown as —.

Books included: Pure sportsbooks with consistent Over/Under two-sided pricing. DFS books (PrizePicks, Underdog) and prediction-market exchanges (Polymarket, Smarkets, Matchbook, Kalshi) are excluded from this comparison because their pricing dynamics differ — their hit rates aren't directly comparable to sportsbook Over %. They're still graded in our broader dataset.

Reproducibility: Every number in the table comes from the public GET /v1/markets/hit-rates?bookmaker=<book>&days=28 endpoint, available on the free tier. Run it yourself and check our work.

This is what multi-book grading looks like.

PropLine ingests 7+ sportsbooks plus 5exchanges and grades every prop against the league feed. The comparison above is impossible without that — single-book APIs can't tell this story.