OddsJam

Overview

OddsJam is a sports betting data platform built specifically for serious sports bettors and model builders. Unlike broad sports media APIs, OddsJam is focused on odds comparison, market efficiency analysis, and value bet identification. Its flagship feature is the most complete historical odds dataset available for backtesting — including opening lines, closing lines, and full line movement history for major US sports and soccer.

The platform offers real-time odds from 30+ sportsbooks, tools for identifying +EV bets, sharp book comparisons, and a backtesting engine. Pricing starts around $199/month for the professional plan.

Key Features

  • Historical odds feed: Opening, closing, and full line movement history dating back years
  • Line movement tracking: Tracks how odds shift from opening to close across all bookmakers
  • Sharp book comparison: Automatically compares odds at sharp bookmakers (Pinnacle) against soft books
  • +EV detection: Built-in tools that compare model probabilities to current odds and flag positive EV opportunities
  • Backtesting engine: Web-based backtesting with P&L tracking, CLV analysis, and ROI metrics

Data Available

Data Available Notes
Pre-game odds 30+ bookmakers, real-time
Historical odds Opening, closing, full movement history
Live odds In-play for major sports
Line movement Full history of odds changes
Match results Not provided
Statistics Basic team stats for context

Python Integration

import requests

API_KEY = "your-oddsjam-api-key"
BASE_URL = "https://api.oddsjam.com/v2"
headers = {"Authorization": f"Bearer {API_KEY}"}

url = f"{BASE_URL}/odds"
params = {
    "sport": "soccer_epl",
    "bookmakers": "pinnacle,draftkings,fanduel",
    "market": "h2h",
    "game_date": "2024-09-08",
}
response = requests.get(url, params=params, headers=headers)
data = response.json()

for game in data["games"]:
    pinnacle = [b for b in game["books"] if b["name"] == "pinnacle"][0]
    soft_avg = sum(b["title"] for b in game["books"] if b["name"] != "pinnacle")
    clv = (pinnacle['closing_odds'] - soft_avg) / soft_avg
    print(f"CLV vs market: {clv:.2%}")

Notes

  • OddsJam is US-market focused; NFL, NBA, MLB, NHL, college sports are the core coverage
  • Soccer coverage exists but is thinner than dedicated soccer APIs
  • The backtesting engine is browser-based — for programmatic backtesting, use the API directly
  • Historical odds data is the key differentiator for CLV validation
  • $199/mo is significant — justify via backtesting results before committing