Up to 15 games on a typical weekday slate. Every game brings a unique starting-pitcher matchup, batter splits, weather window, and lineup card. Soft books cannot price all of that in real time. TheOddsAPI surfaces the gaps for operators. MLB batter total bases, pitcher strikeouts, and home runs from up to 50 sportsbooks with Pinnacle as the sharp anchor.
50
Sportsbooks priced per market
3
MLB prop markets active
T-30
Snapshot trail per edge
San Diego Padres at Milwaukee Brewers, T-30 minutes to first pitch
Six prop edges across both rosters from five different soft books, two markets. The soft books are paying 11 to 12 cents more than Pinnacle. Captured live from prop_edge_snapshots.
This is a typical day on the MLB slate. The pattern below repeats nightly: multiple soft books settling on consensus prices that drift from Pinnacle by 10 to 15 cents across batter totals and pitcher strikeouts. Operators with a Pinnacle benchmark catch it. Single-book bettors do not.
Pinnacle accepts large action, holds the lowest margin in the industry, and adjusts prop lines from the same models that price their game totals. When Pinnacle quotes a batter's total bases at -162 (Over 0.5), the implied probability is 61.8 percent. When BetMGM quotes the same Over at -150, BetMGM is implying 60.0 percent. The 1.8-point probability gap is real money compounded across the daily slate.
Up to 15 MLB games on a weekday. Every game has a unique starting-pitcher matchup and a full lineup of batter prop boards. Soft books cannot man this volume with senior traders. They run consensus feeds that lag Pinnacle by minutes.
A late scratch from the order, a starter pushed back a day, a weather hold extending warmups, all move Pinnacle within seconds. Soft books wait for confirmed lineup cards from official channels, which can lag by 30 to 60 minutes.
Soft books default to wider margins on props than on game lines. The buffer absorbs forecasting error, but it also leaves room for traders to extract that margin when they identify which side of the line is wrong.
The structural result: MLB prop markets are where sharp pricing data has the highest dollar-per-call ROI on a volume basis. Every night brings a new slate. Every slate brings fresh divergence.
01
Call TheOddsAPI's /props/ endpoint for an event. The response includes every book's lines for batter_total_bases, pitcher_strikeouts, and batter_home_runs, with Pinnacle present when available.
02
For each market, locate Pinnacle's line and price. Pinnacle is the baseline for fair probability. If Pinnacle has not yet quoted a market, skip it. There is no sharp anchor to compare against.
03
For each soft book offering the same player, market, direction, and point, calculate the cent-value gap against Pinnacle. The cent value works across the +100 / -100 boundary cleanly.
04
Discard candidates below your threshold. TheOddsAPI's /edges/ endpoint defaults to a min_edge of 50 (filters market microstructure noise). Set min_edge=10 for prop-scale gaps. What remains is sorted by edge score.
A book paying 11 cents more than Pinnacle on a 50/50 prop translates to roughly 2.5 percent expected value before juice. Multiply across a 15-game slate, every night, all season. The compounded return is the difference between a hobbyist and an operator.
Player props refresh approximately every 5 minutes for events starting within 24 hours. TheOddsAPI's edge detection runs server-side on the same cadence as the parent sport's refresh tick (30 seconds for MLB). When a new prop quote enters our cache, the corresponding edge appears in /edges/ within roughly 30 seconds.
End-to-end edge surfacing latency is the edge detection cycle plus the time since the last prop refresh. Worst case is around 5 minutes 30 seconds. Best case is around 30 seconds. Typical is a few minutes. For MLB, the highest-value window is the 60 minutes before first pitch when lineups confirm and weather updates land. Operators running automated scans in this window catch the most edges before retail flow corrects them.
Map every soft-book MLB prop quote to Pinnacle and surface the gap. Python, ~40 lines.
import requests
# Step 1: Fetch MLB player props for an event from TheOddsAPI
event_id = "YOUR_EVENT_ID"
response = requests.get(
"https://api.theoddsapi.com/props/",
params={
"apiKey": "YOUR_KEY",
"sport_key": "baseball_mlb",
"event_id": event_id,
"markets": "batter_total_bases,pitcher_strikeouts,batter_home_runs",
},
)
event = response.json()
# Step 2: Index Pinnacle's lines by (market, player, direction)
PINNACLE = "pinnacle"
props = event.get("props", [])
pinnacle_index = {}
for prop_market in props:
market_key = prop_market["market"]
pinnacle_book = next((b for b in prop_market["books"] if b["book"] == PINNACLE), None)
if not pinnacle_book:
continue
for o in pinnacle_book["outcomes"]:
key = (market_key, o["description"], o["name"])
pinnacle_index[key] = (o.get("point"), o["price"])
if not pinnacle_index:
raise SystemExit("Pinnacle not quoting this event yet")
# Step 3: Compare every other book to Pinnacle on the same outcome
def cent_value(price):
if price > 0: return price - 100
if price < 0: return 100 + price
return 0
EDGE_THRESHOLD_CENTS = 10
edges = []
for prop_market in props:
market_key = prop_market["market"]
for book in prop_market["books"]:
if book["book"] == PINNACLE:
continue
for o in book["outcomes"]:
key = (market_key, o["description"], o["name"])
if key not in pinnacle_index:
continue
sharp_point, sharp_price = pinnacle_index[key]
if o.get("point") != sharp_point:
continue # different line, separate calculation
price_gap = cent_value(o["price"]) - cent_value(sharp_price)
if price_gap > EDGE_THRESHOLD_CENTS:
edges.append({
"player": o["description"],
"market": market_key,
"direction": o["name"],
"soft_book": book["book"],
"soft_price": o["price"],
"pinnacle": sharp_price,
"gap_cents": price_gap,
})
# Step 4: Sort by gap, surface the best
edges.sort(key=lambda e: e["gap_cents"], reverse=True)
for e in edges[:5]:
print(f"{e['player']:25s} {e['market']:18s} {e['direction']:5s} "
f"{e['soft_book']:15s} {e['soft_price']:+5d} vs PIN {e['pinnacle']:+5d} "
f"({e['gap_cents']:+d}c)")
For operators running this every 30 seconds across the MLB slate, TheOddsAPI's /edges/ endpoint pre-computes the full list server-side. One call returns a sorted list of every Pinnacle-anchored edge across every MLB event currently quoted, including both standard and prop edges in the same response.
curl 'https://api.theoddsapi.com/edges/?sport_key=baseball_mlb&min_edge=10' \
-H 'x-api-key: YOUR_KEY'
Each MLB game features a unique pitching matchup. Pinnacle prices batter total bases off pitcher-batter handedness splits, recent form, and park factors. Soft books often run a default model that under-weights the pitcher variable, leaving batter TB lines systematically off Pinnacle on extreme matchups.
Lineup cards confirm 30 to 90 minutes before first pitch. A batter scratched from the order moves teammates up the lineup and changes the at-bat distribution. Pinnacle adjusts immediately. Soft books often wait until pre-game.
Wind direction and humidity move the home run market more than any other prop. Pinnacle adjusts pitcher strikeout and batter total base lines in tandem with weather updates. Soft books often hold lines until the National Weather Service official forecast lands.
15 games means 15 batter boards and 15 pitcher boards in a single afternoon. The senior trader desk does not manually price every line. Junior traders or default models fill the gaps, and the gaps widen relative to Pinnacle as the day progresses.
| Single-Book Feed | TheOddsAPI | |
|---|---|---|
| Books quoted per market | 1 | Up to 50 (30+ on most MLB prop markets) |
| Pinnacle as benchmark | Sometimes | Always when Pinnacle is quoting |
| Markets covered | Strikeouts or hits typically | Total bases, pitcher strikeouts, home runs |
| Refresh latency | Varies, often 5+ minutes | Edge surfacing within minutes |
| Edge detection | Build it yourself | Pre-computed at /edges/ |
| Snapshot trail for backtest | None | T-30 captures stored in prop_edge_snapshots |
| Code integration | Custom per book | Single REST API, JSON, any language |
The snapshot trail is operator-specific. Every MLB prop edge surfaced by TheOddsAPI is captured at T-30 to a timestamped table (prop_edge_snapshots), so operators can pull historical snapshots and apply their own settlement logic to compute a real cumulative ROI. Automated grading on Business+ tiers ships once the prop grading service is live.
A second example showing the multi-book divergence pattern. Pulled directly from prop_edge_snapshots, captured 30 minutes before first pitch.
Pittsburgh Pirates at Arizona Diamondbacks, batter_total_bases
Corbin Carroll's Over 1.5 total bases was priced soft at both William Hill US (+110) and MyBookie (+108) while Pinnacle had it at -103. Two independent soft books converged on a consensus that Pinnacle disagreed with by 13 cents. Same player, same line, same direction. Oneil Cruz showed the inverse pattern: BetMGM offered the Over at +130 while DraftKings offered the Under at -147. Both were off Pinnacle by 11 to 12 cents in opposite directions.
The pattern matters more than any single edge. When multiple soft books converge against Pinnacle on the same outcome, that is signal. When opposing soft books straddle Pinnacle, that is structural opportunity in either direction. An operator scanning 50 books rather than one or two catches both patterns. An operator with no Pinnacle benchmark has nothing to compare against.
Three MLB player prop markets with active edge detection. Every market is priced by every book that quotes it, with Pinnacle present when Pinnacle is in the feed.
batter_total_bases
Over/Under on a batter's total bases (singles count 1, doubles 2, triples 3, home runs 4). The dominant volume market on the MLB prop board.
pitcher_strikeouts
Over/Under on a starting pitcher's strikeouts. Driven by handedness splits, recent form, and the opposing lineup's strikeout rate.
batter_home_runs
Over/Under on a batter recording a home run. Highly weather-sensitive. Soft-book edges appear most around wind and humidity adjustments.
Coverage extends to NBA and NHL props on the same endpoint pattern, so operators expanding from MLB into other sports do not need to rewrite integration logic. Additional MLB prop markets are on the roadmap as upstream coverage expands.
Prop edge detection is not risk-free. Understanding the limits protects your capital.
Some books quote regulation-only batter totals (9 innings). Others include extra innings. The same player's "Over 1.5 total bases" line can carry different settlement rules across books. TheOddsAPI exposes the raw upstream feed without papering over this, so operators must read book-specific settlement rules before placing real money.
Soft books that price props softly often impose lower betting limits on bettors who consistently identify edges. Edge that exists at the line will not always exist at the size you want to bet. Plan execution around per-book limits.
MLB games are uniquely exposed to weather: rain delays, wind shifts, and pitcher pulls that change the at-bat distribution after the prop locks. Books may void or adjust props differently when these events occur. Read each book's weather and pitcher-change rules before sizing positions on weather-dependent markets like home runs.
Player prop pushes are common at .5 and .0 lines. TheOddsAPI's prop_edge_snapshots table captures every Pinnacle-anchored prop edge at T-30 minutes for every covered MLB, NBA, and NHL game, building a timestamped trail. Automated grading of those snapshots (with full push and void semantics) is on the roadmap for Business+ tiers and ships once the grading service is live for prop markets. Operators who want to grade today can pull snapshots and apply their own settlement logic.
Same engine, eight NBA markets. Pinnacle anchor and T-30 snapshot trail.
Methodology behind the sharp anchor used in every edge calculation.
Backtest h2h, spreads, and totals against settled outcomes. Player props historical coverage is on the roadmap.
Free tier includes 25 requests per day for evaluation. Pro unlocks all 24 sports plus h2h, spreads, and totals. Business unlocks player props, the /edges/ endpoint with prop edges, the T-30 snapshot trail, and edge surfacing within minutes for production prop trading.