Home/ Guides FAQ/ Consensus

Market Consensus
Across 50 Sportsbooks

Aggregate statistics from 50 books in one call. Median, mean, min, max, and standard deviation for each outcome. See where books agree, where they disagree, and who the outliers are.

50

Books aggregated

Real-time

30s refresh

24

Sports covered

Get API Key — See Consensus
Sample — /intelligence/consensus
{
  "event": "Lakers vs Warriors",
  "market": "h2h",
  "outcomes": [
    {
      "name": "Lakers",
      "median_price": -142,
      "mean_price": -140,
      "min_price": -155,
      "max_price": -130,
      "std_dev": 5.8,
      "books_reporting": 47
    },
    {
      "name": "Warriors",
      "median_price": +120,
      "mean_price": +118,
      "min_price": +108,
      "max_price": +135,
      "std_dev": 6.2,
      "books_reporting": 47
    }
  ]
}

What Consensus Tells You

Median

The Market Center

The middle price across all 50 books. This is the market's best estimate of the true line. If you're getting a price significantly better than median, you're likely on the right side of value.

Std Dev

Market Disagreement

High standard deviation means books disagree on pricing. Disagreement = opportunity. Low std dev means the market has converged — harder to find edges. Sort by highest std dev to find the most inefficient markets.

Min / Max

The Outliers

The widest spread between min and max tells you where to bet and where to fade. Max price = best available odds (bet here). Min price = worst odds (avoid this book). A 25-point min/max spread on a two-way market is highly unusual — investigate.

Integration

Pull consensus and find disagreement.

Python — Sort by Market Disagreement
import requests

response = requests.get(
    "https://api.theoddsapi.com/v4/intelligence/consensus",
    headers={"x-api-key": "YOUR_KEY"},
    params={"sport_key": "basketball_nba"}
)

events = response.json()["data"]

# Sort by highest disagreement (std_dev) — most edge potential
for event in sorted(events, key=lambda e: max(o["std_dev"] for o in e["outcomes"]), reverse=True)[:5]:
    print(f"{event['event']}")
    for o in event["outcomes"]:
        spread = o["max_price"] - o["min_price"]
        print(f"  {o['name']}: median {o['median_price']}, spread {spread}pt, σ={o['std_dev']}")

How Operators Use Consensus

Model Calibration

Use the 50-book consensus as a benchmark. If your model disagrees with consensus by more than 3%, investigate. Either your model sees something the market doesn't, or your model is wrong. Consensus keeps you calibrated.

Outlier Detection

Sort events by standard deviation. High σ = books disagree = edge opportunities. Focus your energy on events where the market hasn't converged. Low σ events are efficient — skip them.

Fair Odds Proxy

If you don't have a proprietary model, the 50-book median is your best proxy for true probability. Bet any book offering significantly better than median. Combined with /intelligence/fair-odds (vig-removed), you get two independent fair-price signals.

Related

See the Full Market Picture

Business plan includes consensus, fair odds, value detection, edge scanning, and arbitrage across 24 sports.