Action Network API | Betting Splits, Odds & Line Movement
Pricing
from $2.79 / 1,000 games
Action Network API | Betting Splits, Odds & Line Movement
Public betting splits from Action Network: share of tickets and share of money on every side, across 18 leagues. Plus sportsbook odds, best price per side, opening-to-current line movement, player props and expert picks with verified ROI. Export JSON, CSV or Excel. No login, no proxy.
Pricing
from $2.79 / 1,000 games
Rating
0.0
(0)
Developer
Zen Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 hours ago
Last modified
Categories
Share
Action Network API | Betting Splits, Odds, Line Movement & Expert Picks (2026)
From Zen Studio, creators of PrizePicks Player Props, Underdog Player Props and DraftKings Odds, with 50,000+ combined lifetime runs across those three sports-betting Actors.
Why choose this Actor?
- Bets, money and the gap between them. Every game the consensus book prices carries
ticketPercent,moneyPercentand a signedsharpGap. Money running ahead of tickets means fewer bettors are carrying more of the stake, andsharpGapis that difference as one sortable number. - Eighteen leagues, team sports and individual sports. A single run collected 120 games across 10 in-season leagues in 8 seconds, NFL and college football through MLB, NHL, WNBA and the European soccer leagues. Tennis matches and UFC fights come back as their own rows in the same run. No per-sport rewrites and no per-book scrapers.
- Expert picks, verified records and ROI, at no extra charge. One NFL game carried 52 handicappers, each with a win/loss record, units staked, ROI and a profile link. They arrive inside the game row rather than as a separate billable event.
Try the example slate
Open the Actor's input page, switch to JSON and paste this to pull the current NFL slate with splits and expert picks. Then start the run.
{"leagues": ["nfl"],"includeExpertPicks": true,"maxGames": 10}
Leave date, week and season out and you get the current slate. NFL and college football are scheduled by week, so those two leagues use week plus season instead of date. Splits appear on the games the consensus book prices, which is most in-season games but not every fixture months out.
Related actors
| Actor | Use it for |
|---|---|
| DraftKings Odds | One book's full board, 280+ leagues, props and futures. |
| FanDuel Odds | Compare a second book's prices against the consensus. |
| Player Props Line Shopping | Find the best prop line across the pick'em apps. |
| Flashscore Tennis | Match data and odds for ATP and WTA. |
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start building with this Actor.
Action Network Odds scraper on Apify. Actor: zen-studio/action-network-odds (batch, pay per event). Run it with the apify-client SDK or POST https://api.apify.com/v2/acts/zen-studio~action-network-odds/runs?token=APIFY_TOKEN (token: https://console.apify.com/account/integrations). One dataset row per game (48 top-level fields, up to 51 with expert picks, props and line movement) or per tennis match, UFC fight or boxing bout (25 fields, up to 28; competitors instead of teams, eventType competition): game identity, both teams with records and logos, consensus moneyline/spread/total with ticketPercent + moneyPercent + sharpGap (public betting splits), per-book pricing, best price per side with the book, opening-to-current line movement, team totals, expert picks with verified records and ROI, final score by period, a graded against-the-spread / over-under result, closing odds by period, box score detail with live situation, live win probability, poll ranks, a roster that names every player id, final lineups, play-by-play, officials, venue and weather, full team and player stat sheets and the league calendar. Opt-in blocks add full timestamped line movement history and the complete player and game prop board. Leagues: nfl ncaaf nba ncaab wnba mlb nhl soccer epl laliga bundesliga seriea ligue1 mls ufc boxing atp wta. Inputs: leagues (array), date (YYYY-MM-DD; NFL and NCAAF use week + season + seasonType instead), gameIds / gameUrls, gameStatus, teams, onlyTrending, minBets, books, periods, includeExpertPicks, includeLineMovement, includeProps, includeStandings, includeInjuries, maxGames. Pricing: $3.99 per 1,000 games, +$3.99 per 1,000 for movement history, +$4.99 per 1,000 for props, $7.99 per 1,000 league reports, $4.99 per 1,000 runs to start the Actor; expert picks free. Full input schema and output fields: GET https://api.apify.com/v2/acts/zen-studio~action-network-odds/builds/default (Bearer TOKEN).
Also available as an MCP server: add zen-studio/action-network-odds for natural language access.
What Are Betting Splits and Sharp Money?
ticketPercent is the share of bets on a side. moneyPercent is the share of money. sharpGap is the signed difference between them, so you can sort on it directly.
When money runs well ahead of tickets, fewer bettors are carrying more of the stake. That is the classic sharp-money signal, and it is the reason public betting percentages are worth collecting at all.
In the example below, 82% of moneyline tickets are on Seattle but only 53% of the money. That is a sharpGap of -29, with the money leaning the other way.
Every game the books have priced also carries reverse line movement in raw form: lineMovement holds the opening number next to the current one, so a line that moved against the public side is a one-line comparison rather than a research project.
What Data Can You Extract from Action Network?
| Block | Included | What it is |
|---|---|---|
| Game, teams, records | Always | Identity, start time, status, broadcast networks, attendance, rotation numbers, bet count |
| Matches and fights | Always | Tennis, UFC and boxing as one row per event, with both competitors, nationality, playing hand or reach, and the venue |
| Consensus lines | Always | Moneyline, spread, total, with no-vig probabilities, hold and overround |
| Public betting percentages | Always | Share of tickets and of money on each side, plus the signed gap between them |
| Every sportsbook's price | Always | Per-book pricing for each market and game segment. Six major books by default, up to 38 of 457 selectable |
| Best price per side | Always | Highest available price and which book offers it, compared on implied probability |
| Opening vs current | Always | Line and odds movement from the opening number |
| Team totals | Always | Per-team over/under, de-vigged per team |
| Score and result | Always | Final score by period, plus graded against-the-spread and over/under |
| Expert picks | Always | Selections with verified win/loss record, units staked and ROI |
| Closing odds by period | Always | Last recorded moneyline, spread and total for the full game, each half and each quarter |
| Box score detail | Always | Half and first-five-inning totals, timeouts, team stats, live down-and-distance or ball-strike count, pitching matchup |
| Live win probability | Always | Home, over and spread win probability from the latest play while a game is live |
| Poll rankings | Always | AP Top 25 rank for college teams |
| League calendar | Always | Season dates, current week, conferences and divisions |
| Rosters with names | Always | Every player on both teams with name, jersey, position, bats and throws, and headshot. Every player id elsewhere in the row carries its name |
| Starting lineups | Always | Final lineups with substitutes, batting order and position |
| Play-by-play | Always | Every play with score, clock, down and distance or outs and runners, and live win probability. Baseball plays name the batter and the pitcher |
| Player and season stats | Always | Box score stats for every player in the game, and full season stat lines |
| Officials | Always | Umpires and referees where the source lists them, each with their own moneyline and over/under record |
| Venue and weather | Always | Stadium, surface, roof and orientation, and the forecast for upcoming games |
| Team stat sheet | Always | Each team's full stats: passing, rushing, shots, corners, cards and the rest |
| Full movement history | Opt-in | Every timestamped price change per book, back to the opener |
| Player and game props | Opt-in | The complete prop board per game |
| Standings, injuries | Opt-in | League table with against-the-spread, over/under and units records, college poll rank, games back and soccer points, plus the current injury report. One row per league |
Always means no opt-in is needed, not that every game carries it. Odds blocks land where the books have priced the game, and expert picks where handicappers have posted one.
Download the result as JSON, CSV, Excel or HTML, or pull it straight from the dataset API.
Example game row
One row per game. This completed NFL game has props and full line movement switched on, so every block is populated. A game row carries 48 top-level fields, and 51 with expert picks, props and line movement.
Every key is shown. Repeated items are trimmed for readability, and each trimmed block lists its real size:
consensus.moneyline.sides: 1 of 2consensus.total.sides: 1 of 2consensus.spread.sides: 1 of 2teamTotals: 1 of 2teamTotals[].sides: 1 of 2bestPrices.total: 1 of 2bestPrices.moneyline: 1 of 2bestPrices.spread: 1 of 2lineMovement.moneyline: 1 of 2lineMovement.spread: 1 of 2lineMovement.total: 1 of 2booksPricing: 2 of 66players: 1 of 94playerStats.{side}: 2 of 47plays: 1 of 181leagueInfo.league.blacklistDates: 1 of 158leagueInfo.league.calendarInfo.pre: 1 of 4leagueInfo.league.calendarInfo.reg: 1 of 18leagueInfo.league.calendarInfo.post: 1 of 4leagueInfo.league.conferences: 1 of 2leagueInfo.league.divisions: 1 of 8expertPicks: 4 of 52expertPicks[].picks: 2 of 4expertPicks[].picks[].customPickRules.options: 1 of 2 entrieslineMovementHistory: 1 of 66lineMovementHistory[].history: 2 of 186props.playerProps: 1 of 930props.playerProps[].selections: 1 of 9props.gameProps: 1 of 5props.gameProps[].selections: 1 of 72props.propOrder: 1 of 123props.marketRules: 6 of 123 prop typesprops.marketRules.{rule}.rules.options: 1 of 2 entries
{"gameId": 290843,"eventType": "game","gameUrl": "https://www.actionnetwork.com/nfl-game/patriots-seahawks-score-odds/290843","league": "nfl","leagueId": 1,"leagueName": "nfl","coreId": 35546920,"season": 2026,"week": 1,"seasonType": "reg","startTime": "2026-09-10T00:20:00.000Z","status": "complete","statusDetail": "Final","realStatus": "closed","coverage": "full","isFree": false,"isLive": false,"isComplete": true,"awayTeam": {"teamId": 129,"name": "New England Patriots","displayName": "Patriots","shortName": "Patriots","location": "New England","abbreviation": "NE","logo": "https://static.sprtactn.co/teamlogos/nfl/100/ne.png","primaryColor": "002244","secondaryColor": "C60C30","conference": "AFC","division": "EAST","urlSlug": "new-england-patriots","coreId": 1993,"teamRankingsId": null,"record": {"wins": 0,"losses": 1,"ties": 0,"draws": null,"overtimeLosses": null}},"homeTeam": {"teamId": 156,"name": "Seattle Seahawks","displayName": "Seahawks","shortName": "Seahawks","location": "Seattle","abbreviation": "SEA","logo": "https://static.sprtactn.co/teamlogos/nfl/100/sea.png","primaryColor": "002244","secondaryColor": "69BE28","conference": "NFC","division": "WEST","urlSlug": "seattle-seahawks","coreId": 2166,"teamRankingsId": null,"record": {"wins": 1,"losses": 0,"ties": 0,"draws": null,"overtimeLosses": null}},"winningTeamId": 156,"broadcast": {"network": "NBC/Peacock","networkShort": "NBC/Peacock"},"attendance": 68744,"totalBets": 292189,"isTrending": false,"awayRotationNumber": 451,"homeRotationNumber": 452,"score": {"awayScore": 10,"homeScore": 13,"totalPoints": 23,"awayFirstHalfPoints": 7,"homeFirstHalfPoints": 0,"awaySecondHalfPoints": 3,"homeSecondHalfPoints": 13,"awayFirstFivePoints": 0,"homeFirstFivePoints": null,"awayTimeouts": 1,"homeTimeouts": 0,"clock": "00:00","period": 4,"byPeriod": [{"period": "1st","periodName": "1st Quarter","periodNumber": 1,"abbreviation": "1","awayPoints": 0,"homePoints": 0},{"period": "2nd","periodName": "2nd Quarter","periodNumber": 2,"abbreviation": "2","awayPoints": 7,"homePoints": 0},{"period": "3rd","periodName": "3rd Quarter","periodNumber": 3,"abbreviation": "3","awayPoints": 3,"homePoints": 3},{"period": "4th","periodName": "4th Quarter","periodNumber": 4,"abbreviation": "4","awayPoints": 0,"homePoints": 10}],"awayTeamId": 129,"homeTeamId": 156,"situation": {"down": 2,"distance": 11,"yardline": 19,"isRedzone": false,"yardlineText": "SEA 19","startYardline": 20,"yardsToEndzone": 81,"display": "2nd & 11 @ SEA 19","displayShort": "2nd & 11","possessionTeamId": 156},"teamStats": null,"pitching": null,"latestOdds": {"game": {"over": -109,"total": 44.5,"under": -111,"mlAway": 146,"mlHome": -179,"spreadAway": 3.5,"spreadHome": -3.5,"spreadAwayLine": -110,"spreadHomeLine": -110},"firsthalf": {"over": -118,"total": 20.5,"under": -101,"mlAway": 127,"mlHome": -154,"spreadAway": 2.5,"spreadHome": -2.5,"spreadAwayLine": -112,"spreadHomeLine": -107},"firstquarter": {"over": 105,"total": 7.5,"under": -130,"mlAway": 116,"mlHome": -140,"spreadAway": 0.5,"spreadHome": -0.5,"spreadAwayLine": -135,"spreadHomeLine": 105},"thirdquarter": {"over": -120,"total": 9.5,"under": -110,"mlAway": 114,"mlHome": -140,"spreadAway": 1,"spreadHome": -1,"spreadAwayLine": -145,"spreadHomeLine": 117},"fourthquarter": {"over": -105,"total": 13.5,"under": -124,"mlAway": 110,"mlHome": -134,"spreadAway": 0.5,"spreadHome": -0.5,"spreadAwayLine": -135,"spreadHomeLine": 105},"secondquarter": {"over": 105,"total": 13.5,"under": -135,"mlAway": 124,"mlHome": -154,"spreadAway": 1,"spreadHome": -1,"spreadAwayLine": -118,"spreadHomeLine": -107}}},"consensus": {"moneyline": {"sides": [{"side": "home","teamId": 156,"competitorId": null,"playerId": null,"odds": -175,"decimalOdds": 1.5714,"line": 0,"impliedProbability": 0.636364,"noVigProbability": 0.615922,"ticketPercent": 82,"moneyPercent": 53,"sharpGap": -29,"marketId": "21790020","outcomeId": "2669500864"}],"holdPercent": 3.2123,"overroundPercent": 3.3189},"total": {"sides": [{"side": "under","teamId": null,"competitorId": null,"playerId": null,"odds": -112,"decimalOdds": 1.8929,"line": 44.5,"impliedProbability": 0.528302,"noVigProbability": 0.50433,"ticketPercent": 71,"moneyPercent": 59,"sharpGap": -12,"marketId": "21790022","outcomeId": "2669500871"}],"holdPercent": 4.5376,"overroundPercent": 4.7533},"spread": {"sides": [{"side": "home","teamId": 156,"competitorId": null,"playerId": null,"odds": -110,"decimalOdds": 1.9091,"line": -3.5,"impliedProbability": 0.52381,"noVigProbability": 0.5,"ticketPercent": 46,"moneyPercent": 35,"sharpGap": -11,"marketId": "21790021","outcomeId": "2669500866"}],"holdPercent": 4.5455,"overroundPercent": 4.7619}},"teamTotals": [{"teamId": 129,"sides": [{"side": "under","teamId": 129,"competitorId": null,"playerId": null,"odds": -112,"decimalOdds": 1.8929,"line": 20.5,"impliedProbability": 0.528302,"noVigProbability": 0.502135,"ticketPercent": null,"moneyPercent": null,"sharpGap": null,"marketId": "21790040","outcomeId": "2849916707"}],"holdPercent": 4.953,"overroundPercent": 5.2111}],"bestPrices": {"total": [{"side": "over","teamId": null,"odds": -108,"decimalOdds": 1.9259,"line": 44.5,"bookId": 68,"bookName": "DK NJ","competitorId": null,"playerId": null,"impliedProbability": 0.519231,"marketId": "21790022","outcomeId": "2670489214","bookParentId": null,"deeplinkId": "ML2670489214"}],"moneyline": [{"side": "home","teamId": 156,"odds": -170,"decimalOdds": 1.5882,"line": 0,"bookId": 68,"bookName": "DK NJ","competitorId": null,"playerId": null,"impliedProbability": 0.62963,"marketId": "21790020","outcomeId": "2670489207","bookParentId": null,"deeplinkId": "ML2670489207"}],"spread": [{"side": "home","teamId": 156,"odds": -100,"decimalOdds": 2.0,"line": -3.5,"bookId": 69,"bookName": "FanDuel NJ","competitorId": null,"playerId": null,"impliedProbability": 0.5,"marketId": "21790021","outcomeId": "2669500983","bookParentId": null,"deeplinkId": "ML2669500983"}]},"lineMovement": {"moneyline": [{"side": "home","teamId": 156,"competitorId": null,"playerId": null,"openingLine": 0,"currentLine": 0,"lineDelta": 0,"openingOdds": -210,"currentOdds": -175,"oddsDelta": 35}],"spread": [{"side": "home","teamId": 156,"competitorId": null,"playerId": null,"openingLine": -4.5,"currentLine": -3.5,"lineDelta": 1.0,"openingOdds": -107,"currentOdds": -110,"oddsDelta": -3}],"total": [{"side": "under","teamId": null,"competitorId": null,"playerId": null,"openingLine": 45.5,"currentLine": 44.5,"lineDelta": -1.0,"openingOdds": -115,"currentOdds": -112,"oddsDelta": 3}]},"booksPricing": [{"bookId": 15,"bookName": "Consensus","market": "core_bet_type_6_team_score","period": "event","side": "under","teamId": 129,"competitorId": null,"playerId": null,"opposingCompetitorIds": null,"odds": -112,"decimalOdds": 1.8929,"line": 20.5,"impliedProbability": 0.528302,"isLive": false,"lineStatus": "normal","isAlternate": null,"ticketPercent": null,"moneyPercent": null,"sharpGap": null,"marketId": "21790040","outcomeId": "2849916707","deeplinkId": null,"bookParentId": null,"optionTypeId": 2,"propTypeId": 166,"oddsCoefficientScore": null,"eventId": 290843,"eventType": "game"},{"bookId": 15,"bookName": "Consensus","market": "core_bet_type_6_team_score","period": "event","side": "under","teamId": 156,"competitorId": null,"playerId": null,"opposingCompetitorIds": null,"odds": 105,"decimalOdds": 2.05,"line": 23.5,"impliedProbability": 0.487805,"isLive": false,"lineStatus": "normal","isAlternate": null,"ticketPercent": null,"moneyPercent": null,"sharpGap": null,"marketId": "21790042","outcomeId": "2849916711","deeplinkId": null,"bookParentId": null,"optionTypeId": 2,"propTypeId": 166,"oddsCoefficientScore": null,"eventId": 290843,"eventType": "game"}],"result": {"winner": "home","againstTheSpread": "away","overUnder": "under","spreadMargin": -0.5,"totalLine": 44.5,"totalPoints": 23},"ranks": null,"lastPlay": {"text": "End Game","type": "game_over","clock": "0:00","isRedzone": false,"possession": 156,"homeWinPct": null,"overWinPct": null,"homeSpreadWinPct": null},"players": [{"playerId": 7047,"name": "Greg Van Roten","lastName": "Van Roten","abbreviation": "G.Van Roten","jersey": "70","position": "OL","primaryPosition": "OL","teamId": 129,"image": "https://assets.actionnetwork.com/200x200/a1c3e0a9f8fc484696450eec6043f60d.png","handedness": null}],"playerStats": {"away": [{"punts": {"srId": "sr:player:1221966","yards": 177,"blocked": 0,"longest": 46,"attempts": 4,"avgYards": 44.25,"hangTime": 0,"inside20": 3,"netYards": 168,"touchbacks": 0,"returnYards": 9,"avgHangTime": 0,"avgNetYards": 42},"playerId": 111934,"playerName": "Mitch Wishnowsky"},{"defense": {"sacks": 0,"srId": "sr:player:1235506","tloss": 0,"assists": 1,"blitzes": 0,"hurries": 0,"qbHits": 0,"tackles": 3,"combined": 4,"safeties": 0,"defComps": 0,"spBlocks": 0,"knockdowns": 0,"sackYards": 0,"spAssists": 0,"spTackles": 0,"defTargets": 0,"tlossYards": 0,"miscAssists": 0,"miscTackles": 0,"battedPasses": 0,"interceptions": 0,"forcedFumbles": 0,"missedTackles": 0,"passesDefended": 0,"fumbleRecoveries": 0,"spForcedFumbles": 0,"miscForcedFumbles": 0,"spFumbleRecoveries": 0,"miscFumbleRecoveries": 0,"spOppFumbleRecoveries": 0,"spOwnFumbleRecoveries": 0},"playerId": 195122,"puntReturns": {"srId": "sr:player:1235506","yards": 0,"number": 0,"avgYards": 0,"touchdowns": 0,"faircatches": 3},"playerName": "Marcus Jones"},{"defense": {"sacks": 0,"srId": "sr:player:1859410","tloss": 0,"assists": 0,"blitzes": 0,"hurries": 0,"qbHits": 0,"tackles": 0,"combined": 0,"safeties": 0,"defComps": 0,"spBlocks": 0,"knockdowns": 0,"sackYards": 0,"spAssists": 0,"spTackles": 0,"defTargets": 0,"tlossYards": 0,"miscAssists": 0,"miscTackles": 1,"battedPasses": 0,"interceptions": 0,"forcedFumbles": 0,"missedTackles": 0,"passesDefended": 0,"fumbleRecoveries": 0,"spForcedFumbles": 0,"miscForcedFumbles": 0,"spFumbleRecoveries": 0,"miscFumbleRecoveries": 0,"spOppFumbleRecoveries": 0,"spOwnFumbleRecoveries": 0},"playerId": 242048,"receiving": {"srId": "sr:player:1859410","yards": 20,"longest": 8,"targets": 7,"airYards": -1,"avgYards": 4,"receptions": 5,"touchdowns": 0,"firstDowns": 2,"brokenTackles": 0,"droppedPasses": 0,"redzoneTargets": 0,"catchablePasses": 0,"yardsAfterCatch": 21,"yardsAfterContact": 0},"playerName": "DeMario Douglas"},{"passing": {"sacks": 3,"srId": "sr:player:2166974","yards": 178,"rating": 54.9,"spikes": 0,"blitzes": 0,"cmpPct": 69.697,"hurries": 0,"longest": 19,"attempts": 33,"airYards": 67,"avgYards": 5.394,"knockdowns": 0,"sackYards": 10,"touchdowns": 1,"completions": 23,"firstDowns": 9,"pocketTime": 0,"poorThrows": 0,"throwAways": 0,"battedPasses": 0,"interceptions": 3,"droppedPasses": 0,"intTouchdowns": 0,"avgPocketTime": 0,"defendedPasses": 0,"onTargetThrows": 0,"redzoneAttempts": 2,"longestTouchdown": 2},"rushing": {"srId": "sr:player:2166974","tlost": 0,"yards": 47,"longest": 16,"attempts": 7,"avgYards": 6.714,"scrambles": 6,"touchdowns": 0,"firstDowns": 5,"kneelDowns": 0,"tlostYards": 0,"brokenTackles": 0,"redzoneAttempts": 0,"yardsAfterContact": 0},"playerId": 277040,"playerName": "Drake Maye"},{"playerId": 305047,"kickReturns": {"srId": "sr:player:2077821","yards": 58,"number": 2,"longest": 29,"avgYards": 29,"touchdowns": 0,"faircatches": 0},"playerName": "Kyle Williams"},{"kickoffs": {"srId": "sr:player:2158118","yards": 192,"number": 3,"endzone": 1,"inside20": 0,"touchbacks": 0,"squibKicks": 0,"returnYards": 80,"outOfBounds": 0,"totalEndzone": 1,"onsideAttempts": 0,"onsideSuccesses": 0},"playerId": 305181,"fieldGoals": {"pct": 100,"made": 1,"srId": "sr:player:2158118","yards": 50,"missed": 0,"blocked": 0,"longest": 50,"made19": 0,"made29": 0,"made39": 0,"made49": 0,"made50": 1,"attempts": 1,"avgYards": 50,"attempts19": 0,"attempts29": 0,"attempts39": 0,"attempts49": 0,"attempts50": 1},"extraPoints": {"kicks": {"pct": 100,"made": 1,"srId": "sr:player:2158118","missed": 0,"blocked": 0,"attempts": 1}},"playerName": "Andy Borregales"},{"playerId": 334028,"receiving": {"srId": "sr:player:2300709","yards": 2,"longest": 2,"targets": 1,"airYards": 2,"avgYards": 2,"receptions": 1,"touchdowns": 1,"firstDowns": 1,"brokenTackles": 0,"droppedPasses": 0,"redzoneTargets": 1,"catchablePasses": 0,"longestTouchdown": 2,"yardsAfterCatch": 0,"yardsAfterContact": 0},"playerName": "Eli Raridon"}],"home": [{"defense": {"sacks": 0,"srId": "sr:player:1195944","tloss": 2,"assists": 2,"blitzes": 0,"hurries": 0,"qbHits": 0,"tackles": 4,"combined": 6,"safeties": 0,"defComps": 0,"spBlocks": 0,"knockdowns": 0,"sackYards": 0,"spAssists": 0,"spTackles": 0,"defTargets": 0,"tlossYards": 3,"miscAssists": 0,"miscTackles": 0,"battedPasses": 0,"interceptions": 1,"forcedFumbles": 0,"missedTackles": 0,"passesDefended": 1,"fumbleRecoveries": 0,"spForcedFumbles": 0,"miscForcedFumbles": 0,"spFumbleRecoveries": 0,"miscFumbleRecoveries": 0,"spOppFumbleRecoveries": 0,"spOwnFumbleRecoveries": 0},"playerId": 111889,"intReturns": {"srId": "sr:player:1195944","yards": 0,"number": 1,"longest": 0,"avgYards": 0,"touchdowns": 0},"playerName": "Julian Love"},{"playerId": 195610,"receiving": {"srId": "sr:player:1239774","yards": 4,"longest": 4,"targets": 3,"airYards": 2,"avgYards": 4,"receptions": 1,"touchdowns": 0,"firstDowns": 0,"brokenTackles": 0,"droppedPasses": 0,"redzoneTargets": 0,"catchablePasses": 0,"yardsAfterCatch": 2,"yardsAfterContact": 0},"kickReturns": {"srId": "sr:player:1239774","yards": 80,"number": 3,"longest": 30,"avgYards": 26.667,"touchdowns": 0,"faircatches": 0},"puntReturns": {"srId": "sr:player:1239774","yards": 9,"number": 1,"longest": 9,"avgYards": 9,"touchdowns": 0,"faircatches": 3},"playerName": "Rashid Shaheed"}]},"playerSeasonStats": null,"lineups": null,"plays": [{"id": "31978900-acc7-11f1-9e5e-e95b96a5fc90","type": "game_over","period": 4,"clock": "0:00","possession": 156,"down": 1,"distance": 10,"resultDown": 2,"resultDistance": 11,"yardline": 20,"yardlineText": "SEA 20","yardsToEndzone": 80,"resultYardline": 19,"resultYardlineText": "SEA 19","resultYardsToEndzone": 81,"redzone": false,"scoring": false,"homePoints": 13,"awayPoints": 10,"text": "End Game","description": "","homeWinPct": 1,"overWinPct": 0,"homeSpreadWinPct": 0,"situationDisplay": "1st & 10 @ SEA 20"}],"officials": null,"venue": {"id": 342,"name": "Lumen Field","city": "Seattle, WA","state": "WA","surface": "grass","roofType": "outdoor","directionDegrees": 180,"imageUrl": "https://images.actionnetwork.com/blog/2019/08/SEA.jpg","neutralSite": false},"weather": null,"teamStats": {"away": {"summary": {"fumbles": 0,"avgGain": 4.1,"penalties": 7,"turnovers": 3,"playCount": 67,"rushPlays": 31,"totalYards": 277,"lostFumbles": 0,"penaltyYards": 50,"possessionTime": "34:17"},"punts": {"attempts": 4,"avgYards": 44.25},"passing": {"yards": 178,"cmpPct": 69.697,"attempts": 33,"avgYards": 4.667,"netYards": 168,"touchdowns": 1,"completions": 23,"interceptions": 3,"sacks": 3,"sackYards": 10},"fieldGoals": {"made": 1,"attempts": 1},"rushing": {"yards": 109,"attempts": 31,"avgYards": 3.516,"touchdowns": 0},"efficiency": {"redzone": {"pct": 50,"attempts": 2,"successes": 1},"thirddown": {"pct": 31.25,"attempts": 16,"successes": 5},"fourthdown": {"pct": 100,"attempts": 2,"successes": 2}},"firstDowns": {"pass": 9,"rush": 7,"total": 19,"penalty": 3}},"home": {"summary": {"fumbles": 0,"avgGain": 5.9,"penalties": 10,"turnovers": 0,"playCount": 48,"rushPlays": 22,"totalYards": 285,"lostFumbles": 0,"penaltyYards": 98,"possessionTime": "25:43"},"punts": {"attempts": 5,"avgYards": 45.4},"passing": {"yards": 200,"cmpPct": 70.833,"attempts": 24,"avgYards": 7.231,"netYards": 188,"touchdowns": 1,"completions": 17,"interceptions": 0,"sacks": 2,"sackYards": 12},"fieldGoals": {"made": 2,"attempts": 2},"rushing": {"yards": 97,"attempts": 22,"avgYards": 4.409,"touchdowns": 0},"efficiency": {"redzone": {"pct": 0,"attempts": 2,"successes": 0},"thirddown": {"pct": 18.182,"attempts": 11,"successes": 2},"fourthdown": {"pct": 100,"attempts": 1,"successes": 1}},"firstDowns": {"pass": 9,"rush": 4,"total": 13,"penalty": 0}}},"gameMetadataTitle": null,"meta": null,"leagueInfo": {"league": {"id": 1,"sport": "football","name": "nfl","description": "National Football League","logo": "https://static.sprtactn.co/leagues/500/nfl.png","currentSeason": "2026","currentSeasonType": "reg","preSeasonStart": "2026-07-30T07:00:00.000Z","preSeasonEnd": "2026-09-02T06:59:59.000Z","regSeasonStart": "2026-08-30T07:00:00.000Z","regSeasonEnd": "2027-01-18T07:59:59.000Z","postSeasonStart": "2027-01-12T08:00:00.000Z","postSeasonEnd": "2027-03-11T07:59:59.000Z","blacklistDates": ["2025-05-27T07:00:00.000Z"],"calendarInfo": {"pre": [{"abbr": "HoF","week": 0,"label": "Hall of Fame Weekend","endDate": "2026-08-07T21:59Z","startDate": "2026-07-27T01:00Z"}],"reg": [{"abbr": "Week 1","week": 1,"label": "Week 1","endDate": "2026-09-15T04:59Z","startDate": "2026-08-29T02:00Z"}],"post": [{"abbr": "Wild Card","week": 1,"label": "Wild Card","endDate": "2027-01-19T04:59Z","startDate": "2027-01-11T05:00Z"}]},"currentWeek": 1,"updatedAt": "2026-08-30T16:25:20.339Z","isActive": true,"conferences": [{"id": "AFC","display": "AFC"}],"divisions": [{"id": "EAST","display": "East","conferenceId": "AFC"}]},"contentLiveCount": 0},"expertPicks": [{"expertId": 192808,"name": "Doug Ziefel","username": "Dziefel7","profileUrl": "https://www.actionnetwork.com/u/Dziefel7","isVerified": false,"followers": 2926,"pictureUrl": "https://s3.amazonaws.com/tan-user-assets/profile_images/192808/1770134362060-2ee0fa7424f04b648e6a8f80923649ee.jpg","bio": "Editor at Action Network and CFB,CBB,MLB, and College ⚾️ Contributor","isExpert": true,"isInternalExpert": true,"activePicks": 16,"winStreak": {"type": "cold","value": 2,"startDate": "2026-09-12T07:00:00+00:00"},"record": {"window": "last_month","wins": 43,"losses": 61,"pushes": 0,"unitsNet": 0.0693999999999999,"roi": 0.15,"count": 104},"picks": [{"pickId": 552643074,"play": "NE +3.5","market": "spread_away","period": "game","line": 3.5,"odds": -105,"units": 0.53,"unitsNet": 0.5048,"teamId": 129,"playerId": null,"bookId": 4620,"bookName": "theScore Bet NJ","result": "win","isVerified": true,"createdAt": "2026-08-17T13:19:18.165Z","settledAt": "2026-09-10T03:25:55.916Z","updatedAt": "2026-09-10T12:10:01.708Z","status": "settled","startsAt": "2026-09-10T00:20:00.000Z","endsAt": "2026-09-10T06:59:59.999Z","recordDate": "2026-09-09T07:00:00.000Z","isLive": false,"money": 53,"moneyNet": 50.4762,"unitsType": "unit","actualValue": null,"currentProjection": null,"customPickName": null,"customPickType": null,"customPickRules": null,"tag": null,"image": null,"playerImage": null,"marketId": "21790021","outcomeId": "2670793363","gameId": 290843,"competitionId": null,"competitorId": null,"leagueId": 1,"leagueName": "nfl","groupPickId": null,"playerPropProjectionId": null,"userId": 192808,"gameTitle": null,"meta": {"leagueName": "nfl","marketLineId": 2670793363,"isAltMarket": false},"playerName": null},{"pickId": 554897813,"play": "R.Stevenson First Touchdown Scorer Yes","market": "custom","period": "game","line": 0,"odds": 900,"units": 0.1,"unitsNet": -0.1,"teamId": null,"playerId": 166374,"bookId": 69,"bookName": "FanDuel NJ","result": "loss","isVerified": true,"createdAt": "2026-09-10T00:02:50.851Z","settledAt": "2026-09-10T03:25:55.916Z","updatedAt": "2026-09-10T12:10:01.708Z","status": "settled","startsAt": "2026-09-10T00:20:00.000Z","endsAt": "2026-09-10T06:59:59.999Z","recordDate": "2026-09-09T07:00:00.000Z","isLive": false,"money": 1,"moneyNet": -1,"unitsType": "unit","actualValue": "E.Raridon -","currentProjection": null,"customPickName": "First Touchdown Scorer","customPickType": "core_bet_type_56_first_touchdown_scorer","customPickRules": {"options": {"1": {"sortOrder": 1,"optionType": "Yes","abbreviation": null}},"betType": "moneyline","fullName": "First Touchdown Scorer","sortOrder": {"nfl": 7,"ncaaf": 5},"gradingRule": "firstTDScorer","displayTemplate": "{player_full_name} 1st TD {money}"},"tag": null,"image": null,"playerImage": null,"marketId": "23014117","outcomeId": "2752070702","gameId": 290843,"competitionId": null,"competitorId": null,"leagueId": 1,"leagueName": "nfl","groupPickId": null,"playerPropProjectionId": null,"userId": 192808,"gameTitle": null,"meta": {"note": "Boost used","leagueName": "nfl","isAltMarket": false,"optionTypeId": 1},"playerName": "Rhamondre Stevenson"},{"pickId": 554413535,"play": "J.Price u1.5 Recs","market": "custom","period": "game","line": 1.5,"odds": -115,"units": 0.57,"unitsNet": -0.57,"teamId": null,"playerId": 333961,"bookId": 2724,"bookName": "HardRock NJ","result": "loss","isVerified": true,"createdAt": "2026-09-05T20:55:59.517Z","settledAt": "2026-09-10T03:25:55.916Z","updatedAt": "2026-09-10T12:10:01.708Z","status": "settled","startsAt": "2026-09-10T00:20:00.000Z","endsAt": "2026-09-10T06:59:59.999Z","recordDate": "2026-09-09T07:00:00.000Z","isLive": false,"money": 5.7,"moneyNet": -5.7,"unitsType": "unit","actualValue": "2","currentProjection": "2","customPickName": "Recs","customPickType": "core_bet_type_15_receptions","customPickRules": {"options": {"18": {"sortOrder": 1,"optionType": "Over","abbreviation": "o"}},"betType": "total","statKey": ["receiving.receptions"],"fullName": "Receptions","sortOrder": {"nfl": 5,"ncaaf": 3},"propellerConfig": {"range": 15,"enabled": true}},"tag": null,"image": null,"playerImage": null,"marketId": "24937560","outcomeId": "2919355268","gameId": 290843,"competitionId": null,"competitorId": null,"leagueId": 1,"leagueName": "nfl","groupPickId": null,"playerPropProjectionId": 138252561,"userId": 192808,"gameTitle": null,"meta": {"leagueName": "nfl","isAltMarket": false,"optionTypeId": 19,"originalPickId": 554410634},"playerName": "Jadarian Price"}]},{"expertId": 2108497,"name": "Dale Tanhardt","username": "daletanhardt","profileUrl": "https://www.actionnetwork.com/u/daletanhardt","isVerified": false,"followers": 10052,"pictureUrl": "https://s3.amazonaws.com/tan-user-assets/profile_images/2108497/1644070326041-99330090868d11ecb14f8ddaad65961a.jpg","bio": "Greatest NASCAR Bettor in the History of the Universe. Host of DALESCENTER on YouTube. Degenerate NASCAR Guy. Check me out on DubClub to see all of my NASCAR Betting Cards.","isExpert": true,"isInternalExpert": false,"activePicks": 0,"winStreak": {"type": "cold","value": 6,"startDate": "2026-06-14T07:00:00+00:00"},"record": {"window": "last_month","wins": 0,"losses": 10,"pushes": 0,"unitsNet": -6.8,"roi": -100,"count": 10},"picks": [{"pickId": 554887407,"play": "H.Henry 2+ TDs Yes","market": "custom","period": "game","line": 0,"odds": 2700,"units": 0.2,"unitsNet": -0.2,"teamId": null,"playerId": 5794,"bookId": 15,"bookName": "Consensus","result": "loss","isVerified": true,"createdAt": "2026-09-09T23:24:36.116Z","settledAt": "2026-09-10T03:25:56.128Z","updatedAt": "2026-09-10T03:26:32.217Z","status": "settled","startsAt": "2026-09-10T00:20:00.000Z","endsAt": "2026-09-10T06:59:59.999Z","recordDate": "2026-09-09T07:00:00.000Z","isLive": false,"money": 10,"moneyNet": -10,"unitsType": "unit","actualValue": 0,"currentProjection": null,"customPickName": "TDs","customPickType": "core_bet_type_67_to_score_2_or_more_touchdowns","customPickRules": {"options": {"1": {"sortOrder": 1,"optionType": "Yes","abbreviation": null}},"betType": "moneyline","fullName": "To Score 2 or More Touchdowns","sortOrder": {"nfl": 20,"ncaaf": 20},"gradingRule": "twoOrMoreTouchdowns","playerPropProjectionConfig": {"type": "actual_value","enabled": true,"displayStatKey": "TD"}},"tag": null,"image": null,"playerImage": null,"marketId": "23014118","outcomeId": "2752070727","gameId": 290843,"competitionId": null,"competitorId": null,"leagueId": 1,"leagueName": "nfl","groupPickId": null,"playerPropProjectionId": null,"userId": 2108497,"gameTitle": null,"meta": {"leagueName": "nfl","isAltMarket": false,"optionTypeId": 1},"playerName": "Hunter Henry"}]},{"expertId": 3565328,"name": "julian saavedra","username": "theparlayplug","profileUrl": "https://www.actionnetwork.com/u/theparlayplug","isVerified": false,"followers": 3906,"pictureUrl": "https://s3.amazonaws.com/tan-user-assets/profile_images/3565328/1722565447266-4b5f1420507611efb2e60bd2be1518ec.jpg","bio": "🔌 | Winners | Partnership➡@SleeperPicksHq @UnderdogFantasy @ChalkboardHq use code: PLUG","isExpert": true,"isInternalExpert": false,"activePicks": 0,"winStreak": {"type": "cold","value": 2,"startDate": "2026-09-09T07:00:00+00:00"},"record": {"window": "last_month","wins": 0,"losses": 1,"pushes": 0,"unitsNet": -1,"roi": -100,"count": 1},"picks": [{"pickId": 554922201,"play": "NE -110","market": "ml_away","period": "game","line": -110,"odds": -110,"units": 1,"unitsNet": -1,"teamId": 129,"playerId": null,"bookId": 79,"bookName": "bet365 NJ","result": "loss","isVerified": true,"createdAt": "2026-09-10T03:25:48.076Z","settledAt": "2026-09-10T03:25:43.761Z","updatedAt": "2026-09-10T03:25:48.456Z","status": "settled","startsAt": "2026-09-10T00:20:00.000Z","endsAt": "2026-09-10T06:59:59.999Z","recordDate": "2026-09-09T07:00:00.000Z","isLive": false,"money": 1000,"moneyNet": -1000,"unitsType": "unit","actualValue": null,"currentProjection": null,"customPickName": null,"customPickType": null,"customPickRules": null,"tag": null,"image": null,"playerImage": null,"marketId": null,"outcomeId": null,"gameId": 290843,"competitionId": null,"competitorId": null,"leagueId": 1,"leagueName": "nfl","groupPickId": null,"playerPropProjectionId": null,"userId": 3565328,"gameTitle": null,"meta": {"tease": 0,"bookId": 79,"chances": 0,"isSynced": true,"datePlaced": "2026-09-10T00:43:18.128","isSupported": true,"referenceId": "79:3565328:900743015218835280_1"},"playerName": null}]},{"expertId": 4377546,"name": "Charlie DiSturco","username": "charliedisturco","profileUrl": "https://www.actionnetwork.com/u/charliedisturco","isVerified": false,"followers": 1098,"pictureUrl": "https://s3.amazonaws.com/tan-user-assets/profile_images/4377546/1780604139713-9e34c5fa7246460db4f347132cdc7462.jpg","bio": "Just a Jersey Italian that loves to gamble.","isExpert": true,"isInternalExpert": false,"activePicks": 1,"winStreak": {"type": "hot","value": 4,"startDate": "2026-09-10T07:00:00+00:00"},"record": {"window": "last_month","wins": 7,"losses": 19,"pushes": 0,"unitsNet": 0.5225000000000002,"roi": 4.22,"count": 26},"picks": [{"pickId": 554835150,"play": "K.Williams Anytime TD Scorer Yes","market": "custom","period": "game","line": 0,"odds": 1300,"units": 0.25,"unitsNet": 0,"teamId": null,"playerId": 305047,"bookId": 1006,"bookName": "FanDuel NY","result": "loss","isVerified": true,"createdAt": "2026-09-09T18:25:10.925Z","settledAt": "2026-09-10T03:25:55.668Z","updatedAt": "2026-09-10T14:41:36.904Z","status": "settled","startsAt": "2026-09-10T00:20:00.000Z","endsAt": "2026-09-10T06:59:59.999Z","recordDate": "2026-09-09T07:00:00.000Z","isLive": false,"money": 0.25,"moneyNet": 0,"unitsType": "unit","actualValue": 0,"currentProjection": null,"customPickName": "TDs","customPickType": "core_bet_type_62_anytime_touchdown_scorer","customPickRules": {"options": {"1": {"sortOrder": 1,"optionType": "Yes","abbreviation": null}},"betType": "moneyline","fullName": "Anytime Touchdown Scorer","sortOrder": {"nfl": 1,"ncaaf": 4},"gradingRule": "anytimeTDScorer","displayTemplate": "{player_full_name} Anytime TD {money}"},"tag": null,"image": null,"playerImage": null,"marketId": "21804695","outcomeId": "2670531830","gameId": 290843,"competitionId": null,"competitorId": null,"leagueId": 1,"leagueName": "nfl","groupPickId": null,"playerPropProjectionId": null,"userId": 4377546,"gameTitle": null,"meta": {"note": "Using this as my free bet. FanDuel offering bonus for 1+ pt. Rolling the dice with it here on Kyle w/ SEA safeties banged up","isFree": true,"leagueName": "nfl","isAltMarket": false,"optionTypeId": 1},"playerName": "Kyle Williams"},{"pickId": 554777038,"play": "H.Henry o33.5 Rec Yds","market": "custom","period": "game","line": 33.5,"odds": -113,"units": 1.13,"unitsNet": -1.13,"teamId": null,"playerId": 5794,"bookId": 1006,"bookName": "FanDuel NY","result": "loss","isVerified": true,"createdAt": "2026-09-09T05:01:42.927Z","settledAt": "2026-09-10T03:25:55.668Z","updatedAt": "2026-09-10T14:41:36.904Z","status": "settled","startsAt": "2026-09-10T00:20:00.000Z","endsAt": "2026-09-10T06:59:59.999Z","recordDate": "2026-09-09T07:00:00.000Z","isLive": false,"money": 1.13,"moneyNet": -1.13,"unitsType": "unit","actualValue": "26","currentProjection": "26","customPickName": "Rec Yds","customPickType": "core_bet_type_16_receiving_yards","customPickRules": {"options": {"20": {"sortOrder": 1,"optionType": "Over","abbreviation": "o"}},"betType": "total","statKey": ["receiving.yards"],"fullName": "Receiving Yards","sortOrder": {"nfl": 3,"ncaaf": 1},"propellerConfig": {"range": 45,"enabled": true}},"tag": "#Tailing","image": null,"playerImage": null,"marketId": "22223928","outcomeId": "2751994592","gameId": 290843,"competitionId": null,"competitorId": null,"leagueId": 1,"leagueName": "nfl","groupPickId": null,"playerPropProjectionId": 138252574,"userId": 4377546,"gameTitle": null,"meta": {"note": "#Tailing @Stuckey2","leagueName": "nfl","isAltMarket": false,"userMentions": [{"id": 49763,"username": "Stuckey2"}],"optionTypeId": 20},"playerName": "Hunter Henry"}]}],"lineMovementHistory": [{"bookId": 15,"bookName": "Consensus","market": "core_bet_type_6_team_score","period": "event","side": "under","teamId": 129,"competitorId": null,"playerId": null,"currentOdds": -112,"currentDecimalOdds": 1.8929,"currentLine": 20.5,"currentImpliedProbability": 0.528302,"currentLineStatus": "normal","isLive": false,"ticketPercent": 0,"moneyPercent": 0,"sharpGap": 0,"marketId": "21790040","outcomeId": "2849916707","deeplinkId": null,"optionTypeId": 2,"propTypeId": 166,"oddsCoefficientScore": null,"eventId": 290843,"eventType": "game","history": [{"odds": -115,"line": 20.5,"recordedAt": "2026-08-20T00:26:25.114633Z","lineStatus": "opener"},{"odds": -115,"line": 20.5,"recordedAt": "2026-08-20T00:28:25.114451Z","lineStatus": "normal"}]}],"props": {"gameId": 290843,"playerProps": [{"marketId": "25116884","propType": "core_bet_type_530_1104_player_receiving_yards_milestones_20_or_more","propName": "20+ Receiving Yards","lineType": null,"period": "firsthalf","customPickTypeName": "20+ Receiving Yards","customPickTypeDisplayName": "H.Henry {optionTypeAbbr}{value} 20+ Receiving Yards","eventType": "game","teamId": 129,"playerId": 5794,"playerAbbreviation": "H.Henry","playerLastName": "Henry","selections": [{"bookId": 15,"bookName": "Consensus","playerId": 5794,"player": {"playerId": 5794,"name": "Hunter Henry","abbreviation": "H.Henry","teamId": 129,"position": "NE - TE","image": "https://assets.actionnetwork.com/200x200/97f6b7c2b951446b909af12b0f231dac.png","lastName": "Henry","actualValues": null},"side": "noside","teamId": null,"competitorId": null,"opposingCompetitorIds": null,"odds": -310,"decimalOdds": 1.3226,"line": 20,"impliedProbability": 0.756098,"isLive": false,"lineStatus": "normal","isAlternate": null,"ticketPercent": null,"moneyPercent": null,"sharpGap": null,"marketId": "23012590","outcomeId": "2751994640","deeplinkId": null,"bookParentId": null,"optionTypeId": 1,"propTypeId": 298,"oddsCoefficientScore": null,"eventId": 290843,"eventType": "game","period": "event"}]}],"gameProps": [{"marketId": "21790043","propType": "core_bet_type_6_team_score","propName": "Team Total","lineType": "total","period": "firsthalf","customPickTypeName": "Team Total","customPickTypeDisplayName": "{optionTypeAbbr}{value} Team Total","eventType": "game","teamId": null,"playerId": null,"playerAbbreviation": null,"playerLastName": null,"selections": [{"bookId": 15,"bookName": "Consensus","playerId": null,"player": null,"side": "under","teamId": 129,"competitorId": null,"opposingCompetitorIds": null,"odds": -109,"decimalOdds": 1.9174,"line": 9,"impliedProbability": 0.521531,"isLive": false,"lineStatus": "normal","isAlternate": null,"ticketPercent": null,"moneyPercent": null,"sharpGap": null,"marketId": "21790043","outcomeId": "2849916720","deeplinkId": null,"bookParentId": null,"optionTypeId": 2,"propTypeId": 166,"oddsCoefficientScore": null,"eventId": 290843,"eventType": "game","period": "firsthalf"}]}],"propOrder": [{"propOrderId": 2002,"propType": "core_bet_type_62_anytime_touchdown_scorer","name": "Anytime TD Scorer","sortOrder": 1}],"marketRules": {"coreBetType5241036PlayerPassingTouchdownsMilestones3OrMore": {"type": "core_bet_type_524_1036_player_passing_touchdowns_milestones_3_or_more","rules": {"options": {"1": {"sortOrder": 1,"optionType": "Yes","abbreviation": null}},"fullName": "Player Passing Touchdowns Milestones","milestone": {"statKey": "passing.touchdowns","threshold": 3},"sortOrder": {"nfl": 20,"ncaaf": 20},"gradingRule": "playerStatMilestone"},"customPickName": "3+ Passing Touchdowns"},"coreBetType61CoinTossOutcome": {"type": "core_bet_type_61_coin_toss_outcome","rules": {"options": {"339": {"sortOrder": 1,"optionType": "Heads","abbreviation": null,"gradingRule": "heads"}},"fullName": "Coin Toss Outcome","sortOrder": {"nfl": 2},"gradingRule": "coinTossOutcome","scoreboardConfig": {"dataType": "contest","displayType": "grid_2","displayTemplate": "grid_2"}},"customPickName": "Coin Toss Outcome"},"coreBetType65Interceptions": {"type": "core_bet_type_65_interceptions","rules": {"options": {"400": {"sortOrder": 1,"optionType": "Over","abbreviation": "o"}},"betType": "total","statKey": ["passing.interceptions"],"fullName": "Interceptions","sortOrder": {"nfl": 13},"propellerConfig": {"range": 5,"enabled": true}},"customPickName": "Int"},"coreBetType67ToScore2OrMoreTouchdowns": {"type": "core_bet_type_67_to_score_2_or_more_touchdowns","rules": {"options": {"1": {"sortOrder": 1,"optionType": "Yes","abbreviation": null}},"betType": "moneyline","fullName": "To Score 2 or More Touchdowns","sortOrder": {"nfl": 20,"ncaaf": 20},"gradingRule": "twoOrMoreTouchdowns","playerPropProjectionConfig": {"type": "actual_value","enabled": true,"displayStatKey": "TD"}},"customPickName": "2+ TDs"},"coreBetType6TeamScore": {"type": "core_bet_type_6_team_score","rules": {"options": {"1": {"side": "over","sortOrder": 1,"optionType": "Over","abbreviation": "o"}},"betType": "total","sortOrder": {"aaf": 10,"epl": 10,"mlb": 10,"mls": 10,"nba": 10,"nfl": 10,"nhl": 10,"xfl": 10,"euro": 10,"wnba": 10,"ncaab": 10,"ncaaf": 10,"europa": 10,"laliga": 10,"ligue1": 10,"seriea": 10,"worldcup": 10,"champions": 10,"bundesliga": 10,"clubWorldcup": 10,"womensWorldcup": 10,"mensOlympicHockey": 10,"womensOlympicHockey": 10},"gradingRule": "teamTotal","scoreboardConfig": {"dataType": "team","multiplePeriods": true}},"customPickName": "Team Total"},"coreBetType965PlayerToHaveMostPassingYards": {"type": "core_bet_type_965_player_to_have_most_passing_yards","rules": {"options": {"1": {"sortOrder": 1,"optionType": "Yes","abbreviation": null}},"betType": "moneyline","fullName": "Player To Have Most Passing Yards","sortOrder": {"nfl": 20,"ncaaf": 20},"displayTemplate": "{player_full_name} Most Passing Yards {money}","eventLeaderStatKeys": ["passing.yards"]},"customPickName": "Player To Have Most Passing Yards"}}}}
Baseball rows: named lineups, pitching, umpires and play-by-play
Baseball fills blocks that football leaves thin, and every player id in them carries its name:
- final
lineups, with substitutes - the probable, starting, winning, losing and saving pitchers, inside
score.pitching - the umpiring crew, each with their own betting record
- season stat lines for every player
- plays that name the batter and the pitcher
From San Diego Padres at Colorado Rockies, a game that started at 8:40pm Eastern. Trimmed as follows:
lineups.{side}: 1 of 16officials: 1 of 4officials[].results: 1 of 3officials[].results[].records: 1 of 2playerSeasonStats.{side}: 1 of 18plays: 1 of 97plays[].pitches: 1 of 2players: 1 of 31
{"gameId": 294990,"league": "mlb","lineups": {"away": [{"order": 0,"inning": 0,"position": "P","suborder": 0,"playerId": 87829,"inningHalf": null,"playerName": "Casey Mize"}],"home": [{"order": 0,"inning": 0,"position": "P","suborder": 0,"playerId": 299395,"inningHalf": null,"playerName": "Tomoyuki Sugano"}],"awayConfirmed": true,"homeConfirmed": true},"officials": [{"id": 61,"position": "1B","fullName": "Andy Fletcher","lastName": "Fletcher","firstName": "Andy","results": [{"type": "Moneyline","records": [{"type": "Away","wins": 5}],"units": 8.11}]}],"playerSeasonStats": {"away": [{"playerId": 2904,"hitting": {"ab": 538,"ap": 621,"abk": 4.076,"avg": 0.221,"bbk": 0.553,"bip": 387,"iso": 0.192,"lob": 230,"obp": 0.311,"ops": 0.724,"rbi": 82,"slg": 0.413,"xbh": 49,"abhr": 19.926,"bbpa": 0.118,"gofo": 1.03,"outs": {"fo": 85,"go": 141,"lo": 41,"po": 29,"fidp": 2,"gidp": 19,"lidp": 0,"klook": 26,"kswing": 106,"ktotal": 132,"sacfly": 8,"sachit": 1},"runs": {"total": 77},"seca": 0.329,"babip": 0.238,"games": {"play": 145,"start": 145,"finish": 0,"complete": 137},"popup": 30,"steal": {"pct": 0.556,"caught": 4,"stolen": 5,"pickoff": 0},"onbase": {"d": 22,"h": 119,"s": 70,"t": 0,"bb": 70,"ci": 0,"fc": 12,"hr": 27,"tb": 222,"hbp": 1,"ibb": 3,"roe": 6,"rov": 0,"cycle": 0},"abRisp": 124,"flyball": 116,"outcome": {"ball": 877,"foul": 456,"iball": 0,"klook": 376,"kswing": 298,"ktotal": 674,"dirtball": 38},"hitRisp": 29,"rbi2out": 29,"teamLob": 94,"linedrive": 104,"groundball": 165,"pitchCount": 2461,"lobRisp2out": 38},"pitching": {},"playerName": "Manny Machado"},{"playerId": 58592,"hitting": {},"pitching": {"bf": 328,"bk": 0,"k9": 11.157,"wp": 2,"era": "2.789","kbb": 4.17,"lob": 153,"oba": 0.205,"gofo": 1.816,"ip1": 242,"ip2": 80.2,"outs": {"fo": 26,"go": 89,"lo": 16,"po": 7,"fidp": 0,"gidp": 6,"lidp": 1,"klook": 17,"kswing": 83,"ktotal": 100,"sacfly": 2,"sachit": 0},"runs": {"total": 30,"earned": 25,"unearned": 5},"whip": 1.0537,"games": {"svo": 8,"win": 9,"hold": 25,"loss": 3,"play": 70,"save": 3,"start": 0,"finish": 9,"qstart": 0,"shutout": 0,"complete": 0,"teamWin": 0,"teamLoss": 0,"blownSave": 5},"steal": {"caught": 4,"stolen": 12,"pickoff": 1},"onbase": {"d": 8,"h": 61,"s": 49,"t": 0,"bb": 17,"ci": 0,"fc": 18,"hr": 4,"tb": 81,"hbp": 5,"ibb": 7,"roe": 3,"rov": 0},"outcome": {"ball": 364,"foul": 232,"iball": 0,"klook": 196,"kswing": 224,"ktotal": 420,"dirtball": 26},"pitchCount": 1246},"playerName": "Adrian Morejon"}],"home": [{"playerId": 4460,"hitting": {"ab": 373,"ap": 403,"abk": 3.36,"avg": 0.244,"bbk": 0.18,"bip": 247,"iso": 0.244,"lob": 146,"obp": 0.283,"ops": 0.771,"rbi": 64,"slg": 0.488,"xbh": 43,"abhr": 16.955,"bbpa": 0.05,"gofo": 0.64,"outs": {"fo": 72,"go": 67,"lo": 15,"po": 24,"fidp": 0,"gidp": 4,"lidp": 1,"klook": 15,"kswing": 96,"ktotal": 111,"sacfly": 7,"sachit": 0},"runs": {"total": 47},"seca": 0.298,"babip": 0.279,"games": {"play": 107,"start": 92,"finish": 13,"complete": 79},"popup": 25,"steal": {"pct": 0.5,"caught": 1,"stolen": 1,"pickoff": 2},"onbase": {"d": 17,"h": 91,"s": 48,"t": 4,"bb": 20,"ci": 0,"fc": 3,"hr": 22,"tb": 182,"hbp": 3,"ibb": 0,"roe": 1,"rov": 0,"cycle": 0},"abRisp": 73,"flyball": 100,"outcome": {"ball": 400,"foul": 310,"iball": 0,"klook": 152,"kswing": 249,"ktotal": 401,"dirtball": 29},"hitRisp": 20,"rbi2out": 27,"teamLob": 62,"linedrive": 52,"groundball": 92,"pitchCount": 1412,"lobRisp2out": 31},"pitching": {},"playerName": "Mickey Moniak"}]},"plays": [{"id": "b3e21cad-9462-4770-b2dc-04a0038b2687_294990","period": 9,"scoring": false,"homePoints": 7,"awayPoints": 8,"half": "bottom","text": "Adael Amador grounds out to shallow infield, Manny Machado to Ty France.","atBat": 123550,"pitcher": 189973,"runners": [147482],"pitches": ["c3745f0f-ff5c-4e28-a057-6f0646728516"],"outs": 3,"homeWinPct": 0.1747563,"overWinPct": 1,"homeSpreadWinPct": 0.6521311,"atBatName": "Adael Amador","pitcherName": "Mason Miller"}],"players": [{"playerId": 2904,"name": "Manny Machado","lastName": "Machado","abbreviation": "M.Machado","jersey": "13","position": "3B","primaryPosition": "3B","teamId": 211,"image": "https://assets.actionnetwork.com/200x200/ba42554a63f4409d8c625eff89d65e1b.png","handedness": {"bat": "R","throw": "R"}}],"score": {"pitching": {"away": {"probableId": 87829,"startingId": 87829,"probableName": "Casey Mize","startingName": "Casey Mize"},"home": {"probableId": 299395,"startingId": 299395,"probableName": "Tomoyuki Sugano","startingName": "Tomoyuki Sugano"},"winId": 87829,"lossId": 299395,"saveId": 189973,"winName": "Casey Mize","lossName": "Tomoyuki Sugano","saveName": "Mason Miller"},"teamStats": {"away": {"hits": 13,"runs": 8,"errors": 0},"home": {"hits": 14,"runs": 7,"errors": 0}},"awayFirstFivePoints": 6,"homeFirstFivePoints": 2}}
Upcoming games also carry a game-time forecast in weather. Both examples above are finished games, so theirs is empty; this is a real forecast from a scheduled game:
{"gameId": 289020,"league": "ncaaf","weather": {"temperature": 76.71,"humidity": 0.83,"windSpeed": 4.83,"windDegrees": 297,"adjustedWindDegrees": 117,"clouds": 0.78,"precipitation": 0.28,"description": "Drizzle","precipitationType": null,"windDirectionText": null,"date": "2026-09-17T23:00:00+00:00","updatedAt": "2026-09-14T23:59:12.751414+00:00","type": "light-rain","icon": "https://assets.actionnetwork.com/739473_light-rain.png","windDirection": "WNW"}}
Example match or fight row
Tennis, UFC and boxing return one row per match or fight, with competitors in place of teams and eventType: "competition". This WTA match carries all 28 fields. gameUrl is left empty for these events.
booksPricing: 2 of 28leagueInfo.league.blacklistDates: 2 of 120
{"gameId": 114016,"eventType": "competition","gameUrl": null,"league": "wta","leagueId": 23,"leagueName": "wta","coreId": 236906340,"season": 2026,"title": "WTA Guadalajara, Mexico - Round Of 32","startTime": "2026-09-14T18:00:00.000Z","status": "scheduled","statusDetail": null,"isLive": false,"isComplete": false,"competitors": [{"competitorId": 270507,"playerId": 125771,"side": "away","type": "player","player": {"name": "Kayla Day","abbreviation": "DAY","image": "https://assets.actionnetwork.com/655755_kday.jfif","nationality": "USA","coreId": 81295,"attributes": {"hand": "L"}}},{"competitorId": 270508,"playerId": 172880,"side": "home","type": "player","player": {"name": "Elvina Kalieva","abbreviation": "KAL","image": "https://assets.actionnetwork.com/308320_kalieva.jpeg","nationality": "USA","coreId": 87222,"attributes": {"hand": "R"}}}],"winningCompetitorId": null,"venue": null,"score": null,"consensus": {"moneyline": {"sides": [{"side": "noside","teamId": null,"competitorId": 270507,"playerId": 125771,"odds": -173,"decimalOdds": 1.578,"line": 0,"impliedProbability": 0.6337,"noVigProbability": 0.594131,"ticketPercent": null,"moneyPercent": null,"sharpGap": null,"marketId": "25550201","outcomeId": "2954831561"},{"side": "noside","teamId": null,"competitorId": 270508,"playerId": 172880,"odds": 131,"decimalOdds": 2.31,"line": 0,"impliedProbability": 0.4329,"noVigProbability": 0.405869,"ticketPercent": null,"moneyPercent": null,"sharpGap": null,"marketId": "25550201","outcomeId": "2954831563"}],"holdPercent": 6.2441,"overroundPercent": 6.66},"spread": {"sides": [{"side": "noside","teamId": null,"competitorId": 270508,"playerId": 172880,"odds": -145,"decimalOdds": 1.6897,"line": 3.5,"impliedProbability": 0.591837,"noVigProbability": 0.542056,"ticketPercent": null,"moneyPercent": null,"sharpGap": null,"marketId": "25571713","outcomeId": "2954831908"},{"side": "noside","teamId": null,"competitorId": 270507,"playerId": 125771,"odds": 100,"decimalOdds": 2.0,"line": -3.5,"impliedProbability": 0.5,"noVigProbability": 0.457944,"ticketPercent": null,"moneyPercent": null,"sharpGap": null,"marketId": "25571713","outcomeId": "2954831905"}],"holdPercent": 8.4112,"overroundPercent": 9.1837},"total": {"sides": [{"side": "over","teamId": null,"competitorId": null,"playerId": null,"odds": -120,"decimalOdds": 1.8333,"line": 21.5,"impliedProbability": 0.545455,"noVigProbability": 0.5,"ticketPercent": null,"moneyPercent": null,"sharpGap": null,"marketId": "25562056","outcomeId": "2954831694"},{"side": "under","teamId": null,"competitorId": null,"playerId": null,"odds": -120,"decimalOdds": 1.8333,"line": 21.5,"impliedProbability": 0.545455,"noVigProbability": 0.5,"ticketPercent": null,"moneyPercent": null,"sharpGap": null,"marketId": "25562056","outcomeId": "2954831696"}],"holdPercent": 8.3333,"overroundPercent": 9.0909}},"bestPrices": {"moneyline": [{"side": "noside","teamId": null,"odds": -177,"decimalOdds": 1.565,"line": 0,"bookId": 71,"bookName": "BetRivers NJ","competitorId": 270507,"playerId": 125771,"impliedProbability": 0.638989,"marketId": "25550201","outcomeId": "2959943799","bookParentId": 5,"deeplinkId": "ML2959943799"},{"side": "noside","teamId": null,"odds": 140,"decimalOdds": 2.4,"line": 0,"bookId": 71,"bookName": "BetRivers NJ","competitorId": 270508,"playerId": 172880,"impliedProbability": 0.416667,"marketId": "25550201","outcomeId": "2959943798","bookParentId": 5,"deeplinkId": "ML2959943798"}],"spread": [{"side": "noside","teamId": null,"odds": 114,"decimalOdds": 2.14,"line": 1.5,"bookId": 71,"bookName": "BetRivers NJ","competitorId": 270508,"playerId": 172880,"impliedProbability": 0.46729,"marketId": "25571713","outcomeId": "2959977691","bookParentId": 5,"deeplinkId": "ML2959977691"},{"side": "noside","teamId": null,"odds": 100,"decimalOdds": 2.0,"line": -3.5,"bookId": 75,"bookName": "BetMGM NJ","competitorId": 270507,"playerId": 125771,"impliedProbability": 0.5,"marketId": "25571713","outcomeId": "2957987842","bookParentId": 1,"deeplinkId": "ML2957987842"}],"total": [{"side": "under","teamId": null,"odds": -108,"decimalOdds": 1.9259,"line": 21.5,"bookId": 71,"bookName": "BetRivers NJ","competitorId": null,"playerId": null,"impliedProbability": 0.519231,"marketId": "25562056","outcomeId": "2959943804","bookParentId": 5,"deeplinkId": "ML2959943804"},{"side": "over","teamId": null,"odds": -120,"decimalOdds": 1.8333,"line": 21.5,"bookId": 75,"bookName": "BetMGM NJ","competitorId": null,"playerId": null,"impliedProbability": 0.545455,"marketId": "25562056","outcomeId": "2957987843","bookParentId": 1,"deeplinkId": "ML2957987843"}]},"lineMovement": {"moneyline": [{"side": "noside","teamId": null,"competitorId": 270507,"playerId": 125771,"openingLine": 0,"currentLine": 0,"lineDelta": 0,"openingOdds": -200,"currentOdds": -173,"oddsDelta": 27},{"side": "noside","teamId": null,"competitorId": 270508,"playerId": 172880,"openingLine": 0,"currentLine": 0,"lineDelta": 0,"openingOdds": 160,"currentOdds": 131,"oddsDelta": -29}],"spread": [{"side": "noside","teamId": null,"competitorId": 270508,"playerId": 172880,"openingLine": 3.5,"currentLine": 3.5,"lineDelta": 0.0,"openingOdds": -125,"currentOdds": -145,"oddsDelta": -20},{"side": "noside","teamId": null,"competitorId": 270507,"playerId": 125771,"openingLine": -3.5,"currentLine": -3.5,"lineDelta": 0.0,"openingOdds": -111,"currentOdds": 100,"oddsDelta": 211}],"total": [{"side": "over","teamId": null,"competitorId": null,"playerId": null,"openingLine": 21.5,"currentLine": 21.5,"lineDelta": 0.0,"openingOdds": -125,"currentOdds": -120,"oddsDelta": 5},{"side": "under","teamId": null,"competitorId": null,"playerId": null,"openingLine": 21.5,"currentLine": 21.5,"lineDelta": 0.0,"openingOdds": -116,"currentOdds": -120,"oddsDelta": -4}]},"booksPricing": [{"bookId": 15,"bookName": "Consensus","market": "moneyline","period": "event","side": "noside","teamId": null,"competitorId": 270507,"playerId": 125771,"opposingCompetitorIds": null,"odds": -173,"decimalOdds": 1.578,"line": 0,"impliedProbability": 0.6337,"isLive": false,"lineStatus": "normal","isAlternate": false,"ticketPercent": null,"moneyPercent": null,"sharpGap": null,"marketId": "25550201","outcomeId": "2954831561","deeplinkId": null,"bookParentId": 18,"optionTypeId": null,"propTypeId": null,"oddsCoefficientScore": null,"eventId": 114016,"eventType": "competition"},{"bookId": 15,"bookName": "Consensus","market": "moneyline","period": "event","side": "noside","teamId": null,"competitorId": 270508,"playerId": 172880,"opposingCompetitorIds": null,"odds": 131,"decimalOdds": 2.31,"line": 0,"impliedProbability": 0.4329,"isLive": false,"lineStatus": "normal","isAlternate": false,"ticketPercent": null,"moneyPercent": null,"sharpGap": null,"marketId": "25550201","outcomeId": "2954831563","deeplinkId": null,"bookParentId": 18,"optionTypeId": null,"propTypeId": null,"oddsCoefficientScore": null,"eventId": 114016,"eventType": "competition"}],"result": null,"meta": {"title": "WTA Guadalajara, Mexico - Round Of 32"},"leagueInfo": {"league": {"id": 23,"sport": "tennis","name": "wta","description": "WTA Tour","logo": "https://via.placeholder.com/200","currentSeason": "2026","currentSeasonType": "reg","preSeasonStart": null,"preSeasonEnd": null,"regSeasonStart": "2026-01-01T08:00:00.000Z","regSeasonEnd": "2027-01-03T07:59:59.000Z","postSeasonStart": null,"postSeasonEnd": null,"blacklistDates": ["2026-01-28T08:00:00.000Z","2026-03-14T07:00:00.000Z"],"calendarInfo": {},"currentWeek": -1,"updatedAt": "2025-12-30T21:55:01.566Z","isActive": true,"conferences": [],"divisions": []},"contentLiveCount": 0},"expertPicks": [{"expertId": 3801142,"name": "Wags Wins","username": "wagsischasing","profileUrl": "https://www.actionnetwork.com/u/wagsischasing","isVerified": false,"followers": 9326,"pictureUrl": "https://s3.amazonaws.com/tan-user-assets/profile_images/3801142/1729035051364-83e992408b4d11ef839f7b790295a264.jpg","bio": "Unit size reflects % of bankroll. (1U = 1%) \n\nStrongest sports are Tennis, NHL, and MLB, but there is ALWAYS value on the table.","isExpert": true,"isInternalExpert": false,"activePicks": 9,"winStreak": {"type": "cold","value": 3,"startDate": "2026-09-11T07:00:00+00:00"},"record": {"window": "last_month","wins": 40,"losses": 36,"pushes": 0,"unitsNet": 1.4955999999999987,"roi": 1.45,"count": 76},"picks": [{"pickId": 555852633,"play": "Elvina Kalieva +150 vs Kayla Day","market": "ml_home","period": "competition","line": 150,"odds": 150,"units": 1,"unitsNet": 0,"teamId": null,"playerId": null,"bookId": 3323,"bookName": "Bally Bet OH","result": "pending","isVerified": true,"createdAt": "2026-09-14T15:42:42.424Z","settledAt": null,"updatedAt": "2026-09-14T15:42:42.423Z","status": "published","startsAt": "2026-09-14T18:00:00.000Z","endsAt": "2026-09-15T06:59:59.999Z","recordDate": null,"isLive": false,"money": 100,"moneyNet": 0,"unitsType": "unit","actualValue": null,"currentProjection": null,"customPickName": null,"customPickType": null,"customPickRules": null,"tag": null,"image": "https://assets.actionnetwork.com/308320_kalieva.jpeg","playerImage": "https://assets.actionnetwork.com/308320_kalieva.jpeg","marketId": "25550201","outcomeId": "2954831563","gameId": null,"competitionId": 114016,"competitorId": 270508,"leagueId": 23,"leagueName": "wta","groupPickId": null,"playerPropProjectionId": null,"userId": 3801142,"gameTitle": null,"meta": {"leagueName": "wta","isAltMarket": false}}]}],"lineMovementHistory": null,"props": null}
Example league report row
includeStandings and includeInjuries add one row per league, not one row per team. All 6 top-level fields are shown, trimmed as follows:
standings: 1 of 32standings[].records: 3 of 44leagueInfo.league.blacklistDates: 1 of 158leagueInfo.league.calendarInfo.pre: 1 of 4leagueInfo.league.calendarInfo.reg: 1 of 18leagueInfo.league.calendarInfo.post: 1 of 4leagueInfo.league.conferences: 1 of 2leagueInfo.league.divisions: 1 of 8
The records array is the betting half of the league table: straight-up, against-the-spread, over/under and units, each sliced again by home, road, favourite, underdog, division and conference.
{"recordType": "standings","league": "nfl","season": 2026,"entryCount": 32,"standings": [{"league": "nfl","teamId": 125,"team": {"teamId": 125,"name": "Buffalo Bills","displayName": "Bills","shortName": null,"location": null,"abbreviation": "BUF","logo": "https://static.sprtactn.co/teamlogos/nfl/100/buf.png","primaryColor": "00338D","secondaryColor": "C60C30","conference": "AFC","division": "EAST","urlSlug": "buffalo-bills","coreId": null,"record": null},"wins": 1,"losses": 0,"ties": null,"draws": 0,"overtimeLosses": null,"winPercent": 1,"pointsFor": 36,"pointsAgainst": 31,"pointsRank": null,"touchdownDifferential": 0,"conference": "AFC","division": "EAST","conferenceRank": 5,"divisionRank": 2,"streak": 1,"season": 2026,"seasonType": "reg","poll": null,"pollRank": null,"homeWins": null,"homeLosses": null,"awayWins": null,"awayLosses": null,"lastTenWins": null,"lastTenLosses": null,"gamesBack": null,"wildCardGamesBack": null,"eliminationNumber": null,"conferenceGamesBehind": null,"divisionGamesBehind": null,"leagueGamesBehind": null,"pointDifferential": null,"points": null,"gamesPlayed": null,"goalsFor": null,"goalsAgainst": null,"goalDifferential": null,"records": [{"category": "conference","recordType": "conference","wins": 1,"losses": 0,"overs": null,"unders": null,"ties": 0,"draws": null,"winPercent": 1,"pointsFor": 36,"pointsAgainst": 31},{"category": "road","recordType": "road","wins": 1,"losses": 0,"overs": null,"unders": null,"ties": 0,"draws": null,"winPercent": 1,"pointsFor": 36,"pointsAgainst": 31},{"category": "afc","recordType": "afc","wins": 1,"losses": 0,"overs": null,"unders": null,"ties": 0,"draws": null,"winPercent": 1,"pointsFor": 36,"pointsAgainst": 31}]}],"leagueInfo": {"league": {"id": 1,"sport": "football","name": "nfl","description": "National Football League","logo": "https://static.sprtactn.co/leagues/500/nfl.png","currentSeason": "2026","currentSeasonType": "reg","preSeasonStart": "2026-07-30T07:00:00.000Z","preSeasonEnd": "2026-09-02T06:59:59.000Z","regSeasonStart": "2026-08-30T07:00:00.000Z","regSeasonEnd": "2027-01-18T07:59:59.000Z","postSeasonStart": "2027-01-12T08:00:00.000Z","postSeasonEnd": "2027-03-11T07:59:59.000Z","blacklistDates": ["2025-05-27T07:00:00.000Z"],"calendarInfo": {"pre": [{"abbr": "HoF","week": 0,"label": "Hall of Fame Weekend","endDate": "2026-08-07T21:59Z","startDate": "2026-07-27T01:00Z"}],"reg": [{"abbr": "Week 1","week": 1,"label": "Week 1","endDate": "2026-09-15T04:59Z","startDate": "2026-08-29T02:00Z"}],"post": [{"abbr": "Wild Card","week": 1,"label": "Wild Card","endDate": "2027-01-19T04:59Z","startDate": "2027-01-11T05:00Z"}]},"currentWeek": 1,"updatedAt": "2026-08-30T16:25:20.339Z","isActive": true,"conferences": [{"id": "AFC","display": "AFC"}],"divisions": [{"id": "EAST","display": "East","conferenceId": "AFC"}]}}}
An injury report row has the same envelope with recordType: "injuries" and an injuries array, trimmed here to 1 of 13 entries:
{"recordType": "injuries","league": "nfl","season": null,"entryCount": 13,"injuries": [{"league": "nfl","playerName": "Gary Jennings","firstName": "Gary","lastName": "Jennings","position": "WR","team": {"name": "Los Angeles Chargers","displayName": "Chargers","logo": "https://static.sprtactn.co/teamlogos/nfl/100/sd.png"},"status": "out","designation": "IR","comment": "Gary Jennings (Concussion) is out this week.","isStarter": true,"isKeyPlayer": true,"startedAt": "2022-08-18T17:53:48.651Z","updatedAt": "2022-08-18T17:54:07.497Z"}],"leagueInfo": null}
How to Scrape Action Network Odds and Betting Splits
- Open Action Network Odds on Apify and click Try for free.
- Pick your leagues. NFL is prefilled, and you can add up to all 18.
- Set a date for date-scheduled leagues, or a week and season for NFL and NCAA Football. Those two cannot be combined with a date in the same run, so cover them in a separate run.
- Turn on Player and game props or Full line movement history only if you need them. Both are off by default and both are billed per game.
- Click Start and watch the run. A typical single-league slate finishes in well under a minute.
- Download the dataset as JSON, CSV, Excel or HTML, or wire it into your own code with the Apify API.
Full option example
Everything is optional. With no input at all you get the current NFL slate.
{"leagues": ["nfl"],"week": 1,"season": 2026,"seasonType": "reg","gameStatus": ["complete"],"includeExpertPicks": true,"includeLineMovement": true,"includeProps": true,"maxGames": 12}
Choosing games
| Field | Notes |
|---|---|
leagues | Which leagues to cover. Out-of-season leagues simply return nothing. Soccer (all leagues) already covers the Premier League, La Liga, Bundesliga, Serie A, Ligue 1 and MLS, so a fixture reached both ways is still collected and charged once. |
date | YYYY-MM-DD. Leave it empty for NFL and NCAA Football, which are scheduled by week. Setting a date alongside either of them stops the run rather than quietly giving you the wrong week. |
week, season, seasonType | NFL and NCAA Football. season also selects the year for standings. |
gameIds, gameUrls | Cover specific games. Overrides the league and date selection. |
Narrowing the slate
gameStatus (upcoming, live, finished), teams (names or abbreviations), onlyTrending, minBets, periods (full game, halves, quarters), books, maxGames.
Filters are applied before any per-game work is done, so anything filtered out is never charged for. Every field is documented in the Input tab, which is the fastest place to read the options.
Integrations, Scheduling and Monitoring
Betting splits are a time series. One run tells you where the public is now; a schedule tells you where it moved.
- Apify Scheduler. For a pregame slate, hourly on game day is the useful cadence, with one extra run about 30 minutes before kickoff to capture the closing line. Daily is enough if you only want closing numbers and results.
- Google Sheets for a shareable splits board that updates itself.
- Make and Zapier for alerts, for example a message whenever
sharpGapcrosses a threshold you care about. - Webhooks to post each finished run straight into your own service.
- Dataset API for direct pulls into a notebook or a database.
New to running and scheduling Actors? These are the official Apify walkthroughs:
How Much Does It Cost to Scrape Action Network?
Charged per game, not per price. One game quoted by every sportsbook you asked for across three markets is still one charge.
| Event | Price |
|---|---|
| Game | $3.99 per 1,000 games |
| Full line movement history | $3.99 per 1,000 games |
| Player and game props | $4.99 per 1,000 games |
| Standings or injury report | $7.99 per 1,000 league reports |
| Actor start | $4.99 per 1,000 runs |
Expert picks are included in the game price. Lower rates apply automatically on higher Apify plans, down to $2.79 per 1,000 games.
Opt-in blocks are off by default, so you only pay for what you turn on, and games removed by a filter cost nothing.
A single league's daily slate is under a dime for most leagues, and about thirty cents for a full college football Saturday. Apify's free plan credit covers over a thousand games before you pay anything.
FAQ
Does Action Network have an API? Not a public one. There is a paid PRO subscription for the site itself, but no documented endpoint, no keys and no published field list. This Actor gives you a stable JSON schema, scheduling, retries and exports instead.
What does "sharp money" mean in betting?
It describes stake concentrated in relatively few bets. In the output that shows up as moneyPercent sitting well above ticketPercent on the same side, which is exactly what sharpGap measures.
What does line movement mean in betting?
The price on a side changing between the opening number and now. lineMovement carries both numbers plus the delta for every market, and the opt-in lineMovementHistory carries every timestamped step between them.
Is reverse line movement good or bad?
Neither on its own. It is a signal: the line moving against the side holding most of the tickets. You can detect it with two fields, sharpGap and lineMovement.
Is it profitable to bet against the public? That is a modelling question, not a data question. What this Actor does is give you the public percentages and the closing numbers you need to test it yourself, with history back to around 2024 for odds and splits.
Is there a free API for sports betting odds? Free odds feeds exist but are usually thin: a handful of books, no betting splits and tight rate limits. Public betting percentages in particular are rarely free anywhere.
How far back does the history go? Scores and box scores reach 2015. Odds and betting splits begin around 2024, so a 2019 game returns the result but no closing line.
Why are some leagues empty? They are out of season. An empty league is a normal answer, not an error, and it costs nothing.
Can I get first-half or quarter lines?
Yes, through periods. Not every game prices every segment, so an empty result there is also a real answer.
What are book IDs 15 and 30? Not sportsbooks. 15 is the consensus line that carries the betting splits, and 30 is the opening line. Both are always included, so splits and movement never go missing even if you filter to a single book.
Can I export this to Google Sheets or my own database? Yes. Every run writes a dataset you can download as JSON, CSV, Excel or HTML, push through an integration, or read from the Apify API.
Something looks wrong. What do I do? Open the Issues tab on this Actor with the run ID and the input you used. If you need a different shape of this data, a different source or a custom pipeline, say so there and it can be built.
Is It Legal to Scrape Action Network?
This is an unofficial tool that collects publicly accessible information. It is not affiliated with, endorsed by, or connected to The Action Network, Inc.
Scraping public data is generally lawful in the US and the EU. How you use it is your responsibility.
The output is odds, teams, aggregate betting percentages, published injury reports, player names on prop markets, and public expert profiles. All of it is already published by the source and none of it is private. If you combine it with anything that is, GDPR and similar rules apply to you as the controller.
Odds and betting data are provided for informational and analytical purposes only and are not betting advice. You are responsible for complying with the laws and terms that apply to you, including the gambling regulations in your jurisdiction.
More Zen Studio scrapers for sports betting
🏟️ Sportsbook odds
FanDuel
DraftKings
BetMGM
Bet365
🎯 Daily fantasy & player props
Player Props Aggregator
PrizePicks
Underdog Fantasy
Sleeper
DraftKings Pick6
Bet365
🎾 Live scores & match data
Tennis Abstract
Flashscore
Action Network scraper and API for betting splits, public betting percentages, sportsbook odds, line movement and expert picks across 18 leagues, as structured JSON.

