Underdog Fantasy Player Props API - Lines & Odds avatar

Underdog Fantasy Player Props API - Lines & Odds

Pricing

from $0.15 / 1,000 lines

Go to Apify Store
Underdog Fantasy Player Props API - Lines & Odds

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.15 / 1,000 lines

Rating

0.0

(0)

Developer

Zen Studio

Zen Studio

Maintained by Community

Actor stats

3

Bookmarked

186

Total users

34

Monthly active users

3 days ago

Last modified

Share

Underdog Fantasy Player Props Scraper | Real-Time Lines & Odds Across 21 Leagues

Underdog. 46 fields per prop. Higher & lower odds. Payout multipliers.

From Zen Studio, creators of PrizePicks Player Props, Sleeper Player Props and Bet365 Player Props. The same team behind Player Props Line Shopping.

Why choose this Underdog Fantasy player props scraper?

  • 46 fields per prop, with both sides together. Collect higher and lower American odds, decimal odds and payout multipliers in the same row. Keep the player, stat and line alongside both prices, ready for comparison or export.
  • Useful detail beyond the line. Include player positions, full team names, matchups and start times. Where published, collect venue details, probable MLB starting pitchers and their throwing hands, plus the original value of a discounted line.
  • Compare platforms and track changes. Shared fields align with our PrizePicks actor. Join datasets by player, stat and line, or save repeated Underdog exports to track price and line changes. Filter by league, player, stat or team before billing.

Explore Underdog props

Try MLB hits, runs and RBIs

{
"leagues": [
"MLB"
],
"statTypes": "hits_runs_rbis"
}

Open actor input to choose your leagues and filters. This example collects Hits + Runs + RBIs props. Remove statTypes for the league's full available board, or choose "All" in leagues for all available leagues. Export JSON, CSV or Excel.

Collects pre-game props. The 46-field record includes optional details that can be empty when not published. has_alternates reports availability; this actor collects the primary line. Free Apify accounts can try 5 lifetime runs, up to 50 results each.

Zen Studio · Player Props
Underdog Underdog
You are here
PrizePicks PrizePicks
Player projections
Bet365 Bet365
Odds & last 5
Sleeper Sleeper
Props & history
Line Shopping Line Shopping
Compare platforms

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, defaults to ["MLB"], use ["All"] for every league; "NBA"|"MLB"|"NHL"|"NFL"|"CFB"|"WNBA"|"UFL"|"CFL"|"Basketball"|"PGA"|"Tennis"|"FIFA"|"MMA"|"F1SZN"|"CS"|"Valorant"|"LoL"|"Dota"|"Esports"|"KBO"|"NPB"), extraLeagues (string, comma-separated league codes not in the dropdown), 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. 46 fields per result including American/decimal odds, payout multipliers, venue, weather, pitcher data. Get token: https://console.apify.com/account/integrations To reach the maintainers, add feedback="<what you needed and did not get>" to any run, including one that worked: a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. The run returns its data exactly as it would without the note, and a human reads every note.

How It Works

Three-step process:

  1. Pick your leagues
  2. Optionally filter by player, stat type, or team
  3. Get 46 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: MLB Props

{
"leagues": ["MLB"]
}

WNBA Props

{
"leagues": ["WNBA"]
}

Esports: Counter-Strike, Valorant, Dota 2, League of Legends

{
"leagues": ["CS", "Valorant", "Dota", "LoL"]
}

Or use the Esports umbrella to pull every esports title at once (including Call of Duty):

{
"leagues": ["Esports"]
}

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

ParameterTypeDefaultDescription
leaguesarray["MLB"]One or more leagues. Select "All" for every available league
extraLeaguesstringnoneComma-separated league codes not in the dropdown (e.g. CFL). Use the code shown in the league field of your results
playerNamesstringnoneComma-separated player names. Case-insensitive, diacritic-insensitive (Jokic matches Jokić). Partial matching
statTypesstringnoneComma-separated stat types. Accepts display names or machine keys (Points, points). Exact match, case-insensitive
teamsstringnoneComma-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.

More Zen Studio scrapers for sports betting

Also from the same studio (name, then account/slug for the URL https://apify.com/account/slug):

  • Bet365 Live Scores API (zen-studio/bet365-live-scores)
  • Bet365 Sports Data Scraper (zen-studio/bet365-sports-data)
  • Player Props Line Shopping (zen-studio/player-props-aggregator)
  • PrizePicks Player Props Scraper (zen-studio/prizepicks-player-props)
  • Sleeper Player Props (zen-studio/sleeper-player-props)
  • DraftKings Pick6 Player Props (zen-studio/draftkings-pick6-player-props)
  • Bet365 Player Props API (zen-studio/bet365-player-props)
  • Tennis Abstract Scraper (zen-studio/tennis-abstract-scraper)
  • Flashscore Tennis Scraper & API (zen-studio/flashscore-tennis-api)

Full directory: Zen Studio on Apify

Integrations and scheduling

Run the Underdog Fantasy player props scraper on a schedule in Apify Console, hourly on game days, daily otherwise. Each run can call a webhook when it finishes, so n8n, Make and Zapier flows pick up new rows without polling. The Apify API and the Apify MCP server take the same input, for scripts and AI agents.

Supported Leagues

Major US Sports: NBA, MLB, NHL, NFL, College Football (CFB), WNBA, UFL, CFL

Basketball (International): EuroLeague and national-team games beyond the NBA/WNBA

Golf: PGA

Individual Sports: Tennis, MMA, Formula 1 (season long)

International: Soccer (FIFA), KBO (Korean Baseball), NPB (Japanese Baseball)

Esports: Counter-Strike, Valorant, Dota 2, League of Legends. The Esports option selects every esports title at once, including Call of Duty.

League availability varies daily based on scheduled events. Off-season leagues (for example NBA in summer) return no lines until their next game is posted.

A league not in the list? Put its code in extraLeagues: the code is the one you see in the league field of any result, and it works as soon as Underdog posts lines for it.

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

Tennis history: Tennis Abstract Scraper returns every past ATP and WTA singles match for a player, with aces, double faults, games, sets, tie breaks and break points, so you can compare a line with past results.

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.15 per 1,000 lines.

Cost Examples

Line charges for a single run.

What You FetchLinesCost
NFL (full slate)~3,900~$0.59
MLB (typical day)~2,300~$0.35
NFL + College Football~5,900~$0.89
All 21 leagues~11,500~$1.73
Single player filter~10< $0.01

Monthly Estimates

Line charges, assuming ~2,000 lines per MLB pull and ~4,500 for three leagues.

Usage PatternRuns / MonthCost
MLB twice daily60~$18
3 leagues twice daily60~$41
MLB hourly720~$216

Cost Optimization

  • Use leagues to fetch only the sports you need
  • Use statTypes to narrow to specific stats
  • Use teams to focus on specific matchups
  • Use playerNames to 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.

What data you get from Underdog Fantasy

Real result from the MLB board with all 46 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

CadenceBest For
Once or twice dailyDaily picks newsletters, content creation
Every 1-4 hoursLine comparison tools, data collection
Every 2-5 minutesNear 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 11,000-12,000 across all leagues on a busy day. NFL alone is ~3,900 on a full slate, College Football ~1,900, MLB ~2,300. Counts move with the 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

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 21 leagues.