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