Sports Betting Odds Scraper — Live Lines by Bookmaker
Pricing
from $1.00 / 1,000 odds line extracteds
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Ü
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 hours ago
Last modified
Categories
Share
Sports Betting Odds Scraper — Live Lines by Bookmaker 🎲
🎉 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
- ⚡
upcomingcross-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
- 🔀
upcomingSweep: 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
| Field | Type | Required | Description |
|---|---|---|---|
| operation | string | Yes | odds, scores, or sports |
| sport | string | No | Sport key (e.g. americanfootball_nfl) or upcoming for all in-season sports. Used by Live Odds & Scores |
| regions | array | No | Bookmaker regions for Live Odds: us, us2, uk, eu, au (default us) |
| markets | array | No | Markets for Live Odds: h2h, spreads, totals, outrights (default h2h) |
| oddsFormat | string | No | american or decimal (default american) |
| daysFrom | integer | No | Scores: 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:
| Field | Type | Description |
|---|---|---|
| eventId | string | Stable event ID (join scores to odds on this) |
| sportTitle | string | League name (NFL, NBA…) |
| commenceTime | string | Scheduled start time (UTC, ISO-8601) |
| homeTeam / awayTeam | string | The two teams |
| bookmaker | string | Bookmaker name (FanDuel, DraftKings…) |
| market | string | Moneyline, Spread or Total |
| outcomeName | string | The priced side — a team, Over or Under |
| price | string | The offered price (American or decimal) |
| point | string | Spread handicap or total line (empty for moneyline) |
| lastUpdate | string | When 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 ApifyClientclient = 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)
- Trigger: Schedule (e.g. every 5 minutes pre-game)
- HTTP Request: Call the actor API
- Process: Handle the JSON odds rows
- 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
PAID Tier (Production Ready)
- 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.
❓ 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
pointfield is only populated forspreadsandtotals, 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.
⚖️ Is it legal to scrape data?
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
Join our active support community
- For issues or questions, open an issue in the actor's Console Issues tab
- Check the SIÁN Agency Store for more automation tools
- 📧 apify@sian-agency.online
Built by SIÁN Agency | More Tools