FPL Intelligence - Picks, Optimizer, Watchlist, History avatar

FPL Intelligence - Picks, Optimizer, Watchlist, History

Pricing

Pay per event

Go to Apify Store
FPL Intelligence - Picks, Optimizer, Watchlist, History

FPL Intelligence - Picks, Optimizer, Watchlist, History

Fantasy Premier League intelligence: weekly captain & transfer picks, wildcard optimizer, mini-league insights, price-change predictor, manager dashboard, live tracker, 10 seasons of history.

Pricing

Pay per event

Rating

5.0

(1)

Developer

Omar Eldeeb

Omar Eldeeb

Maintained by Community

Actor stats

2

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

FPL Intelligence — Picks, Optimizer, Watchlist, History

Fantasy Premier League intelligence as a one-call API. Replaces parts of Fantasy Football Hub (£19.99/yr), FPL Review ($5/mo), Fantasy Football Scout (£25/yr), and LiveFPL Premium with pay-per-event pricing — and uniquely gives you the full historical archive (2016-17 → 2025-26) for FPL model training.

What does this Actor do?

Seven modes, each producing a distinct output shape:

  • gameweek_picks — top 5 captain candidates / transfer-in targets / differentials / sell candidates for the upcoming gameweek, with composite scoring + reason tags. Optional Gemini AI verdict.
  • wildcard_optimizer — optimal 15-man squad given a budget, position quotas (2/5/5/3), 3-per-club cap, lock/exclude lists. Auto-picks captain + vice + formation.
  • mini_league_intel — given any league ID, surfaces captain spread + true differential picks (high in this league, low globally) + you-vs-the-field deltas.
  • price_change_predictor — tonight's predicted risers and fallers from net-transfer-rate vs ownership (community-known FPL price algorithm).
  • manager_dashboard — given a manager ID, full season trajectory + chip usage + best/worst captains (with real points from live data) + per-transfer P&L over a 5-GW window.
  • live_tracker — single snapshot OR pollable refresh during a live gameweek. Per-manager live points + per-league live standings.
  • historical_seasons — 10 years of FPL data via the vaastav community archive. Per-gameweek, season totals, fixtures, or players. schemaTier flag (full / no_xg / basic) documents per-season coverage honestly.

All data is pulled from the public Fantasy Premier League API (no auth, no key, no proxy required) plus the vaastav GitHub archive. Stress-tested at 250 concurrent requests with zero rate-limiting (full report in _research/fpl-stress/ if interested).

Why use this Actor?

  1. FPL managers scheduling weekly picks runs — pipe captain/transfer recommendations to Slack/Discord/Sheets without writing API code.
  2. Mini-league competitors tracking the field — see who captained what, find the player who's 80% owned in your league but 5% globally, and get differentials before your rivals.
  3. Price-change watchers running a nightly job — predict tonight's £0.1m moves before they hit, time your transfers around the threshold.
  4. Data scientists / model builders — pull every per-gameweek snapshot from 2016-17 onwards with a single mode call. xG/xA/xGI fields available from 2021-22.
  5. FPL content creators (podcasters, newsletter writers, Twitter analysts) — generate weekly captain briefings, Gemini-powered verdicts, mini-league scouting reports.

How to use this Actor

  1. Pick a mode (see modes list above).
  2. Fill in the relevant section's fields (manager IDs, league IDs, gameweek, etc.).
  3. Hit Run, or schedule it on Apify's scheduler.
  4. Export the dataset as JSON / CSV / Excel, or pipe to a webhook.

Free trial: first 10 chargeable events per run are free. Charges apply only after that.

Input examples

1. Gameweek picks (default)

{
"mode": "gameweek_picks",
"picksOptions": {
"topN": 5,
"differentialThresholdPct": 5.0,
"fixtureLookahead": 3
},
"enableAiVerdict": false
}

Returns 4 categories × 5 rows each (captain / transfer-in / differential / sell). Set enableAiVerdict: true to add a 1-paragraph Gemini brief at +$0.05.

2. Wildcard optimizer with budget cap

{
"mode": "wildcard_optimizer",
"optimizerOptions": {
"budget": 100.0,
"lockedPlayers": ["430", "328"],
"excludedTeams": ["1"]
}
}

Locks Haaland (id 430) and Salah (id 328), excludes Arsenal players (team id 1). Returns one row with the optimal 15-man squad, formation, total cost.

3. Mini-league intel for the global Overall league

{
"mode": "mini_league_intel",
"leagueIds": ["314"],
"leagueOptions": {
"topManagersPerLeague": 50,
"compareToManagerId": "1000000"
}
}

Returns a league summary (captain spread + differentials + your-vs-field comparison) plus 50 league_manager rows.

4. Tonight's price changes

{
"mode": "price_change_predictor",
"pricePredictorOptions": {
"minConfidence": 0.5,
"includeNeutral": false
}
}

Returns predicted risers + fallers above 50% confidence, sorted by transfer activity.

5. Your season dashboard

{
"mode": "manager_dashboard",
"managerIds": ["1000000"]
}

Returns one dashboard row + one transfer_roi row per transfer you've made (P&L vs the player you sold).

6. Live tracker — poll every 60s during the GW

{
"mode": "live_tracker",
"managerIds": ["1000000"],
"leagueIds": ["314"],
"gameweek": 36,
"liveOptions": { "refreshIntervalSec": 60, "maxSnapshots": 30 }
}

Snapshots every minute for up to 30 polls (~30 min of live coverage).

7. Historical training data — 4 most recent seasons

{
"mode": "historical_seasons",
"historicalOptions": {
"seasons": ["2021-22", "2022-23", "2023-24", "2024-25"],
"dataType": "per_gameweek"
},
"maxItems": 100000
}

Pulls ~22,800 rows × 4 = ~91,200 per-player-per-GW records with full xG/xA fields. About 6 seconds total runtime + ~22 MB of data.

Output

Every row has a type field discriminating its shape. Sample captain_pick:

{
"type": "captain_pick",
"scrapedAt": "2026-05-10T08:48:56.437Z",
"source": "fpl-api",
"player": {
"id": 430, "code": 223094, "webName": "Haaland",
"team": { "id": 13, "name": "Man City", "shortName": "MCI" },
"position": "FWD", "cost": 14.7, "status": "a",
"selectedByPercent": 64.3, "form": 5.5,
"expectedGoalInvolvements": 27.42, "expectedGoalInvolvementsPer90": 0.86,
"epNext": 6, "setPiece": { "penaltiesOrder": 1, "cornersOrder": null, "freekicksOrder": null }
},
"gameweek": 37,
"upcomingFixture": { "id": 362, "home": {...}, "away": {...}, "...": "..." },
"pickScore": 62.7,
"fixtureLookaheadDifficulty": 2.7,
"reasonTags": ["good_form", "set_piece_taker", "easy_fixture", "home_advantage", "xgi_leader", "high_ep_next", "current_dreamteam"],
"rank": 1
}

Data fields per row type

TypeKey fields
captain_pick / transfer_in / differentialplayer (full normalized object), pickScore, reasonTags, rank, upcomingFixture, fixtureLookaheadDifficulty
sell_candidateplayer, reasonTags (e.g. "injured", "form_drop"), rank
optimizer_squadsquad[15] with isStarter/isCaptain/isViceCaptain flags, totalCost, formation, totalExpectedPoints
league_summaryleague, gameweek, topCaptainCounts, topDifferentials, comparedManagerDelta
league_managerleague, manager, rank, lastRank, eventTotal, total, captainElementId
price_change_predictionplayer, predictedDirection (rise/fall/neutral), netTransferRate, confidence, predictedNewCost
manager_dashboardmanager, perGameweek[], chipUsage[], captainHistory[], bestCaptain, worstCaptain, pastSeasons[]
manager_transfer_roimanager, transfer (gw, in, out), pointsAfter5gw, verdict
live_snapshotsnapshotAt, gameweek, manager (live points + XI), league (top managers ranked by live points), bonusFinalized
historical_player_gwseason, schemaTier, name, team, position, round, total_points, expected_goals, value, ... (40+ raw fields)
ai_verdictgameweek, brief, captainRecommendation, topTransferAdvice

Pricing

Pay only for what you use. First 10 chargeable events per run are free (trial cap).

EventPrice
apify-actor-start$0.01 (auto-fired by platform per GB memory)
gameweek-picks-fetched$0.05 (primary — bundles all 4 pick categories)
optimizer-run$0.10
mini-league-analyzed$0.02 (per league)
price-change-predicted$0.005 (per flagged player)
manager-dashboard-fetched$0.01 (per manager)
live-snapshot$0.005 (per snapshot)
historical-snapshot-fetched$0.01 (per season-gameweek pair)
ai-verdict$0.05 (opt-in only)

Typical run costs

WorkflowEventsTotal cost
Weekly captain pick run1 picks + 1 actor-start$0.06
Picks + AI verdict1 picks + 1 ai + 1 start$0.11
Wildcard optimizer1 optimizer + 1 start$0.11
Daily 50-manager mini-league check1 league + 1 start$0.03
100-player price-change scanup to 100 × $0.005 + startup to $0.51
Manager dashboard1 manager + 1 start$0.02
Live tracker (30 snapshots)30 × $0.005 + start$0.16
Full 2024-25 season pull (38 GWs)38 × $0.01 + start$0.39

Within trial (first 10 events free), most workflows are essentially free for casual use.

Tips & advanced options

  • Schedule it. Run gameweek_picks every Friday at 10am UTC, pipe to Slack via Apify's webhook integration. Run price_change_predictor daily at 11pm UTC (~3 hours before FPL's nightly price update).
  • Lock premiums in optimizer. The optimizer maximizes sum of ep_next within constraints, which often surfaces value picks over premium attackers due to the 3-per-club cap. If you prefer star power, set lockedPlayers: ["430"] to force Haaland in.
  • Mini-league differentials. A "differential" in this actor is a player highly owned in your league (>25%) but rare globally (<10%). Useful for finding what the elite are doing that the masses haven't caught onto.
  • Historical schema tiers. Seasons 2022-23 onwards have full xG/xA/xGI/xGC fields. 2020-21 to 2021-22 have most fields but no Opta xG. Earlier seasons (2016-17 to 2019-20) have basic stats only — name/round/total_points/value but no position/team/xP. The schemaTier field on each row tells you what to expect.
  • Live tracker memo. When polling, the actor clears its in-run cache between snapshots so each one fetches fresh live data.
  • Fantasy Premier League data: pulled from fantasy.premierleague.com/api/ — the same JSON endpoints powering the official FPL website. Public, unauthenticated, and used by every FPL tool that exists. Note: this is not an officially documented public API; the Premier League could change or restrict it at any time without notice. The endpoints have been stable since ~2017.
  • Historical archive: pulled from vaastav/Fantasy-Premier-League (MIT-licensed community archive maintained by Vaastav Anand and contributors).
  • All FPL data and team names © Premier League. Use of this actor is for personal analytical use; no warranty of accuracy is implied.
  • Price-change predictions are based on a community-known heuristic (net-transfer-rate-vs-ownership thresholds), not an official FPL formula. Confidence values are empirical, not contractual.

FAQ

Q: How do I find my manager ID? A: Log into the FPL website, navigate to "Points" or "Pick Team", and look at the URL. It will be fantasy.premierleague.com/entry/<your-id>/event/N.

Q: How do I find a mini-league ID? A: From your league's standings page, the URL is fantasy.premierleague.com/leagues/<league-id>/standings/c.

Q: Why is the optimizer leaving budget unspent? A: The optimizer uses a 1-for-1 swap heuristic which can get stuck on the 3-per-club cap (e.g. it can't add Haaland because there are already 3 Man City players in the squad). To work around: pre-lock your premium picks via lockedPlayers, then the optimizer fills the rest around them.

Q: How accurate are the price-change predictions? A: The thresholds (rise > 0.0145, fall < -0.003 net-transfer-rate) are community-known approximations based on observed FPL price-change behavior. FPL never publishes the formula, so accuracy varies but is usually good for high-confidence (≥0.8) flags.

Q: Can I get H2H league data? A: Not in v1. The classic-league endpoints work for H2H members but the H2H-specific endpoints (matches, knockouts) aren't yet wired. File an issue on the actor page and I'll add it.

Q: Does the AI verdict cost extra? A: Yes, $0.05 per verdict. It's opt-in via enableAiVerdict: true in gameweek_picks mode only.

Q: Will this break when FPL changes their API? A: The endpoints have been stable since ~2017. If they break, every FPL tool breaks at once — the community pressure forces a quick fix. The actor will continue to fetch what it can and log warnings on partial failures.

Support

Issue with the actor? Open a ticket on the actor's Apify page — I respond within 48h.