Sports Betting Odds Scraper — Live Lines by Bookmaker avatar

Sports Betting Odds Scraper — Live Lines by Bookmaker

Pricing

from $1.00 / 1,000 odds line extracteds

Go to Apify Store
Sports Betting Odds Scraper — Live Lines by Bookmaker

Sports Betting Odds Scraper — Live Lines by Bookmaker

Pull live sports betting odds from 8+ bookmakers in one run — moneyline, spreads and totals for NFL, NBA, MLB, NHL, soccer and more. One row per bookmaker line, plus live scores and a sports directory. American or decimal odds, US/UK/EU/AU regions. Export JSON, CSV or Excel.

Pricing

from $1.00 / 1,000 odds line extracteds

Rating

0.0

(0)

Developer

SIÁN OÜ

SIÁN OÜ

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Share

Sports Betting Odds Scraper — Live Lines by Bookmaker 🎲

SIÁN Agency Store Jobs Search API Taobao Tmall Product Scraper Xiaohongshu RedNote Scraper

🎉 The whole board in one run — 8+ bookmakers, every market, every in-season sport

Built for line shoppers, arbitrage hunters, model builders, and anyone feeding odds into apps or spreadsheets


📋 Overview

Stop scraping one sportsbook at a time. The Sports Betting Odds Scraper pulls live betting odds from 8+ bookmakers in a single run — moneyline, spreads and totals for NFL, NBA, MLB, NHL, soccer and dozens more leagues — and hands you one clean row per bookmaker line.

Why data teams and bettors choose us:

  • 8+ bookmakers in one feed: FanDuel, DraftKings, BetMGM, Caesars, Bovada, BetRivers, BetUS and BetOnline.ag side by side — not a single-book scraper
  • upcoming cross-sport sweep: one run returns the next games across every in-season sport — no need to loop sport by sport
  • 🎯 Every market, with the line: moneyline (h2h), point spreads and totals (over/under) — each row carries the exact handicap or total
  • 💰 Pay only for the lines you pull: transparent per-line pricing, a generous free tier, and no monthly subscription lock-in
  • 💎 American or decimal, US/UK/EU/AU: switch odds format and bookmaker region to match your market
  • Three tools in one: live odds, live scores, and a sports directory — all in a single actor

✨ Features

  • 🎲 Multi-Bookmaker Odds: every bookmaker's price for the same game, one flat row each — perfect for line shopping
  • 🏈 All Major Sports: NFL, NBA, MLB, NHL, NCAA, soccer (EPL, La Liga, MLS…), MMA, tennis and more
  • 🔀 upcoming Sweep: pull the next games across all in-season sports in a single call
  • 📊 Three Markets: moneyline, spreads and totals — each with the point/handicap line attached
  • 🔢 Odds Format Toggle: American (-110, +250) or decimal (1.91, 3.50)
  • 🌍 Region Toggle: US, US (extra), UK, EU and Australian bookmakers
  • 🏁 Live & Recent Scores: final and in-play scores for any sport
  • 📚 Sports Directory: discover the exact sport key for any league before you pull
  • 📤 Export Anywhere: JSON, CSV or Excel straight from the dataset

🎬 Quick Start

Pick an operation, pick a sport (or upcoming), and run. Each run produces one clean dataset you can export to JSON, CSV or Excel. Start with the Sports Directory operation to find sport keys, then pull Live Odds.

curl -X POST "https://api.apify.com/v2/acts/sian.agency~sports-betting-odds-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"operation": "odds", "sport": "upcoming", "regions": ["us"], "markets": ["h2h","spreads","totals"], "oddsFormat": "american"}'

🚀 Getting Started (3 Simple Steps)

Step 1: Choose your operation

Select Live Odds, Scores, or Sports Directory.

Step 2: Set the sport and markets

Enter a sport key (or upcoming to sweep all in-season sports) and pick your regions, markets and odds format.

Step 3: Run and export

Start the run and export the dataset to JSON, CSV or Excel.

That's it! In under a minute, you'll have:

  • Live lines from 8+ bookmakers, one row each
  • The exact spread/total line on every row
  • A clean, joinable dataset keyed by event ID

📥 Input Configuration

FieldTypeRequiredDescription
operationstringYesodds, scores, or sports
sportstringNoSport key (e.g. americanfootball_nfl) or upcoming for all in-season sports. Used by Live Odds & Scores
regionsarrayNoBookmaker regions for Live Odds: us, us2, uk, eu, au (default us)
marketsarrayNoMarkets for Live Odds: h2h, spreads, totals, outrights (default h2h)
oddsFormatstringNoamerican or decimal (default american)
daysFromintegerNoScores: days of completed games to include, 1–3 (default 1)

Example — Live Odds (all markets, US books):

{
"operation": "odds",
"sport": "americanfootball_nfl",
"regions": ["us"],
"markets": ["h2h", "spreads", "totals"],
"oddsFormat": "american"
}

Example — Sports Directory:

{ "operation": "sports" }

Example — Scores:

{ "operation": "scores", "sport": "americanfootball_nfl", "daysFrom": 2 }

📤 Output

Results are saved to the Apify dataset as flat rows. Live Odds emits one row per event × bookmaker × market × outcome:

FieldTypeDescription
eventIdstringStable event ID (join scores to odds on this)
sportTitlestringLeague name (NFL, NBA…)
commenceTimestringScheduled start time (UTC, ISO-8601)
homeTeam / awayTeamstringThe two teams
bookmakerstringBookmaker name (FanDuel, DraftKings…)
marketstringMoneyline, Spread or Total
outcomeNamestringThe priced side — a team, Over or Under
pricestringThe offered price (American or decimal)
pointstringSpread handicap or total line (empty for moneyline)
lastUpdatestringWhen the bookmaker last moved this market

Example row:

{
"_operation": "odds",
"eventId": "4bb2c510f37ac3221423f6fe96d81822",
"sportKey": "americanfootball_nfl",
"sportTitle": "NFL",
"commenceTime": "2026-09-10T00:15:00Z",
"homeTeam": "Seattle Seahawks",
"awayTeam": "New England Patriots",
"bookmaker": "FanDuel",
"market": "Spread",
"outcomeName": "Seattle Seahawks",
"price": "-110",
"point": "-7.5",
"lastUpdate": "2026-06-21T03:11:04Z",
"status": "success"
}

Scores rows carry homeScore/awayScore/completed; Sports Directory rows carry sportKey/sportGroup/active/hasOutrights.


💼 Use Cases & Examples

1. Odds Comparison & Line Shopping

Bettors and tipsters who want the best number on every game.

Input: operation: odds, sport: upcoming, all markets Output: every bookmaker's price for each line, one row each Use: sort by price to find the sportsbook offering the best value on any side.

2. Arbitrage & Middling Research

Quants hunting for risk-free or low-risk edges.

Input: multiple regions (us, uk, eu) across all markets Output: the full board where books disagree on a line Use: detect arbitrage and middling opportunities across bookmakers.

3. Model & Prediction Backtesting

Data scientists building betting models.

Input: scheduled runs capturing lines over time with timestamps Output: a time series of odds movement keyed by event ID Use: backtest strategies and study closing-line value.

4. Live Scores Tracking

App and dashboard builders.

Input: operation: scores, any sport Output: final and in-play scores Use: settle results, power live dashboards, or join scores to your odds dataset.

5. Sports Data Feeds for Apps

Developers wiring odds into products with no code.

Input: Sports Directory to discover keys, then scheduled odds runs Output: clean structured feeds Use: push odds and scores into apps, spreadsheets and BI tools as a no-code pipeline.


🔗 Integration Examples

JavaScript/Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('sian.agency/sports-betting-odds-scraper').call({
operation: 'odds',
sport: 'upcoming',
regions: ['us'],
markets: ['h2h', 'spreads', 'totals'],
oddsFormat: 'american'
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('sian.agency/sports-betting-odds-scraper').call(
run_input={
'operation': 'odds',
'sport': 'americanfootball_nfl',
'regions': ['us'],
'markets': ['h2h', 'spreads', 'totals'],
'oddsFormat': 'american'
}
)
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item)

cURL

curl -X POST 'https://api.apify.com/v2/acts/sian.agency~sports-betting-odds-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation": "odds", "sport": "upcoming", "markets": ["h2h"]}'

Automation Workflows (N8N / Zapier / Make)

  1. Trigger: Schedule (e.g. every 5 minutes pre-game)
  2. HTTP Request: Call the actor API
  3. Process: Handle the JSON odds rows
  4. Action: Save to a database, alert on line moves, or update a sheet

📊 Performance & Pricing

FREE Tier (Try It Now)

  • 50 rows per run — full feature access, same data quality
  • No credit card required
  • Perfect for testing a sport, market or region
  • Unlimited rows per run
  • The whole board across every book and market
  • Pay-per-line: only charged for lines actually returned

💰 Priced at the market rate for a multi-bookmaker feed — wider coverage than single-book scrapers at the same per-line cost.

🔗 View current pricing


❓ Frequently Asked Questions

Q: Which bookmakers are covered? A: 8+ US books including FanDuel, DraftKings, BetMGM, Caesars, Bovada, BetRivers, BetUS and BetOnline.ag, plus UK/EU/AU books via the region toggle.

Q: How do I get every sport at once? A: Set sport to upcoming — one run returns the next games across all in-season sports.

Q: Why did a single sport return no rows? A: That league is likely out of season. Use upcoming to sweep whatever is currently in season.

Q: American or decimal odds? A: Both — set oddsFormat to american or decimal.

Q: What output formats are available? A: JSON, CSV and Excel — export directly from the Apify dataset.

Q: Can I join scores to odds? A: Yes — both share the same eventId.

Q: How often do odds update? A: Lines reflect the latest published prices; each row carries a lastUpdate timestamp. Schedule runs to capture movement.


🐛 Troubleshooting

No rows returned

  • The sport may be out of season — try sport: upcoming
  • Double-check the sport key via the Sports Directory operation

Fewer rows than expected

  • On the FREE tier output is capped at 50 rows — upgrade for the full board
  • Add more markets (spreads, totals) or regions to widen coverage

Missing the spread/total line

  • The point field is only populated for spreads and totals, never for moneyline (h2h)

⚠️ Responsible Use

This tool returns sports betting odds for data, research and informational purposes only. It is not betting advice and does not facilitate the placement of bets. Sports betting may be restricted or illegal in your jurisdiction — you are responsible for complying with all applicable laws. You must be of legal gambling age (18+, or 21+ where required). If you or someone you know has a gambling problem, help is available: call 1-800-GAMBLER (US) or contact your local support service.


Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what has been chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the legality of web scraping.


🤝 Support

Telegram Support

Join our active support community


Built by SIÁN Agency | More Tools