FPL Intelligence - Picks, Optimizer, Watchlist, History
Pricing
Pay per event
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
Actor stats
2
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
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.schemaTierflag (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?
- FPL managers scheduling weekly picks runs — pipe captain/transfer recommendations to Slack/Discord/Sheets without writing API code.
- 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.
- Price-change watchers running a nightly job — predict tonight's £0.1m moves before they hit, time your transfers around the threshold.
- 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.
- FPL content creators (podcasters, newsletter writers, Twitter analysts) — generate weekly captain briefings, Gemini-powered verdicts, mini-league scouting reports.
How to use this Actor
- Pick a
mode(see modes list above). - Fill in the relevant section's fields (manager IDs, league IDs, gameweek, etc.).
- Hit Run, or schedule it on Apify's scheduler.
- 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
| Type | Key fields |
|---|---|
captain_pick / transfer_in / differential | player (full normalized object), pickScore, reasonTags, rank, upcomingFixture, fixtureLookaheadDifficulty |
sell_candidate | player, reasonTags (e.g. "injured", "form_drop"), rank |
optimizer_squad | squad[15] with isStarter/isCaptain/isViceCaptain flags, totalCost, formation, totalExpectedPoints |
league_summary | league, gameweek, topCaptainCounts, topDifferentials, comparedManagerDelta |
league_manager | league, manager, rank, lastRank, eventTotal, total, captainElementId |
price_change_prediction | player, predictedDirection (rise/fall/neutral), netTransferRate, confidence, predictedNewCost |
manager_dashboard | manager, perGameweek[], chipUsage[], captainHistory[], bestCaptain, worstCaptain, pastSeasons[] |
manager_transfer_roi | manager, transfer (gw, in, out), pointsAfter5gw, verdict |
live_snapshot | snapshotAt, gameweek, manager (live points + XI), league (top managers ranked by live points), bonusFinalized |
historical_player_gw | season, schemaTier, name, team, position, round, total_points, expected_goals, value, ... (40+ raw fields) |
ai_verdict | gameweek, brief, captainRecommendation, topTransferAdvice |
Pricing
Pay only for what you use. First 10 chargeable events per run are free (trial cap).
| Event | Price |
|---|---|
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
| Workflow | Events | Total cost |
|---|---|---|
| Weekly captain pick run | 1 picks + 1 actor-start | $0.06 |
| Picks + AI verdict | 1 picks + 1 ai + 1 start | $0.11 |
| Wildcard optimizer | 1 optimizer + 1 start | $0.11 |
| Daily 50-manager mini-league check | 1 league + 1 start | $0.03 |
| 100-player price-change scan | up to 100 × $0.005 + start | up to $0.51 |
| Manager dashboard | 1 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_picksevery Friday at 10am UTC, pipe to Slack via Apify's webhook integration. Runprice_change_predictordaily at 11pm UTC (~3 hours before FPL's nightly price update). - Lock premiums in optimizer. The optimizer maximizes sum of
ep_nextwithin constraints, which often surfaces value picks over premium attackers due to the 3-per-club cap. If you prefer star power, setlockedPlayers: ["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
schemaTierfield 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.
Legal / data sources
- 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.