Action Network Odds, Betting Splits & Line Movement Scraper
Pricing
from $3.50 / 1,000 results
Action Network Odds, Betting Splits & Line Movement Scraper
Sports betting odds from every major US sportsbook, public money/ticket percentages, line movement, props, injuries, ATS standings, futures and weather from Action Network - NFL, NBA, MLB, NHL, college, 8 soccer leagues, UFC and tennis.
Pricing
from $3.50 / 1,000 results
Rating
0.0
(0)
Developer
Artsiom Kunitsyn
Maintained by CommunityActor stats
0
Bookmarked
15
Total users
3
Monthly active users
2 days ago
Last modified
Categories
Share
Action Network Scraper — betting odds, public betting splits & line movement
Scrape sports betting data from Action Network: odds from every major US sportsbook (DraftKings, FanDuel, BetMGM, Caesars, bet365 and more), public betting percentages (share of bets and share of money on each side), timestamped line movement, player and game props, injury reports, standings with against-the-spread (ATS) and over/under records, futures odds (champion, MVP, season win totals), game-day weather, and scores. Covers 18 leagues: the NFL, NCAA Football, NBA, NCAA Basketball, WNBA, MLB, NHL, soccer's Premier League, La Liga, Bundesliga, Serie A, Ligue 1, Champions League, Europa League and MLS, plus UFC and ATP / WTA tennis.
Get current slates or historical closing odds and betting splits for past seasons. Export to JSON, CSV or Excel, or feed it straight into your betting model in Python. No login or API key needed.
Contents
- What data can you extract?
- Sample output
- Who uses this Action Network scraper?
- How much does it cost?
- How to scrape betting odds and splits
- Input
- Input examples
- Line history: capture it daily
- UFC and tennis
- Incremental runs
- Use it from Python or the API
- FAQ
- Related sports data scrapers
What data can you extract?
Six data types, chosen with entityType:
| Data type | One row per | What's in it |
|---|---|---|
games (default) | game, UFC bout or tennis match | Teams (or fighters / players), start time, status, score, winner, attendance. Moneyline, spread and total from Consensus, the opening line and each sportsbook. Public betting splits (tickets_pct, money_pct) per side of each market. Number of bets. Alternate lines and team totals where listed. NFL and NCAA Football games this week also get a weather forecast for kickoff. |
lineHistory | game × sportsbook × market | Every odds and line change with its timestamp, per outcome: [{updated_at, odds, value, line_status}], plus the opening point and number of moves. |
props | prop market | Player (name, team, position) or game-level prop, stat type and period, with every sportsbook's line and odds. |
injuries | injured player | Team, player, position, status (out, questionable, ...), injury, the latest note, starter / key-player flags, when it was reported and updated. |
standings | team | Wins, losses, draws, win %, points for/against, streak, conference/division rank, games back, plus ATS record, over/under record and units won betting the team, and every split the site keeps in records (ats_home, ats_fav, over_under_road, units_last_10, last_10, ...). |
futures | futures outcome | Market (e.g. "2026-27 NBA MVP", Super Bowl winner, division winners, season win totals), team or player, Over/Under or Yes/No option, line, best price and every sportsbook's odds. |
Sportsbooks: Consensus, Open (opening line), DraftKings, FanDuel, BetMGM, BetRivers, Caesars,
bet365 and Unibet across several states. Choose the ones you want with bookIds.
Game records also carry a change_type for incremental runs. The Output tab has readable
Games, Line history, Props, Injuries, Standings & ATS and Futures table
views with the full field list.
Which data exists for which league (what the site publishes, checked September 2026):
| Games & splits | Line history, props | Injuries | Standings / ATS | Futures | |
|---|---|---|---|---|---|
| NFL, NCAAF, NBA, NCAAB, WNBA, MLB, NHL | ✓ | ✓ | ✓ (none reported for NCAAF) | ✓ in season | ✓ |
| Soccer (8 leagues) | ✓ | ✓ | ✓ | MLS, Champions League, Europa League | — |
| UFC, ATP, WTA | odds & results, no splits | — | — | — | — |
Why this Action Network scraper
- Odds and public betting splits in one row, so you can see at once where the public and the money disagree.
- Historical backfill: closing odds and final splits for roughly the last two seasons, props for at least the past year.
- Line movement capture from the opening line to the close.
- 18 leagues in one actor: every major US league, the top European soccer leagues, UFC and tennis, for the current slate or any date range or season.
- Beyond odds: injury reports, ATS / over-under standings, futures and weather from the same source, in the same format.
- Fast and cheap: a full NFL season (272 games) in one run, no proxy needed.
Sample output
Real rows from a recent run (NHL, games):
| Game | Start (UTC) | Moneyline away / home | Puck line home | Total | Bets |
|---|---|---|---|---|---|
| Rangers @ Bruins | 2026-09-30 00:00 | +105 / −123 | −1.5 | 5.5 | 626 |
| Canucks @ Oilers | 2026-09-30 02:00 | +220 / −275 | −1.5 | 6.5 | 287 |
| Panthers @ Hurricanes | 2026-09-29 21:00 | +110 / −130 | −1.5 | 6.5 | 252 |
| Canadiens @ Maple Leafs | 2026-09-29 23:00 | −107 / −113 | −1.5 | 6.5 | 252 |
| Blackhawks @ Golden Knights | 2026-09-30 02:30 | +210 / −257 | −1.5 | 5.5 | 186 |
Game record (JSON, shortened):
{"source": "actionnetwork","external_id": "256552","league": "nfl","season": 2025,"week": 1,"start_time": "2025-09-05T00:20:00.000Z","away_team": "Dallas Cowboys","home_team": "Philadelphia Eagles","status": "complete","away_score": 20,"home_score": 24,"winner": "home","moneyline_home": -425,"spread_home": -8.5,"total_line": 47.5,"consensus": {"spread": {"home": {"odds": -110, "value": -8.5, "tickets_pct": 64, "money_pct": 72},"away": {"odds": -110, "value": 8.5, "tickets_pct": 36, "money_pct": 28}}},"books": [{"book_id": 68, "book": "DK NJ", "moneyline": {}, "spread": {}, "total": {}}],"change_type": "new"}
Who uses this Action Network scraper?
- Sports bettors and betting-model builders: closing line value, reverse line movement, fading the public, and backtesting against historical closing odds and splits.
- Tipster, picks and betting-media sites: live odds tables, public-betting widgets and line movement charts.
- Fantasy and DFS players: player prop lines across books.
- Sports-data analysts and researchers: market efficiency, bookmaker comparison, the gap between public tickets and money.
How much does it cost?
Pay per result: you're charged per row delivered. There's no monthly rental or separate API key fee. See the Pricing tab for current prices, including automatic discounts on higher Apify plans.
The default run returns 50 rows, so trying it costs a fraction of a cent. The monthly credit on Apify's free plan covers a full NFL season of games.
How to scrape betting odds and splits
- Click Try for free (or open the actor in Apify Console) and go to the Input tab.
- Choose
entityType:games,lineHistory,props,injuries,standingsorfutures. - Pick the
leagues. - Leave the dates empty for the current slate, set
dateFrom/dateTofor the daily leagues, or aseason(and weeks) for NFL and NCAA Football. - Optionally pick sportsbooks in
bookIds. maxItemsdefaults to 50, a quick preview. Clear it (null) for everything in scope.- Click Start, then download the results as JSON, CSV, Excel or HTML, or use the API.
- For a daily odds feed or line-movement capture, add a Schedule (examples below).
Input
| Field | Type | Default | Description |
|---|---|---|---|
entityType | string | games | games, lineHistory, props, injuries, standings or futures. The last three are the current snapshot and ignore dates and season. |
leagues | array | all 18 | nfl, ncaaf, nba, ncaab, wnba, mlb, nhl, epl, laliga, bundesliga, seriea, ligue1, champions, europa, mls, ufc, atp, wta; soccer selects all 8 soccer leagues. Out-of-season leagues return nothing. |
dateFrom / dateTo | string | — | Game days (YYYY-MM-DD, US Eastern) for the daily leagues (everything except NFL and NCAA Football). Empty = the current slate. At most 400 days. |
season | integer | — | NFL / NCAA Football season year. Setting it walks the weeks below. |
weekFrom / weekTo | integer | 1 / end of season | Week range when season is set. |
seasonType | string | reg | reg or post (playoffs / bowl games). |
bookIds | array | site default | Restrict to these sportsbooks. Consensus is always kept because it carries the splits. For futures, empty means every listed book that offers futures. |
maxItems | integer | 50 | Stop after this many rows. null = everything in scope. |
mode | string | auto | auto / full / incremental, games only. |
concurrency | integer | 10 | Parallel requests (max 20). |
impersonate | string | firefox | Browser fingerprint. Change only if requests are blocked. |
proxyConfiguration | object | no proxy | Apify Proxy settings. Not needed. |
Input examples
Default preview (current slate of every league, first 50 games):
{}
Today's MLB slate, DraftKings and FanDuel only:
{ "leagues": ["mlb"], "bookIds": ["68", "69"], "maxItems": null }
A full NFL regular season of closing odds and betting splits:
{ "leagues": ["nfl"], "season": 2025, "maxItems": null }
NHL closing odds for a whole season, by date range:
{ "leagues": ["nhl"], "dateFrom": "2025-10-07", "dateTo": "2026-04-18", "maxItems": null }
Daily feed of new and changed games (schedule this):
{ "leagues": ["nfl", "mlb", "nba", "nhl"], "maxItems": null }
Daily line-movement capture (schedule this):
{ "entityType": "lineHistory", "leagues": ["nfl", "mlb", "nba", "nhl"], "maxItems": null }
NBA player props for one night:
{ "entityType": "props", "leagues": ["nba"], "dateFrom": "2025-01-01", "maxItems": 2000 }
Premier League and Champions League for a weekend:
{ "leagues": ["epl", "champions"], "dateFrom": "2026-09-19", "dateTo": "2026-09-20", "maxItems": null }
Today's UFC card and tennis matches:
{ "leagues": ["ufc", "atp", "wta"], "maxItems": null }
Injury report for every league (schedule it before game days):
{ "entityType": "injuries", "maxItems": null }
NFL and MLB standings with ATS and over/under records:
{ "entityType": "standings", "leagues": ["nfl", "mlb"], "maxItems": null }
NBA futures (champion, MVP, awards) from DraftKings and FanDuel:
{ "entityType": "futures", "leagues": ["nba"], "bookIds": ["68", "69"], "maxItems": null }
Line history: capture it daily
Action Network keeps a game's full timestamped line history for only a few days after it's
played. Games from about a week ago come back with every outcome present but an empty history. So
lineHistory is a capture product, not a backfill one: schedule it daily (or more often) and
each game's complete history, from the opening line to the close, is saved before the site drops it.
Closing odds, final public betting splits, scores and props are kept much longer (roughly the last
two seasons for odds and splits; props for at least the past year), so games and props can be
backfilled for a season with the season/week or date inputs.
UFC and tennis
UFC bouts and ATP / WTA matches come in the games format: the two fighters or players are in the
away/home team fields (their ids are the site's player ids), with event_title (the card or
tournament round) and venue. UFC rows add weight_class, result_method (KO/TKO, Submission,
Decision...), result_round and result_clock; tennis rows add set_scores and put sets won in
the score fields.
What the site does not have for these sports: public betting splits (so tickets_pct and
money_pct are empty rather than a misleading 0%), line history, props, injuries, standings and
futures. Their odds are removed within days of the event, so scrape upcoming cards and matches
(or schedule a daily run) if you need the prices. Results and winners stay available for years.
Incremental runs
games only, and only when maxItems is cleared (null); a capped run is a preview and always
returns games. In auto mode the first uncapped run returns every game in scope and remembers it.
Later uncapped runs return only new games and games whose status, start time, score or closing
consensus line changed (change_type is new or changed). The memory covers every league and
date you've run and forgets games that started more than 60 days ago. A run stopped by maxItems,
by your spending limit or by an error doesn't update it. lineHistory, props, injuries,
standings and futures are always a fresh pull.
Use it from Python or the API
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("artsiom_k/actionnetwork-scraper").call(run_input={"leagues": ["nfl"], "season": 2025, "maxItems": None})for game in client.dataset(run["defaultDatasetId"]).iterate_items():spread = (game.get("consensus") or {}).get("spread", {}).get("home", {})print(game["away_team"], "@", game["home_team"], game["spread_home"],"tickets", spread.get("tickets_pct"), "money", spread.get("money_pct"))
The same works from JavaScript, plain HTTP, Make, Zapier, n8n and Google Sheets integrations. AI agents such as Claude or Cursor can call it through Apify's MCP server.
FAQ
Is there an Action Network API? Action Network doesn't offer a public self-serve data API. This actor returns the odds, splits, line movement and props shown on the site as structured data, so it works as an Action Network API alternative.
What are ticket % and money %? Ticket % is the share of bets placed on a side; money % is the share of the dollars wagered. A big gap between them usually means large bets ("sharp money") are on one side.
Can I get historical betting odds and public splits?
Yes. Closing odds and final splits go back roughly two seasons; use season (NFL, NCAA Football) or
dateFrom/dateTo (other leagues). Full line movement history is only available for a few days
after each game, so capture it daily.
Which sportsbooks are covered? Consensus, Open (the opening line), DraftKings, FanDuel, BetMGM, BetRivers, Caesars, bet365 and Unibet across several states.
Why is a league empty? It's out of season, or has no games in the selected dates (European soccer also pauses for international breaks).
Why did my run finish with 0 rows?
The input asks for something the site doesn't have, for example props or lineHistory for UFC
or tennis only, or a date range that is reversed or longer than 400 days. The run then ends
successfully with 0 rows (you're not charged for rows), and the run's status message and log say
why.
Do you cover UFC, tennis or golf? UFC and ATP / WTA tennis, yes: odds and results (see UFC and tennis). Golf isn't covered. For full MMA fighter records and fight histories, see the Sherdog Scraper.
Can I get injury reports, ATS records and futures odds?
Yes, with entityType injuries, standings (includes against-the-spread, over/under and units
records) and futures. These are the current snapshot, so schedule a run to keep a history.
Standings are empty for a league between seasons.
What's in the weather field? For NFL and NCAA Football games in the current week: the hourly forecast closest to kickoff (temperature in °F, wind speed in mph and direction, precipitation, humidity, cloud cover) and the stadium's roof type and surface. Domed stadiums usually have no forecast.
Can I export the odds to Excel or CSV?
Yes: JSON, CSV, Excel, XML or HTML from the Output tab, or through the API. Nested fields
(consensus, books) are flattened into columns in CSV and Excel.
Something doesn't work or a field is missing? Open an issue on the Issues tab; issues are answered promptly.
Related sports data scrapers
- Sports Odds History Scraper — historical opening and closing odds per sportsbook (SportsBookReview) and closing lines with ATS / over-under results back to 2006 (Covers).
- TennisExplorer Scraper — tennis results back to the 1990s, bookmaker odds per match, match statistics and point-by-point.
- FantasyPros Scraper — expert consensus rankings, ADP and projections for NFL, NBA, MLB and NHL.
- Sherdog Scraper — MMA fighter records, fight histories and event results (UFC, PFL, Bellator, ONE).
- MotoGP Scraper — official MotoGP, Moto2 and Moto3 results and standings.
- FIBA Scraper — international basketball game results and standings.
- Smarkets Betting Exchange Scraper — betting exchange back and lay odds, matched volume, results and traded-price history.
- PGA TOUR Scraper — golf results back to the 1950s, hole-by-hole scorecards, FanDuel odds history, tee times and player stats.
- Kalshi & Polymarket Scraper — prediction market odds, settled results and price history for sports, politics, economics and crypto.
- SofaScore Scraper — results, team statistics, lineups with player ratings, incidents and odds for football, basketball, hockey, tennis and 17 more sports.
- Flashscore Scraper — results, statistics, lineups, incidents and opening/closing odds from ~20 bookmakers for 17 sports.