Sports Scores & Odds Scraper — NBA, NFL, MLB, NHL, Soccer +15
Pricing
from $2.00 / 1,000 game scrapeds
Sports Scores & Odds Scraper — NBA, NFL, MLB, NHL, Soccer +15
Scrape live scores, fixtures, historical results and betting odds across 19 leagues in one dataset: teams, scores, records, venue, status, moneyline, spread and over/under.
Pricing
from $2.00 / 1,000 game scrapeds
Rating
0.0
(0)
Developer
Pixflor
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
Live scores, upcoming fixtures, historical results and betting odds — 19 leagues, one schema, one run.
No API key. No login. Pick your leagues, set a date range, export CSV or JSON.
Leagues covered
Basketball NBA · WNBA · NCAA Men's Football NFL · NCAA Baseball MLB Hockey NHL Soccer Premier League · La Liga · Serie A · Bundesliga · Ligue 1 · Champions League · MLS Combat UFC Tennis ATP · WTA Motorsport Formula 1 Golf PGA
Mix them freely — a single run can pull NBA, Premier League and F1 into the same table, because every league returns identical columns.
What you get
| Column | Example |
|---|---|
date | 2026-03-15T23:00Z |
league / sport | nba · basketball |
awayTeam / awayScore / awayRecord | Minnesota Timberwolves · 103 · 41-27 |
homeTeam / homeScore / homeRecord | Oklahoma City Thunder · 116 · 53-15 |
homeWinner / awayWinner | true / false |
status / statusDetail / completed | STATUS_FINAL · Final · true |
venue / venueCity / attendance | Paycom Center · Oklahoma City |
oddsDetails / spread / overUnder | OKC -6.5 · -6.5 · 215.5 |
homeMoneyline / awayMoneyline | -280 / +230 |
broadcasts | ["ESPN"] |
Typical uses
- Historical datasets. Set a date range and pull a whole month of results in one run — a 5-day NBA range returns ~40 games.
- Model training and backtesting. Scores, records and closing odds in the same row.
- Live dashboards. Schedule it every few minutes with Live now selected.
- Sports content and newsletters. Yesterday's results, formatted, automatically.
- Odds monitoring. Filter to Only games with betting odds and track line movement.
Example input
Yesterday's finished games across the big four:
{"leagues": ["nba", "nfl", "mlb", "nhl"],"dateFrom": "2026-03-15","dateTo": "2026-03-15","statusFilter": "final"}
A month of Premier League history:
{"leagues": ["epl"],"dateFrom": "2026-03-01","dateTo": "2026-03-31","sortBy": "date","maxItems": 500}
One team, all season:
{ "leagues": ["nba"], "team": "Celtics", "dateFrom": "2026-01-01", "dateTo": "2026-04-01" }
Settings that matter
- Leave both dates empty to get the current scoreboard — today's games and what's next.
dateFrom+dateTopulls a historical range in a single run. This is the feature most single-day scrapers don't have.teammatches both full names and abbreviations, soBOSandCelticsboth work.withOddsOnlyis aggressive: odds exist for some leagues only, and usually only near game time. Expect it to filter heavily.maxItemsis your cost ceiling. Set it deliberately.
Pricing
Pay per event — you pay for games returned, not for runtime.
| Event | Price |
|---|---|
| Actor start | $0.002 per run |
| Game scraped | $0.002 each |
1,000 games ≈ $2.00.
Reliability
Plain HTTP against a public JSON API — no HTML parsing, no headless browser, no bot-detection workarounds. Website redesigns don't affect it.
Every request retries with exponential backoff, and one league failing degrades the run instead of ending it — you still get the others, and the log names the one that was missing.
Notes
- Data is provided as-is for research and analysis, with no warranty of accuracy or timeliness. It is not betting advice.
- Leagues have off-seasons. An empty result for a date range usually means there were no fixtures, not that something broke — the log tells you which leagues returned nothing.
- Odds coverage varies by league and is typically populated close to game time.
nullmeans "not published", not "no line exists". - Tennis, MMA and golf have no home/away concept; competitors are mapped positionally and scores may be absent for formats that don't use them.
Questions or a bug?
Open an issue on the Issues tab with your input JSON and the run ID — that's usually enough to reproduce it immediately.