# PrizePicks Player Picks Scraper (`parseforge/prizepicks-player-picks-scraper`) Actor

Scrape PrizePicks trending player picks by league: player, stat, line, Goblin/Demon odds type, matchup, start time and popularity rank. No login. Export to CSV, JSON, Excel or XML.

- **URL**: https://apify.com/parseforge/prizepicks-player-picks-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Automation, Developer tools, Sports
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 pick scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🔥 PrizePicks Player Picks Scraper

> 🚀 **Export the most popular PrizePicks picks in seconds.** Up to 50 trending picks per league, 25 fields per pick, 114 leagues to choose from, no login and no proxy.

The PrizePicks Player Picks Scraper reads the same popular-picks feed that powers the player cards on PrizePicks' own website and turns it into a flat dataset. Every row is one pick: the player, the stat, the line, whether it is a Standard, Goblin or Demon line, the matchup and start time, and how many PrizePicks users currently hold that pick in an entry. Pick your leagues, set a limit, and download the result as CSV, JSON, Excel or XML.

On the day this README was written the feed carried 114 leagues, 25 of them with picks on the board (NFL, CFB, MLB, TENNIS, SOCCER, NBA, NHLSZN, UFC, Dota2 and more), 54 different stat types, and 390 trending picks across 15 leagues in one run. The NFL board alone had 6,966 projections, and the feed returned its 50 most popular ones ranked from 1 to 50.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| DFS players and PrizePicks regulars | See which lines the crowd is on before building an entry |
| Sports bettors and line shoppers | Compare PrizePicks lines against sportsbook props by stat |
| Analysts and model builders | Track public pick popularity and line movement over time |
| Content creators and newsletters | Publish "most popular picks today" tables in minutes |

### 📋 What the PrizePicks Player Picks Scraper does

- 🏟️ **League selection.** Choose any of 114 PrizePicks leagues (NFL, NBA, MLB, NHL, CFB, TENNIS, SOCCER, UFC, CS2, LoL, Dota2 and the rest) or leave the list empty to cover every league that has picks on the board right now.
- 🔥 **Popularity ranked.** Each pick carries its trending count (how many users hold it) and its rank on the league board, straight from PrizePicks.
- 😈 **Goblin and Demon labels.** Every line is tagged Standard, Goblin (easier line, lower payout) or Demon (harder line, higher payout), and you can filter to one or two of them.
- 🎲 **Player and team picks.** Team totals and tennis or esports match lines come through as Team picks next to the player stats.
- 🆚 **Game context.** Away and home teams, abbreviations, a ready-made matchup string and the scheduled start time, plus a live flag for games in progress.
- 🖼️ **Player images.** A headshot or team image URL for every pick, so your sheet or dashboard can show faces, not just names.
- 🌐 **No login, no proxy.** The feed answers direct requests. Proxy support is there if you ever need it, switched off by default.

> 💡 **Why it matters:** PrizePicks shows popularity only as a small flame on a card inside the app, and the app itself blocks scripts. This Actor gives you the same numbers as a table you can sort, join and chart.

### 🎬 Full Demo (🚧 Coming soon)

### 📊 Output

One row per pick, 25 fields, always in this order.

| Field | Type | Description |
|---|---|---|
| 🖼 imageUrl | string | Player headshot or team image |
| 👤 playerName | string | Player, or team or match name for Team picks |
| 📍 playerPosition | string | QB, RB, OF, Attacker, Player and so on |
| 🏷 playerTeam | string | Team abbreviation, or the athlete's name for tennis and esports |
| 🏟 league | string | League code, for example NFL, CFB, TENNIS |
| 🔢 leagueId | integer | PrizePicks league id |
| 🏅 sport | string | Sport of the league: football, basketball, tennis, csgo and so on |
| 📊 statType | string | Stat the line is on, for example Pass Yards, Points, Total Games |
| 🎯 line | number | The projection line |
| 😈 oddsType | string | Standard, Goblin or Demon |
| 🎲 pickType | string | Player or Team |
| 🔴 isLive | string | Yes when the game is in progress |
| 🔥 trendingCount | integer | Number of PrizePicks users holding this pick |
| 🏆 trendingRank | integer | Rank of the pick on the league board (1 is the most popular) |
| 🆚 matchup | string | Away @ Home, using abbreviations |
| ✈️ awayTeam | string | Away team name |
| 🏠 homeTeam | string | Home team name |
| ✈️ awayTeamAbbreviation | string | Away team abbreviation |
| 🏠 homeTeamAbbreviation | string | Home team abbreviation |
| 📅 gameStartTime | string | Scheduled start, ISO 8601 with the US Eastern offset |
| 🆔 projectionId | string | PrizePicks projection id |
| 🆔 playerId | string | PrizePicks player id |
| 🔄 feedUpdatedAt | string | When PrizePicks last refreshed the league feed |
| 🕒 scrapedAt | string | When the row was collected |
| ❌ error | string or null | Error message, null on a good row |

Values PrizePicks does not publish for a pick (for example the teams of a preseason game that has no opponent yet) come back as `Not Disclosed`, never as an empty cell.

Three real rows from the NFL board:

```json
[
  {
    "imageUrl": "https://static.prizepicks.com/images/teams/nfl/NFL_team_CagV60AIajg4pizCSJD5M18M/14.webp",
    "playerName": "Sam Darnold",
    "playerPosition": "QB",
    "playerTeam": "SEA",
    "league": "NFL",
    "leagueId": 9,
    "sport": "football",
    "statType": "Pass Yards",
    "line": 229.5,
    "oddsType": "Standard",
    "pickType": "Player",
    "isLive": "No",
    "trendingCount": 237125,
    "trendingRank": 1,
    "matchup": "NE @ SEA",
    "awayTeam": "NE",
    "homeTeam": "SEA",
    "awayTeamAbbreviation": "NE",
    "homeTeamAbbreviation": "SEA",
    "gameStartTime": "2026-09-09T20:20:00.000-04:00",
    "projectionId": "13975536",
    "playerId": "246597",
    "feedUpdatedAt": "2026-09-07T20:19:14.994702+00:00",
    "scrapedAt": "2026-09-07T20:19:17.917Z",
    "error": null
  },
  {
    "imageUrl": "https://static.prizepicks.com/images/teams/nfl/NFL_team_yfro8ooEKVvXuAA1ebsXJTq0/0.webp",
    "playerName": "Jahmyr Gibbs",
    "playerPosition": "RB",
    "playerTeam": "DET",
    "league": "NFL",
    "leagueId": 9,
    "sport": "football",
    "statType": "Player TDs",
    "line": 0.5,
    "oddsType": "Goblin",
    "pickType": "Player",
    "isLive": "No",
    "trendingCount": 31884,
    "trendingRank": 3241,
    "matchup": "NO @ DET",
    "awayTeam": "NO",
    "homeTeam": "DET",
    "awayTeamAbbreviation": "NO",
    "homeTeamAbbreviation": "DET",
    "gameStartTime": "2026-09-13T13:00:00.000-04:00",
    "projectionId": "12323881",
    "playerId": "206307",
    "feedUpdatedAt": "2026-09-07T20:19:14.994702+00:00",
    "scrapedAt": "2026-09-07T20:19:17.918Z",
    "error": null
  },
  {
    "imageUrl": "https://static.prizepicks.com/images/teams/nfl/NFL_team_OqHm2WrR1koV4WNCwbEs7ZvG/10.webp",
    "playerName": "Drake Maye",
    "playerPosition": "QB",
    "playerTeam": "NE",
    "league": "NFL",
    "leagueId": 9,
    "sport": "football",
    "statType": "Player TDs",
    "line": 0.5,
    "oddsType": "Demon",
    "pickType": "Player",
    "isLive": "No",
    "trendingCount": 26879,
    "trendingRank": 495,
    "matchup": "NE @ SEA",
    "awayTeam": "NE",
    "homeTeam": "SEA",
    "awayTeamAbbreviation": "NE",
    "homeTeamAbbreviation": "SEA",
    "gameStartTime": "2026-09-09T20:20:00.000-04:00",
    "projectionId": "13978257",
    "playerId": "215664",
    "feedUpdatedAt": "2026-09-07T20:19:14.994702+00:00",
    "scrapedAt": "2026-09-07T20:19:17.918Z",
    "error": null
  }
]
```

### ✨ Why choose this Actor

- ✅ **Built on PrizePicks' own popular-picks feed**, the one behind the cards on prizepicks.com, so the numbers match what PrizePicks shows.
- ✅ **Popularity first.** Trending count and rank on every row. Sort by them and you have the public's board in one click.
- ✅ **Clean, fixed schema.** 25 fields, the same order every run, sentinels instead of blanks, one row per pick.
- ✅ **Honest about its ceiling.** The feed publishes the top 50 picks per league. The Actor tells you how many were on the feed for each league in the log, and never pads the result.
- ✅ **Zero setup.** No PrizePicks account, no API key, no proxy. A run over a single league finishes in seconds.
- ✅ **Cheap to run.** Plain HTTP, no browser, a handful of requests per run.

### 📈 How it compares to alternatives

| Feature | ParseForge PrizePicks Player Picks Scraper | Full-board PrizePicks props scrapers |
|---|---|---|
| Data source | PrizePicks popular-picks feed (public) | PrizePicks app API (bot-protected) |
| Picks per league | Top 50, ranked by popularity | Whole board (thousands) |
| Trending count and rank per pick | Yes, on every row | Sometimes, as one of many fields |
| Goblin and Demon labels | Yes, plus a filter | Yes |
| Team picks and match lines | Yes | Varies |
| League picker | 114 leagues, multi-select, or all active leagues | Usually one league id per run |
| Proxy needed | No | Often residential |
| Login or API key | None | None |

If you need every line on the board, including low-popularity picks, a full-board scraper is the better tool. If you want to know which picks the crowd is on, ranked, across many leagues in one run, this one is built for exactly that.

### 🚀 How to use

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [PrizePicks Player Picks Scraper](https://apify.com/parseforge/prizepicks-player-picks-scraper?fpr=vmoqkp).
3. Pick your leagues, or leave the list empty for every league with picks on the board.
4. Optionally filter by odds type (Standard, Goblin, Demon) or pick type (Player, Team) and set **Max Items**.
5. Click **Start**. When the run finishes, open the **Dataset** tab and download CSV, Excel, JSON or XML.

A minimal input that pulls the 50 most popular NFL picks:

```json
{
  "leagues": ["9"],
  "maxItems": 50
}
```

Leave `leagues` empty to sweep every active league. Leagues with no games on the board return nothing and are listed in the log.

### 💼 Business use cases

#### 🧮 Entry building

Run the Actor an hour before lock, sort by `trendingCount`, and see which Goblin and Demon lines the public is piling into. Fade the crowd or ride it, but decide with the numbers in front of you.

#### 📈 Line shopping

Join `playerName` and `statType` against a sportsbook props export. A PrizePicks line that sits half a point off the books is visible in one filter.

#### 📊 Popularity tracking

Schedule the Actor every 30 minutes on game day and append the results to a sheet or database. `trendingCount` over time shows exactly when a pick caught fire, and `feedUpdatedAt` tells you how fresh each snapshot was.

#### 📰 Content and newsletters

Pull all active leagues each morning, keep the top 10 by `trendingRank`, and you have a "what the crowd is picking today" table ready for a post, a tweet thread or an email.

### 🔌 Automating PrizePicks Player Picks Scraper

- **Make and Zapier.** Trigger the Actor on a schedule and send new rows to Google Sheets, Airtable or a Discord webhook.
- **Slack.** Post the top 5 picks of a league to a channel before every slate.
- **Airbyte.** Sync the dataset into BigQuery, Snowflake or Postgres for historical analysis.
- **GitHub Actions.** Run the Actor from a workflow and commit the CSV to a repo that powers a static dashboard.
- **Google Drive.** Save each run's Excel export to a shared folder for the team.

### 🌟 Beyond business use cases

- **Research.** Study herding behaviour in DFS markets with a public, timestamped popularity signal.
- **Personal.** Keep a private log of the picks you took and how popular they were at the time.
- **Non-profit and education.** Teach data cleaning and joins on a dataset students actually find interesting.
- **Experimentation.** Feed `trendingCount`, `oddsType` and `line` into a model and test whether crowd favourites really hit more often.

### 🤖 Ask an AI assistant about this scraper

Give an AI agent live access to the picks through the Model Context Protocol:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/prizepicks-player-picks-scraper"
```

Then ask in plain language, for example "which NFL Demon lines are the most popular right now?" and the agent runs the Actor and reads the dataset back.

### ❓ Frequently Asked Questions

#### 🔥 What does trendingCount mean?

It is the number of PrizePicks users who currently hold that pick in an entry, as published by PrizePicks' popular-picks feed. `trendingRank` is the pick's position on the league board, where 1 is the most popular.

#### 📏 Why do I get at most 50 picks for a league?

The public feed publishes the 50 most popular picks per league. That is the ceiling of the source, not of the Actor. Combine leagues to collect more in one run.

#### 🗓️ Why is the matchup "Not Disclosed" on some rows?

Preseason and season-long boards (for example NBA before tip-off, NHLSZN, CFBSZN) list players before opponents are set. PrizePicks leaves the teams empty and the Actor reports that honestly instead of guessing.

#### 😈 What are Goblin and Demon lines?

PrizePicks offers three line types for the same player and stat. Standard pays the regular multiplier. Goblin is an easier line with a lower payout. Demon is a harder line with a higher payout. The `oddsType` field tells you which one a row is, and the odds-type filter lets you keep only the ones you care about.

#### 🏟️ Which leagues can I choose?

All 114 leagues PrizePicks lists, including the in-game variants (NFL1H, NBA4Q) and season-long boards (NFLSZN, NBASZN). Only leagues with games on the board return rows. Leaving the list empty selects every league that currently has picks.

#### ⏱️ Why did one league take longer or come back empty?

Leagues with a warm cache answer in about a second. Others are computed live by PrizePicks and can take up to a minute, and occasionally the feed cannot build a league at all. The Actor retries once, then logs the league as unavailable. When you selected that league explicitly you also get an uncharged error row so the gap is visible in the dataset.

#### 🔴 Does it cover live games?

Yes. Picks on games in progress carry `isLive: "Yes"`. The MLB and TENNIS boards had live picks when this README was written.

#### 👥 Are team picks included?

Yes. Team totals and match lines (tennis, esports) come through with `pickType: "Team"`. Use the pick-type filter to keep only player or only team picks.

#### 🔐 Do I need a PrizePicks account or a proxy?

No. The feed is public and answers direct requests. Apify Proxy can be switched on in the input if your environment needs it.

#### 📅 Can I build a history?

Yes. Schedule the Actor and store each run. `feedUpdatedAt` tells you when PrizePicks last refreshed the league, and `scrapedAt` when the row was collected, so you can line snapshots up precisely.

#### 💾 Which export formats are supported?

CSV, JSON, Excel and XML from the Dataset tab, or straight from the Apify API.

### 🔌 Integrate with any app

Run the Actor with the [Apify API](https://docs.apify.com/api/v2) or the [Apify client](https://docs.apify.com/api/client/js) for JavaScript and Python, and fetch the dataset items in the format you need. Webhooks can notify your app the moment a run finishes.

### 🔗 Recommended Actors

- [VegasInsider Scraper](https://apify.com/parseforge/vegasinsider-scraper?fpr=vmoqkp) for sportsbook odds, betting splits and line movement to compare against PrizePicks lines.
- [Reddit Posts Scraper](https://apify.com/parseforge/reddit-posts-scraper?fpr=vmoqkp) to pull the daily PrizePicks and DFS discussion threads next to the numbers.
- [Skool Community Scraper](https://apify.com/parseforge/skool-scraper?fpr=vmoqkp) to find and size paid picks communities.

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more sports, betting and social data scrapers.

**🆘 Need Help?** [Open our contact form](https://tally.so/r/BzdKgA) with your run ID, your input and what you expected.

> **⚠️ Disclaimer:** This Actor is an independent tool and is not affiliated with, endorsed by or sponsored by PrizePicks. It collects only publicly available data. You are responsible for using the data in compliance with PrizePicks' terms and with applicable laws. Nothing here is betting advice.

# Actor input Schema

## `leagues` (type: `array`):

PrizePicks leagues to pull trending picks from. Leave empty to cover every league that currently has picks on the board. Each league returns up to 50 picks, ranked by how many PrizePicks users have them in an entry. Leagues with no games on the board return nothing.

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `oddsTypes` (type: `array`):

Keep only picks of these PrizePicks odds types. Standard pays the regular multiplier, Goblin lines are easier (lower payout) and Demon lines are harder (higher payout). Leave empty for all three.

## `pickTypes` (type: `array`):

Player picks are stats for one athlete. Team picks are lines on a whole team or a tennis/esports match. Leave empty for both.

## `proxyConfiguration` (type: `object`):

The picks feed answers direct requests, so no proxy is needed. Turn Apify Proxy on only if your runs start getting refused.

## Actor input object example

```json
{
  "leagues": [],
  "maxItems": 10,
  "oddsTypes": [],
  "pickTypes": [],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

Player, stat, line, odds type, matchup and trending rank

## `fullData` (type: `string`):

Complete dataset with all 25 fields, including league and player ids, team abbreviations and feed timestamps

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "leagues": [],
    "maxItems": 10,
    "oddsTypes": [],
    "pickTypes": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/prizepicks-player-picks-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "leagues": [],
    "maxItems": 10,
    "oddsTypes": [],
    "pickTypes": [],
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/prizepicks-player-picks-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "leagues": [],
  "maxItems": 10,
  "oddsTypes": [],
  "pickTypes": []
}' |
apify call parseforge/prizepicks-player-picks-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/prizepicks-player-picks-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/YntixexN97WOpfxtg/builds/MqecjcUpUhrRTOWg0/openapi.json
