VegasInsider Scraper - NFL, NBA & MLB Odds, Betting Splits
Pricing
Pay per event
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
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Share
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 it | What they scrape VegasInsider for |
|---|---|
| Bettors and handicappers | Line shopping across eight books, and fading a public that is 90% on one side |
| Quant and model builders | Openers, closers and move-by-move history to backtest against |
| Odds and media sites | A normalised spread / total / moneyline feed for seven leagues |
| Affiliate and content teams | Live numbers for comparison pages, futures boards and award odds |
| Fantasy and DFS players | Season-long player props, including the PrizePicks, Sleeper and Underdog lines |
| Data scientists | Labelled 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
suspectBooksand 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
includeScoreboardfor 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 proxy | It reads public pages. There is no account to create, no session to keep alive, and no proxy line on your bill. |
| Eight books kept separate | Each book's own number on each market, not one blended average. That is what makes line shopping possible. |
| Tickets and handle | Most feeds carry a public betting percentage. This carries both tables, and the gap between them. |
| Movement, not just a snapshot | Opener, current, direction, and an optional timestamped series per market. |
| Market maths in the row | Implied probability, decimal odds, hold and no-vig fair probability, computed per game. |
| Bad numbers flagged, not hidden | Impossible quotes are named and excluded from best-price picks, and still shipped in the per-book array. |
| Seven leagues, one schema | NFL, NBA, MLB, NHL, WNBA, college football and college basketball return identical fields. |
| Opt-in extras, off by default | Splits, 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 buying | A 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 resources | Measured 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 Actor | A paid odds API | A generic HTML scraper | |
|---|---|---|---|
| Price | Pay per row, no subscription | $50–$500 / month | Cheap, then you maintain it |
| Books per game | 8, kept separate | Often 1 blended price, or a paid add-on | Whatever you parse |
| Betting splits | Tickets and handle, both | Rarely, and usually a premium tier | You would have to build it |
| Line movement | Every timestamped move | Snapshots at your poll interval | No |
| Futures and awards | Super Bowl, MVP, Heisman, Cy Young, divisions, win totals | Sometimes | You would map each board |
| Player props | Season-long, including PrizePicks / Sleeper / Underdog | Game props, usually a premium tier | No |
| Bad-quote handling | Flagged and excluded from best-price | Passed through | Passed through |
| Setup | Paste a league, press start | API key, docs, rate limits | Write 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.
| Option | What it adds | Cost |
|---|---|---|
includeBettingTrends | Ticket % and handle % on all three markets, plus the gap | One request and one charge per game |
includeLineMovements | Every timestamped price the board has held | One request and one charge per game |
includeHeadToHead | Past meetings with the closing line and graded results | One request and one charge per game |
includeFutures | Championship, conference, division, award and win-total boards | Charged per selection |
includePlayerProps | Season-long player markets, DFS books included | Charged per selection |
includeConsensusPicks | Handicapper split per market | Charged per game |
includeScoreboard | Scores, line score, records, pitchers | Charged per game |
includeNews | The league headline deck | Charged 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
| Board | Window |
|---|---|
| Game odds, by date | One year back and one year forward, rolling. The site's own calendar publishes the bounds. |
| Game odds, by week | The current and previous season — 27 week ids were live on 2026-08-25. |
| Scoreboard and consensus | The same one-year window. |
| Line movement | Back to the day the game was first hung — often four months before kickoff. |
| Head-to-head | As far as the two teams' shared history goes; a 2004 meeting was returned in testing. |
| Futures and props | Current season only. |
Pricing
Pay per event. You are charged for what a run actually delivers, and nothing for a block you left switched off.
| Event | What it is | Price |
|---|---|---|
| Actor start | Charged once when a run begins | $0.054 |
| Game odds row | One game with every book's spread, total and moneyline, plus movement and market maths | $0.007 |
| Betting splits | Optional. Tickets and handle on all three markets for one game | $0.005 |
| Line movement | Optional. Every timestamped price one game's board has held | $0.005 |
| Head-to-head | Optional. Past meetings with closing lines and graded results | $0.004 |
| Futures selection | One team or player in one futures market, priced by every book | $0.005 |
| Player prop | One player in one season-long prop market, sportsbooks and DFS apps | $0.005 |
| Consensus pick | One game's handicapper split across the three markets | $0.004 |
| Scoreboard game | One game's score, line score, records and starters | $0.004 |
| Headline | One article from the league news deck | $0.002 |
| Board scanned | One 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
- Click Try for free.
- Pick your leagues, and a date range or week.
- Tick the extras you want — splits and line movement are the two most people come for.
- 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
| Question | Answer |
|---|---|
| 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. |
Related actors
- Sportsbook Review Scraper: the same markets from SportsbookReview, with closed lines back to 2008.
- Action Network Scraper: odds, public betting and projections from Action Network.
- Bovada Scraper: the full Bovada board, straight from the source.
- RotoWire Scraper: odds, props, injuries and futures across ten sports.
- Unibet / Kambi Odds Scraper: the Kambi offering API behind Unibet and LeoVegas.
- Sporting Life Racing Scraper: racecards, results, runners and form.
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.
