Sports Odds & Line Movement avatar

Sports Odds & Line Movement

Pricing

$4.00 / 1,000 odds rows

Go to Apify Store
Sports Odds & Line Movement

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

Closing Line

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

5 days ago

Last modified

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 actorTypical alternatives
Opening lines + movement flag✅ every market❌ closing price only
Sports in one schema6 leagues, identical fieldsoften one sport per actor
Moneyline, spread and total✅ all threeusually all three
American and decimal oddsusually American only
Out-of-season leaguefree explanatory rowsilent empty result
Billingper row deliveredsome bill per run attempted
Spend capmaxRowsrare
API key required❌ nonevaries

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

FieldDefaultNotes
leaguesall sixmlb, nfl, ncaaf, nba, wnba, ncaab, nhl
daysAhead3Days forward to scan, on top of the current slate. Max 14.
oddsFormatamericanor decimal (-1631.6135)
includeStartedEventsfalseKeeps in-progress games; prices are pregame closes
maxRows0Hard 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.

CodeMeaning
NO_ODDS_AVAILABLENothing posted for the requested leagues and window
LEAGUE_NOT_SUPPORTEDUnrecognised league key; supported list included in the row
UPSTREAM_UNAVAILABLEESPN 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.