FantasyPros NFL Projections & Rankings avatar

FantasyPros NFL Projections & Rankings

Pricing

from $0.17 / 1,000 item extracteds

Go to Apify Store
FantasyPros NFL Projections & Rankings

FantasyPros NFL Projections & Rankings

Export FantasyPros NFL projections, expert consensus rankings, ADP, tiers, teams, positions, and standard, half-PPR, or PPR scoring variants.

Pricing

from $0.17 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Categories

Share

Export FantasyPros NFL rankings, player projections, and average draft position (ADP) as clean JSON records.

Choose standard, half-PPR, or PPR scoring and filter the results to quarterback, running back, wide receiver, tight end, kicker, and defense.

Each run writes integration-ready player rows to the default Apify dataset.

What can this FantasyPros NFL scraper do?

  • Export expert consensus rankings (ECR).
  • Collect best, worst, average, and standard-deviation expert ranks.
  • Preserve ranking tiers and position ranks.
  • Export draft-season or weekly player projections.
  • Preserve legacy projected statistics and add source-derived passing, rushing, receiving, and other stat groups.
  • Export consensus, real-time, and source-labeled draft-platform ADP fields.
  • Filter all result types by fantasy position.
  • Select STD, half-PPR, or PPR scoring.
  • Combine rankings, projections, and ADP in one run.
  • Cap the total result count with maxItems.

The Actor reads anonymous public FantasyPros pages. It does not require a FantasyPros account or API key.

Who is it for?

Fantasy football analysts

Refresh draft models without copying tables by hand.

Draft-tool builders

Feed normalized player IDs, positions, rankings, tiers, and ADP into a draft board or value-gap calculation.

League managers

Compare consensus rankings with market ADP before a draft.

Data teams

Schedule recurring runs and send the default dataset to a spreadsheet, warehouse, webhook, or custom pipeline.

Why use this Actor?

The output uses one stable player-record shape across three related FantasyPros datasets.

Rankings include expert spread and tiers, not only a single ordinal.

Projections preserve the source's position-specific stat columns in projectedStats and expose fantasy points separately.

ADP rows include consensus average and real-time movement when FantasyPros publishes them.

The implementation uses server-rendered data rather than a full browser, keeping runs fast and economical.

What data is extracted?

FieldMeaning
recordTyperankings, projections, or adp
playerIdStable FantasyPros player ID
playerNamePlayer display name
teamNFL team abbreviation when published
positionQB, RB, WR, TE, K, or DST
positionRankPosition rank such as WR1
scoringFormatSTD, HALF, or PPR
seasonSource season
weekdraft or a selected NFL week
rankConsensus or ADP ordinal
rankBest / rankWorstBest and worst expert rank
rankAverageAverage expert rank
rankStdDevExpert rank standard deviation
tierFantasyPros ranking tier
byeWeekPublished bye week
ownershipPercentPublished average ownership
adpConsensus average draft position
realtimeAdpReal-time draft position when available
realtimeDeltaDifference from consensus ADP
fantasyPointsProjected fantasy points
projectedStatsLegacy position-specific projection fields, unchanged
projectionStatsByCategoryProjection stats grouped by actual source headers
adpSourcesArray of { sourceId, label, value } provider ADP entries
sourceUrlExact FantasyPros source page
playerUrlFantasyPros player page
sourceUpdatedAtSource update label when available
scrapedAtUTC extraction timestamp

Fields that do not apply to a selected record type are omitted or null.

How to run the Actor

  1. Open the Actor in Apify Console.
  2. Select one or more data types.
  3. Select player positions.
  4. Choose STD, half-PPR, or PPR scoring.
  5. For projections, select full-season draft scope or a week.
  6. Set the maximum number of player rows.
  7. Click Start.
  8. Open the default dataset to preview or export the records.

The prefilled input requests PPR ADP first, then rankings, for QB, RB, WR, and TE, with a global cap of 20 rows. Defaults used when fields are omitted remain rankings-only with a cap of 100.

Input parameters

ParameterTypeDefaultDescription
dataTypesstring array['rankings']One or more of rankings, projections, and ADP
positionsstring arrayall supported positionsPlayer positions to keep
scoringFormatstringPPRSTD, HALF, or PPR
weekstringdraftProjection period: full season or week 1–18
seasonintegercurrentOptional historical ADP season from 2015
maxItemsinteger100Maximum rows across all selected data types

maxItems is a cap, not a promise that the source contains that many public rows. Data types are processed in the requested order with one global cap: an earlier mode can fill it and prevent later modes from running. Projections process positions in their requested order. Put a smaller mode such as ADP first, and use a sufficiently large cap when requesting multiple modes.

Example input: PPR rankings

{
"dataTypes": ["rankings"],
"positions": ["QB", "RB", "WR", "TE"],
"scoringFormat": "PPR",
"maxItems": 100
}

Example input: weekly projections (only when publicly available)

{
"dataTypes": ["projections"],
"positions": ["QB", "RB"],
"scoringFormat": "HALF",
"week": "1",
"maxItems": 80
}

Example input: rankings plus ADP

{
"dataTypes": ["adp", "rankings"],
"positions": ["RB", "WR"],
"scoringFormat": "PPR",
"maxItems": 250
}

Output example

This abbreviated record comes from a real PPR rankings run:

{
"recordType": "rankings",
"playerId": 19788,
"playerName": "Ja'Marr Chase",
"team": "CIN",
"position": "WR",
"positionRank": "WR1",
"scoringFormat": "PPR",
"season": 2026,
"week": "draft",
"rank": 1,
"rankBest": 1,
"rankWorst": 4,
"rankAverage": 1.51,
"rankStdDev": 0.91,
"tier": 1,
"byeWeek": 6,
"sourceUrl": "https://www.fantasypros.com/nfl/rankings/ppr-cheatsheets.php"
}

Projection records add fantasyPoints, projectedStats, projectionStatsByCategory, and byeWeek when the BYE column exists. Legacy duplicate columns retain their suffixes (att_2, yds_2, tds_2). Prefer the grouped object for interpretation: QB passing.yds and rushing.yds are different values; RB rows use rushing and receiving. Groups and stat names come from source headers, not assumptions about positions. Ungrouped columns such as BYE are in misc; projectedStats.bye is retained.

Illustrative projection fragment (not a forecast):

{
"projectedStats": { "yds": 3000, "yds_2": 400 },
"projectionStatsByCategory": {
"passing": { "yds": 3000 },
"rushing": { "yds": 400 }
}
}

ADP records preserve adp, realtimeAdp, and realtimeDelta, and add adpSources. Entries follow report metadata order. IDs are stable numeric strings from the source's src_* fields; labels are source-provided and may change. Missing values are null, never zero-filled. Example: [{"sourceId":"79","label":"ESPN","value":10},{"sourceId":"4350","label":"Sleeper","value":null}].

Console provides grouped-projection and draft-platform ADP views alongside the overview. These views select columns, not record types; mixed-mode datasets may show empty columns for other modes.

How much does it cost to export FantasyPros NFL player data?

Pay-per-event pricing has two parts:

  • $0.00004 per run for the start event.
  • A tiered item event for each saved player record.
PlanPrice per player record
Free$0.0003312
Bronze$0.000288
Silver$0.00022464
Gold$0.0001728
Platinum$0.0001152
Diamond$0.00008064

At Bronze rates, 100 player rows cost about $0.02884 including the run start. Five hundred rows cost about $0.14404. One thousand rows cost about $0.28804.

Apify displays the applicable subscription tier before a run. Rows discarded by the cap are not charged. Cloud charge errors fail the run rather than publish uncharged output. A low run budget limits saved rows to the actual charged count; a budget with no item capacity can finish with no rows. Charges and storage writes are not atomic: a storage failure after a successful charge can still fail the run.

Schedule recurring ranking refreshes

Create an Apify Schedule for daily, weekly, or draft-day refreshes.

Keep the same input to make dataset snapshots directly comparable.

For change detection, connect the run to a webhook or automation that compares playerId, recordType, rank, tier, adp, and scrapedAt with the previous export.

The Actor returns current source snapshots; it does not store or calculate history itself.

Build a ranking-versus-ADP model

Select both rankings and adp with the same scoring format.

Join rows by playerId.

A large positive difference between ADP and consensus rank can identify a player available later than expert opinion suggests.

Use rankBest, rankWorst, and rankStdDev to separate strong consensus from uncertain players.

Export to spreadsheets and data pipelines

Use the dataset's CSV, Excel, JSON, XML, RSS, or JSONL export endpoints.

Apify integrations can forward completed runs to Google Sheets, Make, Zapier, Slack, webhooks, or cloud storage.

For a warehouse workflow, request dataset items through the Apify API after the run succeeds.

Run through the Apify API with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~fantasypros-nfl-projections-rankings/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"dataTypes":["adp","rankings"],"positions":["RB","WR"],"scoringFormat":"PPR","maxItems":250}'

To wait for results in one request, use the run-sync-get-dataset-items endpoint for small jobs.

Run with JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/fantasypros-nfl-projections-rankings').call({
dataTypes: ['projections'],
positions: ['QB'],
scoringFormat: 'STD',
week: 'draft',
maxItems: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Run with Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/fantasypros-nfl-projections-rankings').call(run_input={
'dataTypes': ['rankings'],
'positions': ['QB', 'RB', 'WR', 'TE'],
'scoringFormat': 'HALF',
'maxItems': 100,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use with MCP and AI agents

Add the Actor to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/fantasypros-nfl-projections-rankings"

Claude Desktop, Cursor, and VS Code setup

Use this same MCP configuration in Claude Desktop, Cursor, or VS Code:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/fantasypros-nfl-projections-rankings"
}
}
}

Example prompts:

  • “Export the top 100 FantasyPros half-PPR NFL rankings.”
  • “Get current full-season QB projections and summarize projected rushing upside.”
  • “Fetch PPR rankings and ADP, then flag the largest rank-versus-ADP gaps.”

Reliability, retries, and failures

The Actor makes direct anonymous HTTP requests and retries transient network, HTTP 429, and 5xx failures with bounded backoff.

Stable 4xx responses are not retried blindly.

A missing rankings object, ADP report, or projection table is treated as an upstream/parser failure rather than a successful empty result. A valid projection table or ADP report with zero public rows instead fails with a source-availability message. Projection errors identify the exact position, public path and requested scope. A failed later position does not silently publish earlier positions as a partial success.

Malformed input fails before source requests start.

If no player matches the selected positions, the run fails clearly instead of silently returning an unexplained empty dataset.

Limits and source behavior

FantasyPros controls which seasons, weeks, player rows, expert sources, and real-time ADP fields are publicly available.

Historical season selection applies to ADP. Rankings and projections follow the live pages.

Anonymous pages may be previews, not full exports. On 2026-10-12, current PPR ADP exposed 5 rows, draft QB/RB projections exposed 10 rows each with a registration fence, and week-6 QB projections had a valid table but zero rows. These are observations, not permanent limits or coverage guarantees. This Actor does not log in, bypass that fence, or promise complete/weekly projection coverage. A weekly example is a supported request shape, not proof that its week currently has data.

ADP can naturally expose fewer rows than rankings, especially for a season or scoring combination with limited current draft activity. Projection categories and stat keys vary by position; inspect projectionStatsByCategory instead of assuming every position shares QB columns.

The Actor does not provide Draft Wizard simulations, personalized league sync, alerts, injuries, news, lineup optimization, or historical change storage.

Failure diagnostics and privacy

Failed operations send sanitized diagnostic input, exceptions, and Actor/build/run IDs to our private GlitchTip service for repair. Secret fields and URL queries are removed; reports are retained for 30 days. No customer credentials or telemetry endpoints are requested in the input.

The Actor uses no AI model and sends no data to AI providers. Public NFL player names, IDs, teams and statistics are intentionally included in output; private league/customer identities are not collected. FantasyPros receives anonymous page requests; Apify hosts run input, logs and output under your account's storage/retention settings. You can delete runs and datasets in Apify Console. The Actor creates no persistent external player-history cache. Our self-hosted GlitchTip is the only additional diagnostic recipient; it does not use reports for model training.

For help, open an issue on this Actor's Apify Store page and include a run link and non-sensitive input. Automation Lab maintains this independent tool; it is not affiliated with or endorsed by FantasyPros or the NFL.

Responsible use and legality

Use the Actor only for lawful purposes and respect FantasyPros terms, copyright, database rights, and applicable regulations.

Publicly accessible data can still be protected by contractual or intellectual-property rules.

Do not use the Actor to overload the source, bypass access controls, or republish protected content without permission.

You are responsible for deciding whether your intended use and retention policy are permitted.

FAQ

Why did I receive fewer rows than maxItems?

maxItems only limits output. The selected page may publish fewer matching players, particularly ADP or a narrow position/week.

Why is a field null or absent?

The field may not apply to that recordType, or FantasyPros may not publish it for that player and page.

Why did the run fail with an upstream error?

Check the run log and source URL. A temporary 429 or server error is retried automatically; a changed source structure fails explicitly so stale or malformed rows are not emitted.

Can I use several scoring formats in one run?

One run uses one scoring format. Create separate runs for STD, half-PPR, and PPR snapshots so each record has an unambiguous scoring context.

Does the Actor need a proxy?

No proxy is enabled by default. Current public FantasyPros data is reachable anonymously through direct HTTP.

Combine this Actor with other automation-lab sports-data Actors when you need additional public sources. Search the automation-lab Store profile for current sports odds, player props, and fantasy-sports tools.

Related products are separate data sources; this Actor remains focused on FantasyPros NFL rankings, projections, and ADP.

Changelog

See the Actor changelog in Apify Console for user-visible release notes.