Prop markets are 2–4x softer than game lines. Less sharp money, wider disagreements between books, slower adjustments. We pull props from 50 books and surface where they disagree the most.
3
Sports (NBA, MLB, NHL)
50
Books compared
2–4x
Softer than spreads
Player props available on Business plan ($99/mo)
{
"event": "Knicks vs Celtics",
"player": "Jalen Brunson",
"prop": "points",
"line": 26.5,
"bookmakers": [
{"key": "pinnacle", "over": -118, "under": +102},
{"key": "draftkings", "over": -110, "under": -110},
{"key": "fanduel", "over": -105, "under": -115},
{"key": "betmgm", "over": -108, "under": -112},
{"key": "caesars", "over": +100, "under": -120}
]
}
Edge detected: Pinnacle has Over at -118 (implied 54.1%). Caesars offering Over at +100 (implied 50.0%). That's a 4.1% gap — Caesars is underpricing the over relative to the sharp market.
01
Sharp bettors focus volume on game lines where limits are $10K+. Prop limits are typically $500–$2K. Less sharp correction = more inefficiency persists.
02
Game lines converge — all books agree within 1–2 points. Props diverge — books disagree by 5–10 points on the same player because each uses different projection models.
03
Injury news, lineup changes, and matchup data affect props heavily but books adjust them 10–30 minutes slower than game lines. Information edge window is wider.
Pull prop odds and find where books disagree.
import requests
# Pull NBA player props
response = requests.get(
"https://api.theoddsapi.com/v4/sports/basketball_nba/events",
headers={"x-api-key": "YOUR_KEY"},
params={"markets": "player_points,player_rebounds,player_assists"}
)
events = response.json()
for event in events:
for prop in event.get("props", []):
prices = [b["over"] for b in prop["bookmakers"]]
best_price = max(prices)
avg_price = sum(prices) / len(prices)
# Flag if best book is 5+ pts better than average
if best_price - avg_price > 5:
print(f"EDGE: {prop['player']} {prop['prop']} Over {prop['line']}")
print(f" Best: {best_price} | Avg: {avg_price:.0f}")
const res = await fetch(
"https://api.theoddsapi.com/v4/sports/basketball_nba/events?markets=player_points",
{ headers: { "x-api-key": "YOUR_KEY" } }
);
const events = await res.json();
events.flatMap(e => e.props || []).forEach(prop => {
const prices = prop.bookmakers.map(b => b.over);
const best = Math.max(...prices);
const avg = prices.reduce((a, b) => a + b, 0) / prices.length;
if (best - avg > 5) console.log(`${prop.player} ${prop.prop} O${prop.line}: best ${best} vs avg ${avg.toFixed(0)}`);
});
When a key player is ruled out, game lines adjust within minutes. Prop lines for teammates (who absorb usage) adjust 10–30 minutes later. Early news = prop edge window.
Game total moves down → player point props should follow but often lag. Team blowout → bench minutes expand, starter props crash. These correlations create predictable edge windows in prop markets.
Pinnacle offers props with lower margins than DraftKings/FanDuel. Use Pinnacle's prop price as your baseline — when US books disagree by 5+ points, that's a signal. Same methodology as game-line edges, just higher frequency in props.
A typical NBA night has 10 games × 10 players × 5 prop types = 500 prop markets. Even if only 5% show meaningful edges, that's 25 actionable opportunities per night. Props are a volume game — scan everything, bet the outliers.
Business plan includes player props, edge detection, and the full intelligence layer across 24 sports.