The Odds API

Overview

The Odds API is a sports betting odds aggregation API that provides real-time and historical odds from over 80 bookmakers across major sports. It is one of the most widely used data sources for sports betting model development because it offers a simple REST interface, broad bookmaker coverage, and a free tier suitable for prototyping and small-scale backtesting.

The API covers NFL, NBA, MLB, NHL, soccer (multiple leagues), tennis, MMA, and more. Each request fetches odds for a specific sport key and region (US, UK, EU, AU). Odds are returned as American or decimal formats. The API does not provide results, statistics, or lineups — only betting odds.

Key Features

  • 80+ bookmakers aggregated in a single API
  • Sport keys: americanfootball_nfl, soccer_epl, basketball_nba, etc.
  • Regions: us, uk, eu, au — controls which bookmakers appear
  • Market types: h2h (moneyline), spreads, totals, futures, player_props
  • Odds formats: American (−110, +240) or decimal (1.91, 3.40)
  • Free tier: 500 credits/month, 500 requests/hour — no credit card required

Data Available

Data Available Notes
Pre-game odds Moneyline, spread, totals, props, futures
Live odds Refresh intervals vary by bookmaker
Historical odds Paid plans; opening and closing odds
Match results Not provided
Statistics Not provided

Python Integration

import requests

API_KEY = "your-api-key"
SPORT = "soccer_epl"
REGION = "uk"
MARKET = "h2h"

url = f"https://api.the-odds-api.com/v4/sports/{SPORT}/odds"
params = {
    "apiKey": API_KEY,
    "regions": REGION,
    "markets": MARKET,
    "oddsFormat": "decimal",
}

response = requests.get(url, params=params)
data = response.json()

for event in data:
    print(f"{event['home_team']} vs {event['away_team']}")
    for bookmaker in event["bookmakers"]:
        for market in bookmaker["markets"]:
            for outcome in market["outcomes"]:
                print(f"  {bookmaker['title']}: {outcome['name']} @ {outcome['price']}")

Notes

  • The Odds API is an aggregator, not a bookmaker — it does not accept bets
  • Soccer coverage is strongest for major leagues; thinner for lower divisions
  • For model backtesting, the key value is accessing historical odds (paid feature) to compute CLV
  • No match statistics or xG data — pair with API-Football or Football-Data.co.uk for match-level data
  • Sharp bookmakers (Pinnacle, BetCRIS) are included, useful for market efficiency analysis