Action Network Odds, Betting Splits & Line Movement Scraper avatar

Action Network Odds, Betting Splits & Line Movement Scraper

Pricing

from $3.50 / 1,000 results

Go to Apify Store
Action Network Odds, Betting Splits & Line Movement Scraper

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

Artsiom Kunitsyn

Maintained by Community

Actor stats

0

Bookmarked

31

Total users

7

Monthly active users

11 hours 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. Filter by team, pick sportsbooks by name, ask for today's games without typing a date, and get compact rows that fit an AI assistant. 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?

Six data types, chosen with entityType:

Data typeOne row perWhat's in it
games (default)game, UFC bout or tennis matchTeams (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.
lineHistorygame × sportsbook × marketEvery odds and line change with its timestamp, per outcome: [{updated_at, odds, value, line_status}], plus the opening point and number of moves.
propsprop marketPlayer (name, team, position) or game-level prop, stat type and period, with every sportsbook's line and odds.
injuriesinjured playerTeam, player, position, status (out, questionable, ...), injury, the latest note, starter / key-player flags, when it was reported and updated.
standingsteamWins, 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, ...).
futuresfutures outcomeMarket (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, Caesars, Fanatics, bet365, BetRivers, theScore Bet, Hard Rock Bet, Bally Bet, Unibet, BetVictor, Betfred, Bet99, Kalshi and Polymarket. Choose them by name with books; without it you get the site's default set (Consensus, Open and about five major US books).

Every game row also has the public splits and the opening line as flat fields (spread_home_tickets_pct, spread_home_money_pct, moneyline_home_tickets_pct, over_money_pct, open_spread_home, open_total_line, ...), so no digging into nested data is needed.

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 & splitsLine history, propsInjuriesStandings / ATSFutures
NFL, NCAAF, NBA, NCAAB, WNBA, MLB, NHL✓✓✓ (none reported for NCAAF)✓ in season✓
Soccer (8 leagues)✓✓✓MLS, Champions League, Europa League—
UFC, ATP, WTAodds & 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.

⚖️ Strengths and limits

Read this before you run a big job, so you know exactly what you get.

Strengths

  • Odds and public betting splits in one row, for every major US sportsbook.
  • Complete seasons. In our checks a season run matched the real game count exactly: NFL 2025 = 272 games, NHL 2025-26 = 1,312.
  • 18 leagues and six data types from one actor, no proxy or login needed.

Limits

  • Not an official or licensed feed. It reads the API behind Action Network's website, which isn't a public product, and the robots.txt on that API host disallows crawlers. Check this fits your own compliance rules. If the site changes the API, data types can stop working until the actor is updated: in October 2026 a site change briefly left props empty.
  • Line movement can't be backfilled. Timestamped line history is kept for only 2–3 days after a game, so schedule lineHistory daily.
  • History is limited elsewhere too. Closing odds and splits go back roughly two seasons, props at least a year. Injuries, standings, futures and weather are current snapshots only.
  • UFC and tennis are thinner. Odds and results only: no splits, line history, props, injuries, standings or futures, and their odds disappear within days of the event.
  • Splits are Consensus only. Ticket % and money % come from Action Network's Consensus entry, not from each sportsbook, and we can't verify how the site calculates them.
  • Sportsbook prices are state-specific. A book's line is from one US state's listing (for example DraftKings NJ), so your state may differ. You get about five major books by default; ask for others in books.
  • Coverage varies by league. See the table above: no futures for soccer, MLS and European cups only for soccer standings, standings empty between seasons, weather only for NFL and NCAA Football in the current week. Golf isn't covered. Injury rows have player names but no player ids.
  • Not real-time. Each run is a snapshot of the moment it runs.
  • Rows can add up. At $5 per 1,000 on the free plan: a full NFL season of games is about $1.40, but 90 games of props were 7,511 rows (about $38) and all futures 9,230 rows (about $46). Filter by league, team and date, and use compact for smaller rows.
  • Not affiliated with Action Network or any sportsbook.

Sample output

Real rows from a recent run (NHL, games):

GameStart (UTC)Moneyline away / homePuck line homeTotalBets
Rangers @ Bruins2026-09-30 00:00+105 / −123−1.55.5626
Canucks @ Oilers2026-09-30 02:00+220 / −275−1.56.5287
Panthers @ Hurricanes2026-09-29 21:00+110 / −130−1.56.5252
Canadiens @ Maple Leafs2026-09-29 23:00−107 / −113−1.56.5252
Blackhawks @ Golden Knights2026-09-30 02:30+210 / −257−1.55.5186

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, about $0.25 at the free-plan price. A full NFL season of games is about $1.40, within the monthly credit on Apify's free plan.

How to scrape betting odds and splits

  1. Click Try for free (or open the actor in Apify Console) and go to the Input tab.
  2. Choose entityType: games, lineHistory, props, injuries, standings or futures.
  3. Pick the leagues.
  4. Leave the dates empty for the current slate, set dateFrom/dateTo (a date or today, tomorrow, yesterday) for the daily leagues, or a season (and weeks) for NFL and NCAA Football.
  5. Optionally pick teams and sportsbooks (books), and tick compact for smaller rows.
  6. maxItems defaults to 50, a quick preview. Clear it (null) for everything in scope.
  7. Click Start, then download the results as JSON, CSV, Excel or HTML, or use the API.
  8. For a daily odds feed or line-movement capture, add a Schedule (examples below).

Input

FieldTypeDefaultDescription
entityTypestringgamesgames, lineHistory, props, injuries, standings or futures. The last three are the current snapshot and ignore dates and season.
leaguesarrayall 18nfl, 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.
teamsarrayallOnly games involving these teams (or UFC fighters / tennis players): "Lakers", "Kansas City Chiefs", "NYY". Whole words or the abbreviation, any case. Also filters injuries, standings and futures; line history and props are fetched only for matching games.
dateFrom / dateTostring—Game days for the daily leagues (everything except NFL and NCAA Football): YYYY-MM-DD, or today, tomorrow, yesterday (US Eastern). Empty = the current slate (in the US morning that can still be last night's games). At most 400 days.
seasoninteger—NFL / NCAA Football season year. Setting it walks the weeks below.
weekFrom / weekTointeger1 / end of seasonWeek range when season is set.
seasonTypestringregreg or post (playoffs / bowl games).
booksarraysite defaultSportsbooks by name: DraftKings, FanDuel, BetMGM, Caesars, Fanatics, bet365, BetRivers, theScore Bet, Hard Rock Bet, Bally Bet, Unibet, BetVictor, Betfred, Bet99, Kalshi, Polymarket (any case). Consensus (the splits) and Open are always kept. For futures, empty means every book that offers futures.
compactbooleanfalseSmaller rows: one flat price set per sportsbook for games, opening + current price (no full time series) for line history, book/side/line/odds for props. Good for AI assistants and spreadsheets.
maxItemsinteger50Stop after this many rows. null = everything in scope.
modestringautoauto / full / incremental, games only.
bookIdsarray—Advanced: sportsbooks by Action Network book id (state-specific, e.g. 68 = DraftKings NJ). Combines with books.
concurrencyinteger10Parallel requests (max 20).
impersonatestringfirefoxBrowser fingerprint. Change only if requests are blocked.
proxyConfigurationobjectno proxyApify Proxy settings. Not needed.

Input examples

Default preview (current slate of every league, first 50 games):

{}

Today's NBA games, DraftKings, FanDuel and bet365 only, compact rows:

{ "leagues": ["nba"], "dateFrom": "today", "books": ["DraftKings", "FanDuel", "bet365"], "compact": true, "maxItems": null }

One team's games, odds and public splits for the whole season:

{ "leagues": ["nfl"], "season": 2025, "teams": ["Kansas City Chiefs"], "maxItems": null }

Tonight's player props for one team:

{ "entityType": "props", "leagues": ["nba"], "dateFrom": "today", "teams": ["Lakers"], "compact": true, "maxItems": 2000 }

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"], "books": ["DraftKings", "FanDuel"], "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 an AI assistant

Connect Claude, ChatGPT, Cursor or any MCP client to Apify's MCP server and ask in plain words. The inputs are made for it: teams and sportsbooks by name, today instead of a date, and compact rows that fit in an assistant's context.

  • "What are the public betting splits on tonight's NBA games?" → leagues: ["nba"], dateFrom: "today", compact: true
  • "Where is the money going on the Chiefs game?" → leagues: ["nfl"], teams: ["Chiefs"]
  • "Compare DraftKings and FanDuel on Premier League games this weekend" → leagues: ["epl"], dateFrom/dateTo, books: ["DraftKings", "FanDuel"]
  • "Who is on the Lakers injury report, and what are tonight's Lakers props?" → entityType: "injuries" or "props", leagues: ["nba"], teams: ["Lakers"]

A run whose filters match nothing ends with 0 rows and a status message saying why (for example, no game involving that team in those dates).

Use it from Python or the API

from apify_client import ApifyClient
client = 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():
print(game["away_team"], "@", game["home_team"], game["spread_home"],
"tickets", game["spread_home_tickets_pct"], "money", game["spread_home_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, Caesars, Fanatics, bet365, BetRivers, theScore Bet, Hard Rock Bet, Bally Bet, Unibet, BetVictor, Betfred, Bet99, Kalshi and Polymarket. Pick them by name in books.

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, a team with no game in the chosen leagues and dates, 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.

Feedback and reviews

Missing a field or hit a problem? Open an issue on the Issues tab: issues are answered promptly.

If this Actor is useful to you, please leave a short review on this page. Reviews help other people find it and help decide what to improve next. Thank you!

  • 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.