Sports Odds & Line Movement
Pricing
$4.00 / 1,000 odds rows
Sports Odds & Line Movement
Pregame moneyline, spread and total across MLB, NFL, NCAAF, NBA, WNBA and NHL in one normalized schema — with opening lines, so you can see how the market moved.
Pricing
$4.00 / 1,000 odds rows
Rating
0.0
(0)
Developer
Closing Line
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
Pregame moneyline, spread and total for MLB, NFL, NCAA Football, NBA, WNBA and NHL — one normalized schema across every sport, with opening lines included so you can see how the market moved.
No API key. No proxy. No browser. One row per game.
Why this one
Most odds scrapers give you the current price. This one gives you the current price and
the opening price, on every market, with a lineMoved flag. Line movement is the part
that tells you something; a closing number on its own does not.
| This actor | Typical alternatives | |
|---|---|---|
| Opening lines + movement flag | ✅ every market | ❌ closing price only |
| Sports in one schema | 6 leagues, identical fields | often one sport per actor |
| Moneyline, spread and total | ✅ all three | usually all three |
| American and decimal odds | ✅ | usually American only |
| Out-of-season league | free explanatory row | silent empty result |
| Billing | per row delivered | some bill per run attempted |
| Spend cap | ✅ maxRows | rare |
| API key required | ❌ none | varies |
Output
One row per game:
{"league": "MLB","eventName": "Baltimore Orioles at Tampa Bay Rays","startTime": "2026-08-17T22:05Z","book": "DraftKings","homeTeam": "Tampa Bay Rays", "awayTeam": "Baltimore Orioles","moneylineHome": "-163", "moneylineAway": "+135","spread": -1.5,"spreadHomeLine": "-1.5", "spreadHomeOdds": "+135","overUnder": 8.0,"overOdds": "-102", "underOdds": "-118","openMoneylineHome": "-162", "openMoneylineAway": "+134","openOverOdds": "+100", "openUnderOdds": "-120","lineMoved": true,"oddsFormat": "american","scrapedAt": "2026-08-17T02:38:47+00:00"}
Input
| Field | Default | Notes |
|---|---|---|
leagues | all six | mlb, nfl, ncaaf, nba, wnba, ncaab, nhl |
daysAhead | 3 | Days forward to scan, on top of the current slate. Max 14. |
oddsFormat | american | or decimal (-163 → 1.6135) |
includeStartedEvents | false | Keeps in-progress games; prices are pregame closes |
maxRows | 0 | Hard cap on billable rows. 0 = uncapped |
Pricing
Pay per odds row delivered. Error and explanatory rows are free. If a run returns nothing, you are charged nothing — billing is never per attempted run.
maxRows caps spend on a large slate: a full NCAA Football Saturday is ~100 games.
Frequently asked questions
Where do the odds come from? ESPN's public scoreboard feed, which carries one sportsbook's pregame lines per game — currently DraftKings. Keyless, no proxy, no browser.
Why not read the sportsbooks directly? They block automated access to their own endpoints. Public feeds are reachable and stable; scraping books is neither.
How far ahead are lines available?
Books post roughly 24 hours out for daily sports. Weekly sports (NFL, NCAAF) are posted
for the whole upcoming slate, often two weeks ahead — the actor picks these up
automatically via the current slate, regardless of daysAhead.
I ran it and got no rows.
Most likely nothing is posted yet, or the leagues you picked are out of season. You get
a free NO_ODDS_AVAILABLE row explaining which, rather than an empty result you have to
guess at. You are not charged.
Do you have live/in-play odds or player props? No. Pregame moneyline, spread and total only.
Multiple books per game? Not yet — currently one book per event, whichever ESPN carries.
Why do some games have no opening line?
ESPN does not always publish an open for every market. Those fields come back null and
lineMoved reflects only the markets it could compare.
Error codes
Every failure is a dataset row you can filter on, never a crashed run. A bad league or a brief upstream outage never takes down the rest of the batch.
| Code | Meaning |
|---|---|
NO_ODDS_AVAILABLE | Nothing posted for the requested leagues and window |
LEAGUE_NOT_SUPPORTED | Unrecognised league key; supported list included in the row |
UPSTREAM_UNAVAILABLE | ESPN unreachable or returned an error for one league/date |
Notes on the data
Odds are published by sportsbooks and surfaced through a public feed; they are facts about prices, not personal data. This actor collects no personal information.
Prices change constantly — a row is a snapshot at scrapedAt, not a quote. Nothing here
is betting advice.