Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
Sports Odds Scraper icon

Sports Odds Scraper

Moneylines, spreads, totals and player props from DraftKings and Pinnacle, plus Underdog and Sleeper player lines, one row per selection.

32 runs on Apify $0.00001 per odds row ($0.01 / 1,000)
Run this in the cloudRun on Apify →

Developer & Research Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust sports, leagues, sources (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.00001 per odds row = $0.01 per 1,000

You are charged forWhenPrice
Odds row returnedOne odds or player-prop row returned in the dataset.$0.00001

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-09-14, and they are what you are actually charged.

Inputs

FieldWhat it doesType
sportsEvery league of the sports you tick, on every source you keep. Leave it empty and fill in Leagues instead if you only want one or two. Soccer on Pinnacle alone is close to 300 leagues, so for soccer it's worth naming them.array
leaguesLeague names, for example NFL, MLB, WNBA, Premier League, La Liga or UFC. Short forms work too: EPL, NCAAF, NCAAB. The big leagues are matched by name across all four sources, so Premier League means England's, not Canada's or Malta's. Any other name is looked for inside each book's own league name, so WTA finds WTA - Guadalajara. Case doesn't matter.array
sourcesDraftKings and Pinnacle are sportsbooks: game lines and player props, priced in odds. Underdog and Sleeper are pick'em apps: player lines only. Underdog gives its own American and decimal price and a payout multiplier; Sleeper gives the multiplier alone.array
marketTypesGame lines are the full-game main lines. Player props are over/under lines on one player's stat. Futures, alternate lines, halves and quarters of game lines, and novelty props aren't included.array
playerNamesOnly props on these players. A last name is enough, and accents don't matter: Mbappe finds Kylian Mbappé. Game lines are left out when this is filled in, because they aren't about a player.array
startFromOnly games that start on or after this day (UTC), written like 2026-09-13. Leave it empty for everything on the board.string
startToOnly games that start on or before the end of this day (UTC). Sleeper gives a game's day but not its start time, so its rows are matched on the day.string
includeLiveOff, you get pre-game prices only. On, games that have started are included too, at whatever price the book showed at that second.boolean
maxRowsThe most rows one run returns, shared fairly between the sources you keep. Each row is one charge.integer

What you get

A structured dataset — each result includes fields like:

bookmakerleagueeventstartTimegameDaymarketplayerselectionlineoddsAmericanoddsDecimalpayoutMultiplierisLivescrapedAt

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Developer & Research Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

GitHub Scraper iconDeveloper & Research Tools

GitHub Scraper

Search GitHub repos and users: stars, forks, language, topics, licence, plus user bio, company and followers. No token needed. $0.90 per 1,000 rows.

18 use cases

Stack Overflow / Stack Exchange Scraper iconDeveloper & Research Tools

Stack Overflow / Stack Exchange Scraper

Search Stack Overflow and Stack Exchange by keyword or tag. Score, answer count, views, reputation and body text. $2 per 1,000 questions.

2 use cases

Package Registry Scraper (npm + PyPI) iconDeveloper & Research Tools

Package Registry Scraper (npm + PyPI)

Get npm and PyPI package metadata as JSON. Version, license, author, repo, keywords and npm monthly downloads. $2 per 1,000 packages.

2 use cases

arXiv Scraper iconDeveloper & Research Tools

arXiv Scraper

Search arXiv papers by title, author, abstract or category. Get full abstracts, authors, categories, DOI, dates and PDF links. $2 per 1,000 papers.

2 use cases

OpenAlex Scholarly Works Scraper iconDeveloper & Research Tools

OpenAlex Scholarly Works Scraper

Search 250M+ OpenAlex papers with no API key. Get titles, authors, venue, year, citations, DOI, OA links and full abstracts. $2.00 per 1,000 papers.

2 use cases

Crossref Scholarly Works Scraper iconDeveloper & Research Tools

Crossref Scholarly Works Scraper

Search 150M+ papers on Crossref: DOI, title, authors, journal, publisher, date, citations and abstract. No API key. $1.00 per 1,000 works.

2 use cases

See all Developer & Research Tools →

Sports Odds Scraper

Pick a sport or a league and get what's on the board right now. That means game lines and player props from two sportsbooks, DraftKings and Pinnacle, and player lines from two pick'em apps, Underdog and Sleeper. Every row is one selection: the game and when it starts, the market, the player if it's a prop, the line, and the price.

It reads the odds each book's own website or app shows its visitors. There's no API key to get and no account to log in to.

For scale: on 13 September 2026, the first Sunday of the NFL season, Underdog's board held 9,166 player lines and Pinnacle listed 780 NFL player props.

What it doesn't do

  • No PrizePicks. It isn't covered.
  • It doesn't place bets and never touches an account.
  • No futures, alternate lines, half or quarter game lines, or novelty props. Game lines are the full-game main line. Player props are the over/under on one player's stat.
  • Sleeper shows multipliers, not odds. Its rows carry the payout multiplier and leave the odds columns empty. Sleeper also gives the day of a game rather than its start time, and for soccer, CS2 and tennis it doesn't say which game a line belongs to.
  • Prices are the moment of the run. Lines move, sometimes by the second close to kick-off. Nothing here is historical.
  • DraftKings prices are its New Jersey site's. Other states can differ now and then.

Input

Sports. Tick the ones you want and you get every league of those sports, on every source you keep.

Leagues. League names: NFL, MLB, WNBA, Premier League, La Liga, UFC. Short forms work as well (EPL, NCAAF, NCAAB). The big leagues are matched by name across all four sources, so Premier League means England's, not Canada's or Malta's. Those are NFL, College Football, MLB, NBA, WNBA, College Basketball, NHL, Premier League, La Liga, Serie A, Bundesliga, Ligue 1, MLS, Champions League and UFC. Any other name is looked for inside each book's own league name, so WTA finds WTA - Guadalajara and Brazil - Serie A finds Brazil's. Case doesn't matter, and you can fill in Leagues without ticking a sport.

Bookmakers and apps. All four unless you untick some. Underdog and Sleeper only list player props, so they sit out a run that asks for game lines only.

Markets. Moneyline, spread, total and player props. Run lines and puck lines count as spreads.

Players. Only props on these players. A last name is enough, and accents don't matter: Mbappe finds Kylian Mbappé. Game lines drop out when this is filled in, since they aren't about a player.

Starting from, Starting up to. Days in UTC, written like 2026-09-13. Sleeper rows are matched on their game day.

Include games already under way. Off by default, so you get pre-game prices only.

Maximum rows. 1,000 unless you change it, and up to 30,000 per run. The limit is shared between the sources you keep, so a small one still gives each source a turn, and whatever one source doesn't use goes to the next.

{
  "leagues": ["NFL"],
  "marketTypes": ["player-prop"],
  "playerNames": ["Josh Allen", "Jalen Hurts"],
  "maxRows": 500
}

Output

One row per selection.

FieldExampleNotes
bookmakerDraftKingsDraftKings, Pinnacle, Underdog or Sleeper
sportfootballAmerican football is football, association football is soccer
leagueNFLthe big leagues get one name across all four sources, so Premier League reads the same everywhere
eventNO Saints @ DET Lionsaway team first, in the book's own spelling
homeTeam, awayTeamDET Lions, NO Saints
startTime2026-09-13T17:00:00.000ZUTC. Empty on Sleeper rows
gameDay2026-09-13Sleeper rows only
isLivefalsetrue only when you include games already under way
marketTypeplayer-propmoneyline, spread, total or player-prop
marketPassing Yards
selectionOvera team, Over, Under or Draw. Underdog's Higher and Lower come through as Over and Under
playerJared Goffprops only
playerTeamDET Lionswhen the book says
line259.5the spread, total or prop number. Empty for a moneyline
oddsAmerican-113
oddsDecimal1.885DraftKings' exact price to three places; worked out from the American odds for Pinnacle
payoutMultiplier1.6Underdog and Sleeper
eventId, marketId, selectionIdthe book's own ids, handy for matching one run against the next
sourceUpdatedAt2026-09-13T12:23:35.000Zwhen the book last changed the line, where it says (Underdog, Sleeper)
scrapedAt2026-09-13T14:25:04.238Zwhen this run read it

The run also leaves a report, RUN_REPORT, in its key-value store: what each source returned, which leagues it read, what was left out and why, and why the run stopped.

What you pay

Each row in your dataset is one charge. Nothing else is charged: not a source that doesn't answer, not rows your filters leave out, not games already under way while that box is off, and not a selection a book happens to list twice. If you set a maximum charge for the run, it stops when that's reached, and every row you get has been paid for. The price is on the Pricing tab.

Limits

  • 30,000 rows per run.
  • Pinnacle lists close to 300 soccer leagues. Asking for all of soccer reads every one of them, which takes a few minutes, so name the leagues if you only want some.
  • DraftKings player props are read one market at a time, about 30 for an NFL week, so props take longer than game lines.
  • Underdog's board arrives as one download of about 25 MB, whatever you filter.

Where the data comes from

Each book's own public odds, the same numbers its site or app shows. Treat them as information rather than advice, and check the price in the book before you bet, because odds can change between the run and your click. Whether you can bet at all depends on where you live.

Questions

Why are the odds columns empty on Sleeper rows? Sleeper pays by multiplier: a pick at 1.6x pays 1.6 times its share of the entry. It doesn't publish odds, so the actor doesn't invent any.

A price doesn't match what I see in the app. Check scrapedAt first. Lines move, and a few minutes is plenty. DraftKings can also differ a little from state to state.

Can I watch lines move? Schedule the actor every few minutes and compare rows on selectionId from one run to the next. Each run is a fresh read of the board.