Underdog Fantasy Player Props API - Lines & Odds
Pricing
from $0.01 / 1,000 lines
Underdog Fantasy Player Props API - Lines & Odds
Scrape real-time player prop lines and odds from Underdog Fantasy API across 16 leagues. Get over/under lines, American and decimal odds, payout multipliers, player stats, team matchups, and game schedules. Filter by league, player name, stat type, or team. 45 fields per prop. JSON & CSV export.
Pricing
from $0.01 / 1,000 lines
Rating
0.0
(0)
Developer
Zen Studio
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Share
Underdog Fantasy Player Props Scraper — Real-Time Lines & Odds Across 16 Leagues
Key Highlight: 6,000+ player props in under 5 seconds — real-time over/under lines with American and decimal odds, 45 fields across 16 leagues.
| Zen Studio Sports Betting • Real-time odds across every major sportsbook | ||
|
➤ You are here |
Projections and lines |
Lines, props, SGP |
Get every active player prop from Underdog Fantasy as structured JSON. Each result is one prop: a player, a stat, and an over/under line with both higher and lower odds.
Copy to your AI assistant
Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.
zen-studio/underdog-player-props on Apify. Call: ApifyClient("TOKEN").actor("zen-studio/underdog-player-props").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items for results. Key inputs: leagues (array, default ["NBA"], use ["All"] for all 16 leagues), playerNames (string, comma-separated partial match), statTypes (string, comma-separated), teams (string, comma-separated names or abbreviations). All filters optional, AND logic. Full actor spec (input schema with all params/enums/defaults, output dataset fields, README): GET https://api.apify.com/v2/acts/zen-studio~underdog-player-props/builds/default (Bearer TOKEN) → inputSchema (JSON string, parse it), actorDefinition.storages.dataset.views.overview.transformation.fields (output field list), readme. 45 fields per result including American/decimal odds, payout multipliers, venue, weather, pitcher data. Get token: https://console.apify.com/account/integrations
How It Works
Three-step process:
- Pick your leagues
- Optionally filter by player, stat type, or team
- Get 45 fields per prop, ready to use
What Data Can You Extract?
Every result includes:
- Player name, team, position (short + full), jersey number, country, headshot URL
- Stat category with machine key and display name (points, Points)
- Over/under line with American odds, decimal odds, and payout multipliers for both higher and lower
- Line type (balanced, weighted), flash lines, alternate line availability
- Game matchup with home/away teams, full team names, game start time
- Season type, game status, venue details, weather conditions
- MLB pitcher data: probable starting pitcher and throwing hand for both teams
- Provider source, expiration time, live event status
Options Handling
Each prop has two sides: higher and lower. Instead of two rows per line, both options are embedded in a single row via higher_* / lower_* prefixed fields. One row = one complete prop with both sides.
How to Scrape Underdog Fantasy Player Props
Basic — NBA Props
{"leagues": ["NBA"]}
Multiple Leagues
{"leagues": ["NBA", "MLB", "NHL"]}
Filter by Player Name
{"leagues": ["NBA"],"playerNames": "LeBron, Curry, Randle"}
Filter by Stat Type
{"leagues": ["NBA"],"statTypes": "Points, Rebounds, Assists"}
Filter by Team
{"leagues": ["NBA"],"teams": "MIN, Lakers"}
Combine Filters (AND logic)
{"leagues": ["NBA"],"statTypes": "Points","teams": "Timberwolves","playerNames": "Randle"}
Everything at Once
{"leagues": ["All"]}
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
leagues | array | ["NBA"] | One or more leagues. Select "All" for every available league |
playerNames | string | — | Comma-separated player names. Case-insensitive, diacritic-insensitive (Jokic matches Jokić). Partial matching |
statTypes | string | — | Comma-separated stat types. Accepts display names or machine keys (Points, points). Exact match, case-insensitive |
teams | string | — | Comma-separated team names or abbreviations (MIN, Timberwolves, Minnesota Timberwolves). Matches player's team or either side of matchup |
All filters are optional and combine with AND logic. Filtered-out lines are not billed.
Supported Leagues
Major US Sports: NBA, MLB, NHL, NFL, WNBA, UFL
Golf: PGA
Individual Sports: Tennis, MMA
International: Soccer (FIFA), KBO (Korean Baseball), NPB (Japanese Baseball)
Esports: Counter-Strike, Valorant, League of Legends, Esports (Dota 2)
League availability varies daily based on scheduled events.
Stat Types by League
Pass these as comma-separated values in statTypes. Both machine key (points) and display name (Points) work.
NBA / WNBA: Points, Rebounds, Assists, 3-Pointers Made, Steals, Blocks, Turnovers, Pts + Rebs + Asts, Pts + Rebs, Pts + Asts, Rebs + Asts, Blks + Stls, Fantasy Points, Double-Double
MLB: Hits, Runs, RBIs, Home Runs, Total Bases, Stolen Bases, Walks, Strikeouts (Pitcher), Hits + Runs + RBIs, Earned Runs Allowed, Pitching Outs, Hits Allowed, Walks Allowed
NHL: Points, Goals, Assists, Shots On Goal, Blocked Shots, Saves, Power Play Points
Soccer (FIFA): Goals, Assists, Shots, Shots On Target, Passes, Tackles, Clearances, Saves
Tennis: Aces, Double Faults, Games Won, Sets Won, Tie Breaks
MMA: Significant Strikes, Takedowns
Esports: Kills, Deaths, Assists, Maps Won
Stat types vary daily based on scheduled games. Run once without a statTypes filter and inspect the stat_display field to see what's available.
Pricing — Pay Per Event (PPE)
$0.01 per 1,000 lines.
Cost Examples
| What You Fetch | Lines | Cost |
|---|---|---|
| NBA (typical game day) | ~700 | ~$0.012 |
| NBA + MLB + NHL | ~4,500 | ~$0.05 |
| All 16 leagues | ~6,200 | ~$0.07 |
| NBA filtered to 1 player | ~10 | < $0.01 |
Monthly Estimates
| Usage Pattern | Monthly Cost |
|---|---|
| NBA twice daily | ~$0.75 |
| 3 leagues twice daily | ~$3 |
| NBA every 5 minutes | ~$3.50 |
Cost Optimization
- Use
leaguesto fetch only the sports you need - Use
statTypesto narrow to specific stats - Use
teamsto focus on specific matchups - Use
playerNamesto narrow to specific players
Filters combine with AND logic, and filtered-out lines are not billed.
Free tier: 5 lifetime runs, 50 results per run.
Output Example
Real result from the MLB board with all 45 fields:
{"projection_id": "4d9eeecb-42c7-46bb-8463-62521b312df9","line": 1.5,"stat": "hits_runs_rbis","stat_display": "Hits + Runs + RBIs","status": "active","is_live": false,"flash_line": null,"rank": 1101351010500,"updated_at": "2026-04-07T07:17:21Z","player_name": "José Ramírez","player_team": "CLE","player_team_name": "Cleveland Guardians","player_position": "3B","player_position_full": "Third Baseman","player_country": null,"player_image": "https://assets.underdogfantasy.com/player-images/mlb/20260403_04-17e633e5.png","player_jersey": "11","player_id": "92506501-2fd3-478f-a749-bcd02919ece8","league": "MLB","game_start": "2026-04-07T17:10:00Z","game_status": "scheduled","season_type": "regular","home_team": "CLE","away_team": "KC","home_team_name": "Cleveland Guardians","away_team_name": "Kansas City Royals","line_type": "balanced","live_event_stat": null,"category": "player_prop","has_alternates": true,"provider": "swish","expires_at": null,"higher_american_odds": "-120","higher_decimal_odds": "1.84","higher_payout_multiplier": "1.0","lower_american_odds": "-114","lower_decimal_odds": "1.88","lower_payout_multiplier": "1.0","venue_name": "Progressive Field","venue_type": "outdoor","weather_condition": null,"weather_temperature": null,"home_pitcher": "G. Williams","away_pitcher": "N. Cameron","home_pitcher_hand": "RHP","away_pitcher_hand": "LHP"}
PrizePicks Compatibility
Field names are aligned with the PrizePicks Player Props Scraper where fields overlap. Shared fields use identical names (player_name, stat, line, league, game_start, etc.), making it straightforward to merge datasets from both platforms for line comparison.
Scheduling
| Cadence | Best For |
|---|---|
| Once or twice daily | Daily picks newsletters, content creation |
| Every 1-4 hours | Line comparison tools, data collection |
| Every 2-5 minutes | Near real-time monitoring, Discord bots |
Data Export
Results are available in:
- JSON — structured data for programmatic analysis
- CSV — flat tables for spreadsheets
- Excel — formatted data for reporting
Export directly from Apify Console or via API.
FAQ
How many props are typically available? Around 6,000-7,000 across all leagues. NBA alone has 700-800 depending on the game schedule.
How often do lines change?
Lines update every few minutes. The updated_at field shows exactly when each prop was last changed.
What's the difference between higher and lower? Higher means the player exceeds the line. Lower means they fall short. Each side has its own American odds, decimal odds, and payout multiplier.
What does "balanced" vs other line types mean? Balanced means the odds are roughly equal on both sides. Other types indicate the book has weighted one side.
Does this work outside the US? Yes. The scraper uses a US residential proxy internally. You can run it from anywhere.
What happens if a league has no games today? Zero results for that league with an info message. No error, no charge.
Can I track line movements?
Schedule the scraper to run periodically and compare line and odds values across runs using projection_id as the key.
What are flash lines?
Flash lines (flash_line field) show the original line before a discount was applied. When non-null, the current line is a discounted value.
What are alternate lines?
When has_alternates is true, Underdog offers additional lines at different values for the same player and stat. This scraper returns the primary line.
How does this compare to PrizePicks? Both actors output structured player props with compatible field names. Underdog includes American/decimal odds and payout multipliers per side. PrizePicks includes odds tiers (standard, demon, goblin) and durations.
What's the free tier? 5 lifetime runs, 50 results per run.
Are live event lines included? Pre-game lines only. Lines are pulled when games go live. Live lines require authentication and are not supported.
Support
- Bugs: Issues tab
- Features: Issues tab
Legal Compliance
Extracts publicly available data. Users must comply with Underdog Fantasy terms and data protection regulations (GDPR, CCPA).
Real-time player prop lines and odds from Underdog Fantasy across 16 leagues.