Skip to main content

A web scraper that collects historical MLB, EPL, and MLS betting odds from SportsBookReview

Project description

SBR Odds Scraper

A web scraper that collects historical MLB, EPL, and MLS betting odds from SportsBookReview.

Based on Arnav Saraogi's mlb-odds-scraper.

Installation

pip install sbr-odds-scraper

Python API

import sbr_odds_scraper as sbr

# Single day - returns pandas DataFrame
df = sbr.scrape("2024-10-01")

# Date range
df = sbr.scrape("2024-10-01", "2024-10-05")

# Specific odds types (moneyline, pointspread, totals)
df = sbr.scrape("2024-10-01", odds_types=["moneyline"])

# Specific sportsbooks
df = sbr.scrape("2024-10-01", sportsbooks=["fanduel", "draftkings"])

# EPL soccer odds (default soccer league)
df = sbr.scrape("2024-10-05", sport="soccer")

# MLS soccer odds
df = sbr.scrape("2024-10-02", league="mls")

# Combine filters
df = sbr.scrape("2024-10-01", odds_types=["moneyline"], sportsbooks=["fanduel"])

# Faster scraping (may trigger rate limits)
df = sbr.scrape("2024-10-01", fast=True)

# Raw dict instead of DataFrame
data = sbr.scrape_raw("2024-10-01")

DataFrame Columns

Column Description
game_id MLB gamePk, EPL fixture ID, or MLS match_id
date Game date
start_time Game start time (ISO format)
away_team, home_team Team full names
away_score, home_score Final scores
venue Stadium name
game_type R=Regular, F=Wild Card, D=Division, L=League, W=World Series
sportsbook Sportsbook name (fanduel, draftkings, betmgm, etc.)
odds_type moneyline, pointspread, or totals
opening_*, current_* Opening and current line values; soccer moneyline includes *_draw_odds

CLI Usage

sbr-odds-scraper 2024-10-01 2024-10-05 -t moneyline pointspread -o odds.json
sbr-odds-scraper 2024-10-05 2024-10-05 --sport soccer -t moneyline
sbr-odds-scraper 2024-10-02 2024-10-02 --league mls -t moneyline
Flag Description
-t, --types Odds types: moneyline, pointspread, totals (default: moneyline)
-s, --sport Sport: mlb, soccer, epl, or mls (default: mlb; soccer defaults to EPL)
-l, --league Soccer league: epl or mls
-c, --concurrent Concurrent requests (default: 5)
-f, --fast Faster scraping (reduced delays)
-o, --output Output filename (default: mlb_odds.json)

JSON Structure

The raw data is organized by date. Each date contains a list of games with sportsbook odds:

{
  "2021-04-01": [
    {
      "gameView": {
        "startDate": "2021-04-01T17:05:00+00:00",
        "awayTeam": {
          "fullName": "Toronto Blue Jays",
          "shortName": "TOR"
        },
        "awayTeamScore": 3,
        "homeTeam": {
          "fullName": "New York Yankees",
          "shortName": "NYY"
        },
        "homeTeamScore": 2,
        "gameStatusText": "Final (10)",
        "venueName": "Yankee Stadium",
        "gameType": "R"
      },
      "odds": {
        "moneyline": [
          {
            "sportsbook": "fanduel",
            "openingLine": { "homeOdds": -188, "awayOdds": 155 },
            "currentLine": { "homeOdds": -200, "awayOdds": 168 }
          },
          {
            "sportsbook": "draftkings",
            "openingLine": { "homeOdds": -175, "awayOdds": 148 },
            "currentLine": { "homeOdds": -195, "awayOdds": 165 }
          }
        ],
        "pointspread": [
          {
            "sportsbook": "fanduel",
            "openingLine": { "homeOdds": 122, "awayOdds": -144, "homeSpread": -1.5, "awaySpread": 1.5 },
            "currentLine": { "homeOdds": 100, "awayOdds": -120, "homeSpread": -1.5, "awaySpread": 1.5 }
          }
        ],
        "totals": [
          {
            "sportsbook": "fanduel",
            "openingLine": { "overOdds": -106, "underOdds": -114, "total": 8 },
            "currentLine": { "overOdds": -122, "underOdds": 100, "total": 7.5 }
          }
        ]
      }
    }
  ]
}

Notes

  • Historical data available from ~2019-05-03 onwards
  • Use fast=True / -f sparingly to avoid rate limiting
  • Game types: R=Regular, S=Spring, E=Exhibition, A=All-Star, D=Division, F=Wild Card, L=League Championship, W=World Series

Credits

Original scraper by Arnav Saraogi.

Disclaimer

For educational purposes only. Review SportsBookReview's Terms of Service before use.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sbr_odds_scraper-0.1.9.tar.gz (15.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sbr_odds_scraper-0.1.9-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

Details for the file sbr_odds_scraper-0.1.9.tar.gz.

File metadata

  • Download URL: sbr_odds_scraper-0.1.9.tar.gz
  • Upload date:
  • Size: 15.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.9

File hashes

Hashes for sbr_odds_scraper-0.1.9.tar.gz
Algorithm Hash digest
SHA256 49de233af0245dab27071a3ed5c0a167b8a24a76d5e02a595d5a0a0c1eb0f93a
MD5 c21bddc73b0548e696b49e93b2ffde05
BLAKE2b-256 f619fa3b32f48ee8b0a59ab65bd037a79c5016d9f8b7aeb88318d61bfbe09b00

See more details on using hashes here.

File details

Details for the file sbr_odds_scraper-0.1.9-py3-none-any.whl.

File metadata

File hashes

Hashes for sbr_odds_scraper-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 9e16dc369ee3ff19c2dc6621b25a89cfb1af4d3e09eb3efe4cb385c29394865f
MD5 8e656703af9bbe510a633376f719dc12
BLAKE2b-256 53e580192b35d87127a70ffbe6f44f9bf781a4936bbdbf735d52d3dde19b7e63

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page