# FantasyPros Player News & Expert Rankings Scraper (`confidential_gnat/fantasypros-news-projections-scraper`) Actor

Scrapes FantasyPros (fantasypros.com) fantasy sports data: player news with Fantasy Impact for NFL, NBA, MLB and NHL, and NFL expert consensus rankings (draft, weekly, rest of season). Optional cache returns only news you have not seen yet.

- **URL**: https://apify.com/confidential_gnat/fantasypros-news-projections-scraper.md
- **Developed by:** [ActorFlow](https://apify.com/confidential_gnat) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.15 / 1,000 results

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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## FantasyPros Player News & Expert Rankings Scraper

**Scrape fantasy player news and expert consensus rankings from FantasyPros (fantasypros.com)** for the NFL, NBA, MLB and NHL. Get the news headline, blurb and the "Fantasy Impact" analysis with player, team, position, source and timestamp, plus draft, weekly and rest-of-season **fantasy football rankings** with the average, best and worst expert rank. Paste a FantasyPros URL or pick a data type, press Start, and export the **fantasy sports data** as JSON, CSV or Excel, or call the scraper as a **FantasyPros API**. A cache project name returns only news you have not seen before on every scheduled run.

![FantasyPros player news and expert rankings scraper cover: 568 players ranked in one list](https://i.postimg.cc/4xLxCJ0f/Fantasy-Pros-Rankings-and-Player-News.png)

**Target website:** [fantasypros.com](https://www.fantasypros.com)

### ✨ Features of this FantasyPros player news and rankings scraper

- **Player news extraction** — headline, news blurb, Fantasy Impact paragraph, player, team, position, category, author, source link and publication time with a stable news id
- **Pagination support** — news pages are followed (20 items each, about 9 pages per feed) until Max items is reached
- **Consensus rankings extraction** — expert consensus rank, position rank, average, best, worst and standard deviation of the expert ranks, bye week and owned percentage for draft, weekly and rest-of-season lists
- **Four sports** — news for NFL, NBA, MLB and NHL; NFL rankings by data type, and rankings for other sports through a pasted URL
- **Team, position and scoring filtering** — keep only the teams you follow, pick positions, and choose Standard, Half PPR or PPR scoring
- **Injury updates filter** — scrape only the Injury Updates news category
- **Only new news (cache)** — a cache project name skips news you already have
- **Polite crawling** — one request at a time with the 5 second delay FantasyPros asks for in its robots.txt, and no disallowed paths
- **Proxy support** — optional Apify Proxy configuration
- **No browser required** — plain HTTP requests make runs fast and cheap

### 🚀 How to scrape FantasyPros news and rankings in 5 steps

1. [Sign up](https://apify.com/sign-up) for a free Apify account — includes **$5 monthly credit**.
2. Open the actor page and click **Try for free**.
3. Keep the prefilled FantasyPros URLs, or choose data types and filters in the optional sections.
4. Click **Start** and wait for the run to complete.
5. Download results from the **Output** tab in JSON, CSV, or Excel format.

You can also run this actor via the [Apify API](https://docs.apify.com/api/v2) or integrate it directly into your workflows using [Zapier](https://zapier.com/apps/apify), [Make](https://www.make.com/), or [n8n](https://n8n.io/).

### 💰 Pricing for the FantasyPros scraper

This actor uses **pay-per-result** billing: you pay for each record saved to the dataset.

- New Apify accounts include **$5 of free monthly credit**.
- It works with plain HTTP requests instead of a headless browser, so it costs significantly less to run than browser-based scrapers.
- Proxies are off by default, which keeps runs as cheap as possible.
- Set a **Cache project name** on scheduled runs: news you already scraped is skipped and not charged.
- Because of the 5 second crawl delay a run takes about 5 seconds per page, so a 3-page news run finishes in under 30 seconds.

### 🔧 FantasyPros scraper input configuration

The form has the main inputs on top (start URLs, data types, cache and max items), then two optional sections, and the proxy at the bottom.

![FantasyPros scraper input form with the 9 input fields numbered 1 to 9](https://i.postimg.cc/htPt3Jpy/image.png)

1. **FantasyPros page URLs** — news or rankings pages to scrape
2. **Data types** — player news and/or expert consensus rankings
3. **Cache project name** — return only news you have not scraped before
4. **Max items** — records per start URL, or per sport and data type
5. **News sports** — NFL, NBA, MLB and NHL
6. **Team codes** — keep only these teams, such as SEA or LAL
7. **Positions** — news or NFL ranking positions, such as qb or dst
8. **Injury updates only** — only the Injury Updates news category
9. **NFL ranking type** — draft cheat sheets, weekly or rest of season

Scoring format and the proxy settings are below the part shown in the screenshot.

| Field | Type | Required | Default | Description |
| ----- | ---- | -------- | ------- | ----------- |
| `startUrls` | array | — | `[]` (prefilled with the NFL player news and the PPR draft rankings) | FantasyPros player news or rankings pages. News pages accept `?team=SEA` and `?position=QB`. |
| `dataTypes` | array | — | `[]` (news) | `news` and/or `rankings`. Rankings cover the NFL; paste other sports as start URLs. |
| `cacheProjectName` | string | — | — | Same name on each run = only news not scraped before. Records get `changeType: new`. Rankings are never cached. |
| `maxItems` | integer | — | `5` | Maximum records per start URL, or per sport and data type. |
| `sports` | array | — | `[]` (all four) | News sports: `nfl`, `nba`, `mlb`, `nhl`. |
| `teams` | array | — | `[]` | Team abbreviations such as `SEA`, `LAL`, `NJD`. |
| `positions` | array | — | `[]` | News positions (`QB`, `WR`, `SP`, `C`) or NFL ranking positions (`qb`, `rb`, `wr`, `te`, `k`, `dst`, `flex`, `overall`). |
| `injuryUpdatesOnly` | boolean | — | `false` | News only: the Injury Updates category. |
| `rankingType` | string | — | `draft` | NFL rankings: `draft`, `weekly` or `ros` (rest of season). |
| `scoring` | string | — | `PPR` | NFL rankings: `STD`, `HALF` or `PPR`. |
| `proxyConfiguration` | object | — | `{"useApifyProxy": false}` | Optional Apify Proxy settings. |

The sports, teams, positions and injury fields sit in the collapsible **Search by sport and filters** section, the ranking type and scoring in **NFL rankings options**, and the proxy in its own **Proxy** section. None of them are applied to start URLs.

**How the cache saves money:**

- The actor remembers the id of every news item it saved, in a key-value store named after your project.
- On the next run those items are skipped, and the crawl stops as soon as it reaches a page that is already fully known.
- Skipped records are not charged and do not count towards **Max items**, so daily monitoring pays only for what is new.
- Use a different project name for each set of sports and filters you track.

**Supported URL types:**

- News: `https://www.fantasypros.com/nfl/player-news.php`, `https://www.fantasypros.com/nba/player-news.php?team=GSW`, `https://www.fantasypros.com/mlb/news.php?position=SP`, `https://www.fantasypros.com/nfl/injury-news.php`
- Rankings: `https://www.fantasypros.com/nfl/rankings/ppr-cheatsheets.php`, `https://www.fantasypros.com/nfl/rankings/ros-overall.php`, `https://www.fantasypros.com/nfl/rankings/qb.php`, `https://www.fantasypros.com/nba/rankings/ros-overall.php`

### 📦 FantasyPros scraper output data (JSON, CSV, Excel)

Each record is a flat JSON object with a `type` of `news` or `ranking`. News records have `id`, `newsId`, `sport`, `player`, `playerId`, `playerUrl`, `position`, `team`, `headline`, `blurb`, `fantasyImpact`, `category`, `author`, `source`, `sourceUrl`, `publishedLabel`, `publishedAt`, `url`, `scrapedAt` (and `changeType` when caching). Ranking records have `id`, `sport`, `rankingType`, `listName`, `year`, `week`, `scoring`, `listPosition`, `rank`, `positionRank`, `player`, `playerId`, `playerUrl`, `team`, `position`, `byeWeek`, `ownedPct`, `ecrDelta`, `rankMin`, `rankMax`, `rankAvg`, `rankStd`, `expertCount`, `lastUpdated`, `url`, `scrapedAt`. Missing values are `null`. The dataset has 1 view, **Overview**, a table of the key fields of both record types.

**Output at a glance:**

| Type | Sport | Team | Player | Pos | Headline / rank | Detail |
| ---- | ----- | ---- | ------ | --- | --------------- | ------ |
| news | nfl | BAL | [Ja'Kobi Lane](https://www.fantasypros.com/nfl/players/jakobi-lane.php) | WR | Ja'Kobi Lane (wrist) activated off of IR, will play against Cleveland | 2026-10-17 20:45 UTC |
| news | nfl | CHI | [Caleb Williams](https://www.fantasypros.com/nfl/players/caleb-williams.php) | QB | Caleb Williams (hamstring) starting for the Bears Sunday | 2026-10-17 20:37 UTC |
| ranking | nfl | CIN | [Ja'Marr Chase](https://www.fantasypros.com/nfl/players/jamarr-chase.php) | WR | rank 1 (WR1) | average rank 1.55, PPR draft |
| ranking | nfl | SEA | [Jaxon Smith-Njigba](https://www.fantasypros.com/nfl/players/jaxon-smith-njigba.php) | WR | rank 1 (WR1) | average rank 1.72, PPR week 7 |

**Sample output (raw JSON):**

```json
[
  {
    "type": "news",
    "id": "news-nfl-614435",
    "newsId": "614435",
    "sport": "nfl",
    "player": "Ja'Kobi Lane",
    "playerId": "27337",
    "playerUrl": "https://www.fantasypros.com/nfl/players/jakobi-lane.php",
    "position": "WR",
    "team": "BAL",
    "headline": "Ja'Kobi Lane (wrist) activated off of IR, will play against Cleveland",
    "blurb": "Ja'Kobi Lane (wrist) has been activated from IR, clearing the way for him to return against Cleveland.",
    "fantasyImpact": "Lane has been out since fracturing his wrist in Week 1, so it will be interesting to see what his snap counts and route shares look like after the IR stint. The team praised him all offseason and focused on him during his brief playing time in Week 1, so hopefully he will be able to find himself a decent role as the WR2 of the offense.",
    "category": "Injury Updates",
    "author": "Garrett Ball",
    "source": "Baltimore Ravens on X",
    "sourceUrl": "https://x.com/Ravens/status/2111548724086280447?s=20",
    "publishedLabel": "Sat, Oct 17th 4:45pm EDT",
    "publishedAt": "2026-10-17T20:45:00.000Z",
    "url": "https://www.fantasypros.com/nfl/news/614435/jakobi-lane.php",
    "scrapedAt": "2026-10-18T05:13:47.505Z"
  },
  {
    "type": "ranking",
    "id": "ranking-nfl-draft-PPR-ALL-season-19788",
    "sport": "nfl",
    "rankingType": "draft",
    "listName": "Draft PPR",
    "year": 2026,
    "week": null,
    "scoring": "PPR",
    "listPosition": "ALL",
    "rank": 1,
    "positionRank": "WR1",
    "player": "Ja'Marr Chase",
    "playerId": 19788,
    "playerUrl": "https://www.fantasypros.com/nfl/players/jamarr-chase.php",
    "team": "CIN",
    "position": "WR",
    "byeWeek": 6,
    "ownedPct": 99.8,
    "ecrDelta": null,
    "rankMin": 1,
    "rankMax": 6,
    "rankAvg": 1.55,
    "rankStd": 1.07,
    "expertCount": 182,
    "lastUpdated": "2026-09-10T00:19:11.000Z",
    "url": "https://www.fantasypros.com/nfl/rankings/ppr-cheatsheets.php",
    "scrapedAt": "2026-10-18T05:13:52.245Z"
  }
]
```

### 🔁 Scrape only new FantasyPros news with the cache

Set the same **Cache project name** on every scheduled run. News that is already saved is skipped, not charged and not counted towards **Max items**, and new records get `changeType: "new"`. Each name has its own cache, so use one per set of sports and filters. Rankings are snapshots and are returned in full each run. On Apify Schedules, a run every 15 minutes gives you a near real-time news feed.

### 🐍 How to scrape FantasyPros with Python, JavaScript or the API

Run the actor programmatically with the official Apify clients. Replace `<YOUR_API_TOKEN>` with the token from your [Apify Console](https://console.apify.com/account/integrations).

**Python** (`pip install apify-client`):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run = client.actor("confidential_gnat/fantasypros-news-projections-scraper").call(run_input={
    "dataTypes": ["news", "rankings"],
    "sports": ["nfl"],
    "maxItems": 20,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

**JavaScript** (`npm install apify-client`):

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

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });

const run = await client.actor('confidential_gnat/fantasypros-news-projections-scraper').call({
    dataTypes: ['news', 'rankings'],
    sports: ['nfl'],
    maxItems: 20,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**cURL** — start a run and wait for the dataset:

```bash
curl -X POST "https://api.apify.com/v2/acts/confidential_gnat~fantasypros-news-projections-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"dataTypes": ["news", "rankings"], "sports": ["nfl"], "maxItems": 20}'
```

### 💡 What you can use FantasyPros news and rankings data for

- Fantasy football dashboards and draft tools that show consensus expert rank and average rank next to your own rankings
- Alert bots for Discord, Slack or Telegram that post new player news and Fantasy Impact the moment it appears
- Sports betting and DFS models that use expert rankings and injury news as inputs
- Waiver wire and start/sit helpers that combine rest-of-season rankings with the latest injury updates
- Research datasets of player news and expert rankings across NFL, NBA, MLB and NHL

Fantasy players, bettors, sports data teams, newsletters and media sites typically use this data to react faster than manual page checks.

### ⚠️ Limitations of the FantasyPros scraper

- **No projections** — FantasyPros now asks for a free account to view its projections pages, so they are not collected. Only logged-out content (player news and consensus rankings) is scraped.
- **News depth** — each news feed serves about 9 pages (roughly 170 items); older items are not available, so run on a schedule with a cache project name to build history.
- **Slow by design** — FantasyPros asks for a 5 second delay between requests, and the actor honors it, one request at a time. It also never requests the paths robots.txt disallows (`/ajax/`, `/api/`, `/json/`, `/xml/`, `/nfl/ranker/`).
- **No injury table or lineups** — FantasyPros has no public injury report table or starting lineup page. Injuries only appear as news in the Injury Updates category, so the injury status is in the headline and blurb text, not in a separate field.
- **Weekly rankings** — they exist only per position (there is no weekly overall list), so pick a position or use draft / rest of season.
- **Subscriber content** — expert-specific rankings, premium tools and the My Playbook pages need a login and are not collected.
- **Terms of use** — FantasyPros content is commercial data. Review the FantasyPros terms of service before using the data commercially or redistributing it.

### ❓ FantasyPros scraper FAQ

#### Can I scrape FantasyPros legally?

The actor only collects data that FantasyPros shows to logged-out visitors, with no login or subscriber content, and it follows the crawl delay and disallowed paths in robots.txt. Scraping publicly available data is generally considered lawful (see *hiQ Labs v. LinkedIn*), but FantasyPros content is commercial, so check its terms and your local laws before reusing the data.

#### What data does the FantasyPros scraper return?

News records (headline, blurb, Fantasy Impact, player, team, position, category, author, source, time) and consensus ranking records (rank, position rank, average, best, worst, standard deviation, bye week, owned percentage).

#### How many records can I scrape from one FantasyPros page?

**Max items** applies per start URL, or per sport and data type. A news feed offers about 170 items and a ranking list holds hundreds of players (for example 568 in the PPR draft list).

#### Do I need a proxy to scrape fantasypros.com?

No. The proxy setting defaults to off and the site answers normal requests, from datacenter proxies too. Turn on Apify Proxy only if you are blocked.

#### How do I scrape FantasyPros with Python?

Use the Python example above with `apify-client`, then iterate over the dataset items and filter on the `type` field.

#### Can I run this FantasyPros scraper on a schedule?

Yes, use Apify Schedules. Set the same **Cache project name** on every run to get only news not seen before. Rankings are snapshots, so they are returned in full on each run.

#### What output formats are supported?

JSON, CSV, Excel, XML and RSS, either from the **Output** tab or through the Apify API.

#### Does the FantasyPros scraper return player projections?

No. FantasyPros now puts its projections pages behind a free account, and this actor only reads what logged-out visitors see. Use the consensus rankings (average expert rank, best and worst rank) as a logged-out alternative.

### 🔗 Relevant actors for FantasyPros and fantasy sports data

| Scraper | Description |
| ------- | ----------- |
| [🏀 StatMuse Sports Stats Scraper](https://apify.com/confidential_gnat/statmuse-sports-scraper) | NBA, NFL, MLB and NHL stats answers and player game logs from StatMuse. |
| [🏈 Action Network Odds & Public Betting Scraper](https://apify.com/confidential_gnat/action-network-odds-scraper) | Sportsbook odds, public betting splits, opening lines and line movement. |
| [🎰 DraftKings Sportsbook Odds & Player Props Scraper](https://apify.com/confidential_gnat/draftkings-odds-scraper) | DraftKings odds, player props and parlays for NFL, NBA, MLB, NHL and more. |
| [📊 Covers.com Odds, Line History & Betting Trends Scraper](https://apify.com/confidential_gnat/covers-odds-trends-scraper) | Odds from many sportsbooks, line history and betting trends for major leagues. |
| [📰 Google News AI Scraper](https://apify.com/confidential_gnat/google-news-ai-scraper) | Google News search with optional article text and AI summaries. |

### 🔗 Other actors you may find useful

| Scraper | Description |
| ------- | ----------- |
| [🥾 AllTrails Scraper](https://apify.com/confidential_gnat/alltrails-scraper) | Hiking, biking and running trails by park, city, state or coordinates. |
| [🎧 Spotify Monthly Listeners Scraper](https://apify.com/confidential_gnat/spotify-monthly-listeners-scraper) | Artist monthly listeners, followers, top cities, top tracks and related artists. |
| [🍷 Vivino Wine Scraper](https://apify.com/confidential_gnat/vivino-wine-scraper) | Wine name, winery, vintage, region, country and ratings from Vivino. |
| [🏠 Rightmove Property Scraper](https://apify.com/confidential_gnat/rightmove-property-scraper) | UK sale and rent listings from Rightmove with price, address and coordinates. |
| [▶️ YouTube Video List Scraper](https://apify.com/confidential_gnat/youtube-video-list-scraper) | Video listings from YouTube channels and playlists with optional details. |

### 💬 Support & contact

If you encounter any issues or have questions, please [open an issue](https://apify.com/confidential_gnat/fantasypros-news-projections-scraper/issues/open).

You can also find more of our actors on the [Actor Flow](https://apify.com/confidential_gnat) page.

# Actor input Schema

## `startUrls` (type: `array`):

FantasyPros player news or rankings pages, for example https://www.fantasypros.com/nfl/player-news.php, https://www.fantasypros.com/nba/injury-news.php or https://www.fantasypros.com/nfl/rankings/ppr-cheatsheets.php. News pages accept ?team=SEA and ?position=QB. Leave empty to use the data types below.

## `dataTypes` (type: `array`):

What to scrape: player news and/or expert consensus rankings. Leave empty to scrape news. Rankings are NFL only here; paste other sports as start URLs.

## `cacheProjectName` (type: `string`):

Use the same name on each scheduled run to get only news you have not scraped before. Cached news is skipped, not charged and not counted towards Max items; new records get changeType: new. Rankings are snapshots and are never cached.

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

Maximum records per start URL, or per sport and data type. News pages hold 20 items and the site serves about 9 pages (roughly 170 items) per feed.

## `sports` (type: `array`):

Sports for player news. Leave empty for all four.

## `teams` (type: `array`):

Only return records for these team abbreviations, for example SEA, LAL, NJD. News is filtered by the site, rankings after parsing.

## `positions` (type: `array`):

News positions (for example QB, RB, WR, TE, K or SP, C, SS) or NFL ranking positions (qb, rb, wr, te, k, dst, flex, overall). Leave empty for overall rankings.

## `injuryUpdatesOnly` (type: `boolean`):

For news: only the Injury Updates category.

## `rankingType` (type: `string`):

Which NFL consensus ranking list: draft cheat sheets, this week's rankings or rest of season.

## `scoring` (type: `string`):

Scoring format for NFL rankings.

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

This website works without a proxy. Enable Apify Proxy only if you get blocked.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.fantasypros.com/nfl/player-news.php"
    },
    {
      "url": "https://www.fantasypros.com/nfl/rankings/ppr-cheatsheets.php"
    }
  ],
  "dataTypes": [],
  "maxItems": 5,
  "sports": [],
  "teams": [],
  "positions": [],
  "injuryUpdatesOnly": false,
  "rankingType": "draft",
  "scoring": "PPR",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

No description

# 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 = {
    "startUrls": [
        {
            "url": "https://www.fantasypros.com/nfl/player-news.php"
        },
        {
            "url": "https://www.fantasypros.com/nfl/rankings/ppr-cheatsheets.php"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("confidential_gnat/fantasypros-news-projections-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 = { "startUrls": [
        { "url": "https://www.fantasypros.com/nfl/player-news.php" },
        { "url": "https://www.fantasypros.com/nfl/rankings/ppr-cheatsheets.php" },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("confidential_gnat/fantasypros-news-projections-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 '{
  "startUrls": [
    {
      "url": "https://www.fantasypros.com/nfl/player-news.php"
    },
    {
      "url": "https://www.fantasypros.com/nfl/rankings/ppr-cheatsheets.php"
    }
  ]
}' |
apify call confidential_gnat/fantasypros-news-projections-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,confidential_gnat/fantasypros-news-projections-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/DrqJ7afGrX74dhP3p/builds/C8WhhAKI8CsfFZbgD/openapi.json
