When a sportsbook offers odds better than the vig-removed market consensus, that's a value bet. We compute the fair price from 50 books including Pinnacle, then flag every book that's offering more than they should.
50
Books in consensus
Vig-free
Fair odds baseline
2–5%
Typical value range
{
"sport_key": "basketball_nba",
"event": "76ers vs Bucks",
"market": "h2h",
"outcome": "76ers",
"fair_probability": 0.428,
"fair_price_american": +134,
"offered_price": +155,
"offered_book": "betrivers",
"edge_pct": 3.4,
"method": "vs_market_average",
"method_note": "Vig-removed across 50 books including Pinnacle",
"detected_at": "2026-04-30T19:08:33Z"
}
01
Odds from 50 books (including Pinnacle and EU sharp books) are aggregated. Vig is removed to produce the true market probability for each outcome. This is your baseline — the price the efficient market agrees on.
02
Every individual book's offered price is compared against the vig-removed fair price. When the offered odds imply a lower probability than fair (book is giving too much), that's detected value.
03
GET /intelligence/value returns all detected +EV opportunities
with fair probability, offered price, edge percentage, and the book offering it.
Filter for your minimum edge threshold.
The math behind a detected value opportunity.
NBA — 76ers vs Bucks — Moneyline
Fair Probability
42.8%
Vig-removed consensus
Fair Price
+134
What it should be
BetRivers Offering
+155
Better than fair
Your Edge
+3.4%
Above fair value
What happened: The 50-book consensus (vig-removed) says 76ers have a 42.8% chance of winning. That maps to a fair price of +134. BetRivers is offering +155 — implying only 39.2%. They're underestimating the 76ers by 3.4 percentage points.
What you do: Bet 76ers +155 at BetRivers. You're getting paid as if they have a 39.2% chance when the market says 42.8%. Over hundreds of similar bets, this 3.4% edge compounds into consistent profit.
| Value Betting | Arbitrage | |
|---|---|---|
| Risk per bet | You can lose individual bets (variance) | Risk-free (all outcomes covered) |
| Frequency | 10–50+ opportunities per day | 1–5 per day (rare, fast-closing) |
| Edge per bet | 2–5% typical | 0.5–3% typical |
| Capital required | Moderate (one-sided bets) | High (capital on both sides) |
| Bets to confirm edge | 500–1000 bets | Immediate (guaranteed per trade) |
| Account longevity | Longer (mixed win/loss pattern) | Shorter (obvious to books) |
Most professional bettors use both. Arbitrage for risk-free capital growth,
value betting for higher-volume edge exploitation. TheOddsAPI provides
both via /intelligence/arbitrage and /intelligence/value.
Pull value bets and filter by your minimum edge threshold.
import requests
response = requests.get(
"https://api.theoddsapi.com/v4/intelligence/value",
headers={"x-api-key": "YOUR_KEY"},
params={"sport_key": "basketball_nba"}
)
value_bets = response.json()["data"]
# Filter for 3%+ edge — your threshold for action
for vb in value_bets:
if vb["edge_pct"] >= 3.0:
print(f"{vb['event']} — {vb['outcome']}")
print(f" Fair: {vb['fair_price_american']} | Offered: {vb['offered_price']} @ {vb['offered_book']}")
print(f" Edge: +{vb['edge_pct']}%")
const res = await fetch(
"https://api.theoddsapi.com/v4/intelligence/value?sport_key=basketball_nba",
{ headers: { "x-api-key": "YOUR_KEY" } }
);
const { data: valueBets } = await res.json();
// Surface 3%+ edges
valueBets
.filter(vb => vb.edge_pct >= 3.0)
.forEach(vb => console.log(
`${vb.event}: ${vb.outcome} +${vb.edge_pct}% @ ${vb.offered_book} (${vb.offered_price} vs fair ${vb.fair_price_american})`
));
Value betting is variance-heavy. Individual bets lose regularly. Proper staking turns a mathematical edge into actual profit.
Optimal stake = (edge / odds). A 3% edge at +150 suggests staking 2% of bankroll. Full Kelly maximizes growth but produces large swings.
Most operators use 25–50% Kelly — slower growth but dramatically reduced drawdown risk. A 30% drawdown on full Kelly becomes 8–15% on quarter Kelly.
Fixed 1–2% of bankroll per bet regardless of edge size. Simpler, more conservative, easier to track.
Best for operators still validating their edge. Once you've confirmed +CLV over 500+ bets, graduate to fractional Kelly for faster compounding.
Even with a 3% edge, expect losing streaks of 10–15 bets. At 1% staking, that's a 10–15% drawdown — completely normal. The edge reveals itself over 200+ bets. If you're checking results after 20 bets, you're looking at noise, not signal. Minimum viable sample: 500 bets before concluding anything.
High game volume (82-game seasons) means soft books adjust lines more slowly. Daily slates of 5–15 games create dozens of value opportunities per night. Best sport for volume-based value strategies.
162-game season with daily slates of 10–15 games. Pitcher changes, weather, and lineup decisions create inefficiency that soft books are slow to price. Historically the most profitable sport for value bettors at scale.
Three-way markets (home/draw/away) create more pricing disagreement than two-way markets. Geographic differences between UK, EU, and US books mean value surfaces from regional information asymmetry. International books are included in TheOddsAPI's consensus.
Business plan includes value detection, fair odds, consensus, edge detection, and arbitrage — the full intelligence layer across 24 sports.