Fantasy Premier League (FPL) Official API Scraper
Pricing
Pay per event
Fantasy Premier League (FPL) Official API Scraper
Scrapes the official Fantasy Premier League API — all ~700 players with xG, xA, ICT index, ownership, gameweek-by-gameweek point history, current season fixtures, and optional manager / mini-league data — delivered as a clean normalized dataset.
Pricing
Pay per event
Rating
0.0
(0)
Developer
BowTiedRaccoon
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Scrapes the official Fantasy Premier League API — all ~700+ players with xG, xA, ICT index, ownership percentage, per-gameweek point history, current season fixtures — delivered as a clean, normalized Apify dataset. Built for FPL analytics tools, content sites, fantasy-data pipelines, and DFS modellers.
What you get
- All active FPL players (~700-840 depending on season) with full stats: goals, assists, clean sheets, expected goals (xG), expected assists (xA), ICT index, form, PPG, ownership percentage, current price, and GW transfer activity.
- Gameweek history (optional): per-GW points, minutes played, price, transfers in/out, and selection count — one timeline per player.
- Fixtures (optional): the full current-season fixture list with home/away teams, scores, kickoff times, and gameweek numbers.
Inputs
| Field | Type | Default | Description |
|---|---|---|---|
maxItems | integer | 0 (all) | Maximum player records to return. 0 = all ~700+ players. |
includeHistory | boolean | false | Fetch per-player gameweek history. Adds one API call per player — use for analytics, leave off for a fast bootstrap-only run. |
includeFixtures | boolean | false | Append fixture records to the dataset after players. |
Output schema
Each player record contains:
| Field | Type | Description |
|---|---|---|
player_id | integer | FPL element ID |
web_name | string | Short name (e.g. "Salah") |
first_name / second_name | string | Full name |
team | string | Club name |
position | string | GKP / DEF / MID / FWD |
now_cost | number | Price in 0.1m units (130 = £13.0m) |
total_points | integer | Total FPL points this season |
form | number | Rolling 30-day average points per game |
points_per_game | number | Season average points per game |
selected_by_percent | number | Ownership percentage |
minutes | integer | Minutes played |
goals_scored / assists / clean_sheets | integer | Season totals |
expected_goals / expected_assists | number | xG and xA |
ict_index | number | Influence, Creativity, Threat composite |
transfers_in_event / transfers_out_event | integer | Current GW transfer activity |
gameweek_history | string | JSON array of per-GW stats (when includeHistory: true) |
source | string | Source API endpoint |
Fixture records use position: "FIXTURE" and pack fixture metadata into the gameweek_history field as a JSON object.
Use cases
- FPL analytics dashboards — pull the full player pool into your tool without maintaining your own poller.
- DFS and betting models — xG, xA, ICT index, and ownership in one call, ready for modelling.
- Content automation — generate weekly player rankings, top transfers, value picks.
- Historical analysis — gameweek history gives you the full season-to-date timeline per player.
Performance
The bootstrap-static endpoint returns ~2 MB of JSON in a single call — typically under 1 second. A full run with includeHistory: true for all 700+ players takes a few minutes at the polite 100ms call rate. A bootstrap-only run (default) completes in seconds.
Cost
This actor uses the official open FPL API — no proxy required. Running cost is near zero. Priced at the standard PPE rate with a 0.8x coefficient reflecting the minimal compute needed.
Notes
- The FPL API is public and official. No authentication, no proxy, no anti-bot measures.
- Player IDs are stable within a season but may change between seasons as new elements are added.
- The
gameweek_historyfield is a JSON string — deserialize withJSON.parse()in your downstream pipeline. - Fixture records are identifiable by
position: "FIXTURE"in the dataset.