VegasInsider Scraper - NFL, NBA & MLB Odds, Betting Splits avatar

VegasInsider Scraper - NFL, NBA & MLB Odds, Betting Splits

Pricing

Pay per event

Go to Apify Store
VegasInsider Scraper - NFL, NBA & MLB Odds, Betting Splits

VegasInsider Scraper - NFL, NBA & MLB Odds, Betting Splits

Scrape VegasInsider odds for NFL, NBA, MLB, NHL, WNBA and college. Spreads, totals and moneylines from 9 sportsbooks, with opening lines, line movement, ticket and handle splits, futures, player props and scores.

Pricing

Pay per event

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

Share

ParseForge

VegasInsider Scraper - NFL, NBA, MLB Odds & Betting Splits

Scrape VegasInsider odds for seven leagues, from eight sportsbooks at once. Every game comes back with each book's spread, total and moneyline, the number it opened at, the best price on the board, how far the line has moved — and, as an option, the share of tickets and the share of money on each side. No login, no API key, no proxy. Export to CSV, JSON, Excel, or XML.

Odds APIs charge a monthly subscription and quote one blended price per game. This reads the same public VegasInsider pages your browser does, keeps every book's number separate so you can shop the line, and adds the two things a raw odds feed never has: betting splits and a timestamped line-movement series.

Who uses itWhat they scrape VegasInsider for
Bettors and handicappersLine shopping across eight books, and fading a public that is 90% on one side
Quant and model buildersOpeners, closers and move-by-move history to backtest against
Odds and media sitesA normalised spread / total / moneyline feed for seven leagues
Affiliate and content teamsLive numbers for comparison pages, futures boards and award odds
Fantasy and DFS playersSeason-long player props, including the PrizePicks, Sleeper and Underdog lines
Data scientistsLabelled market data: no-vig probabilities, hold, movement, and public splits

What it does

This Actor collects the VegasInsider board for a league and a date or week, and returns each game as one flat row. Every row carries:

  • 🧾 The game: teams, full names, abbreviations, rotation numbers, kickoff in UTC, status, conference and division, team logos, and — for MLB — both announced starting pitchers with their throwing hand.
  • 📊 Every book's number: bet365, BetMGM, DraftKings, Caesars, FanDuel, Hard Rock, Fanatics and BetRivers, each on the spread, the total and the moneyline, plus the site's own opening and consensus columns.
  • 🛒 Line shopping, solved: the best number and best price on every side, with the book that has it named.
  • 📈 Movement: how far the spread, total and moneyline travelled from the opener, and which way.
  • 🧮 Market maths already done: implied probability, decimal odds, book hold, and no-vig fair probability on each side.
  • 🚩 Broken quotes flagged: a book whose two prices cannot both be real is named in suspectBooks and barred from winning a best-price comparison — see Broken quotes.
  • 🏁 Status on finished games, with every book's closing number kept. Final scores live on the scoreboard board — tick includeScoreboard for those.

Turn on the optional blocks and each row also carries betting splits (tickets and handle on every market), the timestamped line-movement series, and head-to-head history with the closing line and the graded ATS and over/under result of every past meeting.

Four more boards are a checkbox each: futures, season-long player props, handicapper consensus picks, scores with the inning-by-inning line score, and headlines.

Results export to CSV, JSON, Excel, or XML, or stream from the API.

What you can do with VegasInsider data

🛒 Shop every line before you bet.

One row already names the book with the best price on each side and the best number on each spread and total, so the comparison is a column, not a workflow.

👥 See where the money is, not just the tickets.

VegasInsider publishes two split tables, not one: the share of bets and the share of handle. The row carries both, plus the gap between them — the classic tell that a small number of large bets is on the unpopular side.

🔄 Find reverse line moves in one checkbox.

Set reverseLineMoveOnly and you get only the games where the number moved against the side holding most of the tickets. It reads the moneyline in baseball and hockey and the spread everywhere else, because a run line pegged at ±1.5 never moves.

🚂 Replay a steam move minute by minute.

The line-movement block is not an opener-and-closer pair: it is every price the board has held, each with a timestamp, going back to the day the game was hung.

🏆 Pull an entire futures market.

Super Bowl, MVP, Heisman, Cy Young, conference, division and win-total boards — every selection with every book's price, the best of them, and the implied probability already computed.

🎯 Compare a prop across sportsbooks and DFS apps.

Season-long player props return the same row for bet365 and DraftKings as for PrizePicks, Sleeper and Underdog, so a pick-em line sits beside a sportsbook line in one table.

Why choose this scraper

What you get
No login, no key, no proxyIt reads public pages. There is no account to create, no session to keep alive, and no proxy line on your bill.
Eight books kept separateEach book's own number on each market, not one blended average. That is what makes line shopping possible.
Tickets and handleMost feeds carry a public betting percentage. This carries both tables, and the gap between them.
Movement, not just a snapshotOpener, current, direction, and an optional timestamped series per market.
Market maths in the rowImplied probability, decimal odds, hold and no-vig fair probability, computed per game.
Bad numbers flagged, not hiddenImpossible quotes are named and excluded from best-price picks, and still shipped in the per-book array.
Seven leagues, one schemaNFL, NBA, MLB, NHL, WNBA, college football and college basketball return identical fields.
Opt-in extras, off by defaultSplits, movement, head-to-head, futures, props, consensus, scores and news are each a checkbox. Leave them off and you are never billed for them.
Filter without buyingA splits filter fetches the page it needs, filters on it, then drops those columns — you narrow the run without paying to keep data you did not order.
Minimum resourcesMeasured at 155 MB peak on the heaviest run in the catalogue, so it ships with a 256 MB default instead of burning a gigabyte you pay for.

How it compares

This ActorA paid odds APIA generic HTML scraper
PricePay per row, no subscription$50–$500 / monthCheap, then you maintain it
Books per game8, kept separateOften 1 blended price, or a paid add-onWhatever you parse
Betting splitsTickets and handle, bothRarely, and usually a premium tierYou would have to build it
Line movementEvery timestamped moveSnapshots at your poll intervalNo
Futures and awardsSuper Bowl, MVP, Heisman, Cy Young, divisions, win totalsSometimesYou would map each board
Player propsSeason-long, including PrizePicks / Sleeper / UnderdogGame props, usually a premium tierNo
Bad-quote handlingFlagged and excluded from best-pricePassed throughPassed through
SetupPaste a league, press startAPI key, docs, rate limitsWrite and maintain a parser

What a game looks like

One row from /nfl/odds/las-vegas/, with the three optional per-game blocks turned on and the long arrays trimmed:

{
"league": "nfl",
"leagueLabel": "NFL",
"eventId": "35686980",
"matchup": "Browns @ Jaguars",
"startDate": "2026-09-13T17:00:00Z",
"gameDate": "2026-09-13",
"week": null,
"status": "scheduled",
"spreadMarketLabel": "Spread",
"awayTeam": "Browns",
"awayTeamFull": "Cleveland Browns",
"awayAbbreviation": "CLE",
"awayRotationNumber": 455,
"awayStartingPitcher": null,
"homeTeam": "Jaguars",
"homeTeamFull": "Jacksonville Jaguars",
"homeAbbreviation": "JAC",
"homeRotationNumber": 456,
"divisions": ["afc-afc-north", "afc-afc-south"],
"openSpreadHome": -7,
"openTotal": 40.5,
"openMoneylineHome": -290,
"openMoneylineAway": 235,
"consensusSpreadHome": -7.5,
"consensusTotal": 40.5,
"consensusMoneylineHome": -380,
"consensusMoneylineAway": 300,
"spreadMovement": -0.5,
"totalMovement": 0,
"moneylineMovementHome": -90,
"bestSpreadAwayLine": 8.5,
"bestSpreadAwayBook": "Fanatics",
"bestTotalOverPrice": -105,
"bestTotalOverBook": "HardRock",
"bestMoneylineHome": -380,
"bestMoneylineHomeBook": "Bet365",
"bestMoneylineAway": 350,
"bestMoneylineAwayBook": "FanDuel",
"moneylineImpliedHome": 0.791667,
"moneylineNoVigHome": 0.76,
"moneylineNoVigAway": 0.24,
"moneylineDecimalAway": 4,
"moneylineHoldPercent": 4.167,
"averageSpreadHome": -7.75,
"booksWithOdds": 8,
"books": ["Bet365", "BetMGM", "DraftKings", "Caesars", "FanDuel", "HardRock", "Fanatics", "RiversCasino"],
"suspectBooks": ["HardRock"],
"spreadByBook": [
{ "book": "Bet365", "awayLine": 7.5, "awayPrice": -110, "homeLine": -7.5, "homePrice": -110 },
{ "book": "Fanatics", "awayLine": 8.5, "awayPrice": -110, "homeLine": -8.5, "homePrice": -110 }
],
"totalByBook": [{ "book": "Bet365", "total": 40.5, "overPrice": -110, "underPrice": -110 }],
"moneylineByBook": [
{ "book": "Bet365", "awayPrice": 300, "homePrice": -380, "isSuspect": false },
{ "book": "HardRock", "awayPrice": 325, "homePrice": 275, "isSuspect": true }
],
"bettingTrends": {
"awayTicketPercentSpread": 64, "homeTicketPercentSpread": 36,
"awayHandlePercentSpread": 31, "homeHandlePercentSpread": 69,
"awayTicketPercentMoneyline": 7, "homeTicketPercentMoneyline": 93,
"awayHandlePercentMoneyline": 23, "homeHandlePercentMoneyline": 77,
"awayHandleMinusTicketsSpread": -33, "homeHandleMinusTicketsSpread": 33,
"openSpread": "JAC -7", "consensusSpread": "JAC -7.5"
},
"lineMovements": [
{
"market": "Spread",
"open": "JAC -7",
"moveCount": 2,
"bestAwayValue": "+8.5", "bestAwayPrice": -110, "bestAwayBook": "fanatics",
"history": [
{ "timestamp": "2026-05-14T23:39:00.000Z", "value": -7, "side": "JAC", "raw": "JAC -7" },
{ "timestamp": "2026-06-01T17:37:00.000Z", "value": -7.5, "side": "JAC", "raw": "JAC -7.5" }
]
}
],
"headToHead": [
{
"date": "2024-09-15", "team": "Browns", "opponent": "Jaguars", "atOpponent": true,
"closeLine": 3, "closeLineMarket": "spread", "closeTotal": 41,
"result": "Won 18-13", "lineResult": "Won", "totalResult": "Under"
}
],
"headToHeadMeetings": 10,
"headToHeadLineWins": 7,
"headToHeadOvers": 3,
"matchupUrl": "https://www.vegasinsider.com/nfl/matchups/browns-vs-jaguars/",
"scrapedAt": "2026-08-25T20:40:55.830Z"
}

A futures or player-prop row is a different shape — one selection, every book's price:

{
"sport": "nfl",
"leagueLabel": "NFL",
"marketType": "futures",
"marketSlug": "mvp",
"marketName": "MVP",
"selection": "Patrick Mahomes",
"line": null,
"bestPrice": 1300,
"bestPriceBook": "FanDuel",
"bestDecimal": 14,
"bestImpliedProbability": 0.071429,
"averageImpliedProbability": 0.0828,
"priceSpreadPercent": 1.948,
"booksWithOdds": 6,
"pricesByBook": [
{ "book": "DraftKings", "line": null, "price": 1000, "decimal": 11, "impliedProbability": 0.090909, "isBest": false },
{ "book": "FanDuel", "line": null, "price": 1300, "decimal": 14, "impliedProbability": 0.071429, "isBest": true }
],
"url": "https://www.vegasinsider.com/nfl/odds/awards/"
}

Broken quotes, and why we flag them

A sportsbook always keeps a margin, so its two prices on a two-way market imply more than 100% between them — 102% to 106% in practice. VegasInsider occasionally publishes one side with the wrong sign. On 2026-08-25 the Hard Rock column priced the Browns at +325 and the Jaguars at +275 in the same game: 50% total, an impossibility, and — because it is the biggest number in the row — the quote that would win every "best price" comparison it appeared in.

This Actor checks each book's pair, names the offenders in suspectBooks, marks them isSuspect in moneylineByBook, and leaves them out of bestMoneylineHome, bestSpreadAwayLine and the rest. Nothing is deleted: the raw number is still in the per-book array if you want it. In a 15-game NFL board, two games carried one.

Configure the run

Leagues. nfl, nba, mlb, nhl, wnba, college-football, college-basketball. A league out of season has no games on the board; its futures and props boards still work.

Dates and weeks. MLB, NBA, NHL, WNBA and college basketball schedule by date — use dateFrom / dateTo, or dates for specific days. NFL and college football schedule by week — use weeks with the site's own ids (2026-reg-1, 2026-pre-3, 2025-post-2).

Start URLs. Paste any VegasInsider odds, futures, consensus or scoreboard page and it is scraped as-is; the league, date and week options are then ignored.

What to scrape. includeGameOdds is on by default and is the main result. Turn it off to run a futures-only or scores-only job. Boards run in the order they are listed in the input and stop at the row cap, so switch off what you do not need.

OptionWhat it addsCost
includeBettingTrendsTicket % and handle % on all three markets, plus the gapOne request and one charge per game
includeLineMovementsEvery timestamped price the board has heldOne request and one charge per game
includeHeadToHeadPast meetings with the closing line and graded resultsOne request and one charge per game
includeFuturesChampionship, conference, division, award and win-total boardsCharged per selection
includePlayerPropsSeason-long player markets, DFS books includedCharged per selection
includeConsensusPicksHandicapper split per marketCharged per game
includeScoreboardScores, line score, records, pitchersCharged per game
includeNewsThe league headline deckCharged per headline

Filters. teams, searchTerm, gameStatus, startTimeFrom / startTimeTo, minBooks, minTotal / maxTotal, minSpread / maxSpread, minMoneylineHome / maxMoneylineHome, maxHoldPercent, minSpreadMovement, minTotalMovement, minTicketPercent, minHandlePercent, reverseLineMoveOnly, futuresMarkets, minBestPrice / maxBestPrice, minSelectionBooks, and sportsbooks to trim the per-book arrays.

Filtering on splits you did not buy. minTicketPercent, minHandlePercent and reverseLineMoveOnly all read the betting-splits page. The Actor fetches it, filters on it, and then removes those columns again unless includeBettingTrends is also on — so you can narrow a run by public money without being charged for the block.

How far back the data goes

BoardWindow
Game odds, by dateOne year back and one year forward, rolling. The site's own calendar publishes the bounds.
Game odds, by weekThe current and previous season — 27 week ids were live on 2026-08-25.
Scoreboard and consensusThe same one-year window.
Line movementBack to the day the game was first hung — often four months before kickoff.
Head-to-headAs far as the two teams' shared history goes; a 2004 meeting was returned in testing.
Futures and propsCurrent season only.

Pricing

Pay per event. You are charged for what a run actually delivers, and nothing for a block you left switched off.

EventWhat it isPrice
Actor startCharged once when a run begins$0.054
Game odds rowOne game with every book's spread, total and moneyline, plus movement and market maths$0.007
Betting splitsOptional. Tickets and handle on all three markets for one game$0.005
Line movementOptional. Every timestamped price one game's board has held$0.005
Head-to-headOptional. Past meetings with closing lines and graded results$0.004
Futures selectionOne team or player in one futures market, priced by every book$0.005
Player propOne player in one season-long prop market, sportsbooks and DFS apps$0.005
Consensus pickOne game's handicapper split across the three markets$0.004
Scoreboard gameOne game's score, line score, records and starters$0.004
HeadlineOne article from the league news deck$0.002
Board scannedOne page listed, parsed and filtered$0.002

A plain 1,000-game run costs $7 per 1,000 rows. Adding splits and movement to all of them costs $17 per 1,000 — still under a single month of most odds subscriptions, and you only pay for the games you asked for.

Volume discounts apply automatically on the Bronze, Silver and Gold plans.

Free users

Runs on the free Apify plan return a 10-row preview so you can see the schema before committing. Every option still works; only the row count is capped. Any paid plan lifts it.

Run it

  1. Click Try for free.
  2. Pick your leagues, and a date range or week.
  3. Tick the extras you want — splits and line movement are the two most people come for.
  4. Press Start, then download CSV, JSON, Excel or XML.

Schedule it to run every morning and you have a daily odds archive with openers, closers and public money, which is exactly the dataset a closing-line-value model needs and no free feed publishes.

Use with AI agents (MCP)

This Actor is callable from any MCP client — Claude, Cursor, or your own agent — through the Apify MCP server. Point the client at parseforge/vegasinsider-scraper and the input schema above becomes the tool signature, so an agent can ask for "NFL games this week where the public is over 80% on one side and the line moved the other way" without you writing glue code.

Every numeric field is already a number, every timestamp is ISO-8601 UTC, and every row carries sourceUrl and scrapedAt, so an agent can cite what it read and when.

Troubleshooting

The run returned zero rows.

The league is out of season. VegasInsider only carries a board while games are scheduled: asking for NBA odds in August returns an empty board, not an error. Try a league that is playing, widen the date range, or turn on includeFutures, which works year round.

gameDate is empty on a week-based run.

A finished NFL or college football game drops its kickoff timestamp from the board and keeps only "Final". The row still carries week, which is what identifies it on a week-scheduled board.

awayStartingPitcher is empty.

Only baseball announces starters, and only VegasInsider's MLB board prints them. On every other league the field is null by design.

There is no score on my finished game.

VegasInsider's odds board keeps a finished game's closing numbers and replaces the kickoff with the word "Final" — it prints no score and no team record there. Both are on the scoreboard: turn on includeScoreboard and those rows carry the final score, the winner, the inning or quarter grid, the season records and the announced starters. Rather than ship two columns that would be null on every odds row, the Actor leaves them off that row entirely.

A best…Book field names a book with a strange price.

It should not: incoherent pairs are excluded. If one slips through, check suspectBooks on the row and email us the run ID — the coherence bounds are deliberately conservative so a genuinely sharp market is never thrown away.

The line-movement block is missing for a game.

The board was hung recently enough that VegasInsider has no chart for it yet. The Actor detects the empty page, skips the block, and does not charge for it.

A field stopped filling.

VegasInsider changed a page's shape. Email us with your run ID and we will fix the mapping.

FAQ

QuestionAnswer
Do I need a VegasInsider account or an API key?No. It reads the same public pages an anonymous browser gets. The splits tables ship in the guest HTML; the "Create Free Account" panel over them is a CSS overlay.
Do I need a proxy?No. The site served every page over plain HTTP with no rate limiting across back-to-back requests. A proxy field exists if your own network is blocked.
Which sportsbooks are covered?bet365, BetMGM, DraftKings, Caesars, FanDuel, Hard Rock, Fanatics and BetRivers on the game board, plus PrizePicks, Sleeper and Underdog on the season-long props.
Which leagues have a game board?NFL, NBA, MLB, NHL, WNBA, college football and college basketball.
Does it return in-game player props?It returns season-long player props — passing, rushing and receiving yards, touchdowns, home runs, strikeouts, total bases, RBIs. Per-game props are not published on the pages this reads.
How far back does the history go?A rolling year for date-scheduled boards, two seasons for NFL and college football weeks, and as far as the two teams' shared history for head-to-head.
What is the difference between tickets and handle?Tickets is the share of bets on a side; handle is the share of money. Handle far above tickets means a few large bets, which is the signal most people buy this for.
Is the consensus column an average?It is VegasInsider's own consensus column, scraped as published. The Actor also computes averageSpreadHome and averageTotal across the books if you want a plain mean.
Can I get live in-play odds?It returns the board as VegasInsider publishes it, and the scoreboard board carries final scores and line scores. It is not a low-latency in-play feed.
Is this an official VegasInsider product?No. It is unofficial and reads only publicly available data.

Browse the full ParseForge collection for more scrapers.

🆘 Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by VegasInsider, Better Collective, or any sportsbook named in its output. It collects only publicly available data. Betting odds are provided for informational purposes and are not betting advice. You are responsible for complying with VegasInsider's terms, with the gambling laws of your jurisdiction, and with applicable data-protection law. 21+. If gambling is a problem for you, call 1-800-GAMBLER.