# Fantasy Premier League Scraper (`parselab/fpl-fantasy-premier-league-scraper`) Actor

Get Fantasy Premier League player stats, prices, form, expected goals, ownership, injury news and the next fixtures with difficulty. Also pull gameweek history, past seasons, live points, fixtures, gameweek summaries, league tables and manager squads. Export to CSV or Excel.

- **URL**: https://apify.com/parselab/fpl-fantasy-premier-league-scraper.md
- **Developed by:** [ParseLab](https://apify.com/parselab) (community)
- **Categories:** Sports, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $11.25 / 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

## Fantasy Premier League Scraper

This Fantasy Premier League scraper returns every player in the game with the numbers managers use to pick a team: price, points, form, points per game, ownership, minutes, goals, assists, expected goals and assists, ICT index, injury news and how likely the player is to play. Each player row also carries the next fixtures with opponent, home or away and difficulty, and an average difficulty score for those fixtures.

Beyond the player list you can pull the full gameweek history of every player, past seasons, the fixture list with scorers and bonus points, live points with a breakdown for a gameweek, gameweek summaries with the most captained player and chip usage, league tables and the squads of any manager team.

Fantasy managers, content creators, betting analysts and data scientists use it to build differentials lists, fixture tickers, price change trackers and dashboards.

### What can you do with this Fantasy Premier League scraper?

- Get all Fantasy Premier League players with price, form and ownership
- Rank players by expected goal involvements, points per million or ICT index
- Find budget midfielders under a price with a good fixture run
- List injured, doubtful and suspended players with the latest news
- Build a fixture difficulty ticker for every team
- See how a player scored in every gameweek
- Compare a player's past seasons
- Get live points with the reason for every point in a gameweek
- Download a league table with rank movement
- Look at a manager's chips, transfers, bank and squad
- Export Fantasy Premier League data to CSV or Excel

### What data can you extract from Fantasy Premier League?

| Mode | One row is | Highlights |
|---|---|---|
| Players | One player | Price, points, form, ownership, minutes, goals, assists, expected stats, ICT, ranks, news, chance of playing, next fixtures and difficulty, points per million |
| Gameweek history | One player and gameweek | Opponent, home or away, points, minutes, all stats, expected stats, price, transfers in and out |
| Past seasons | One player and season | Start and end price, total points and season stats |
| Fixtures | One match | Score, difficulty for each side, goal scorers, assists, cards, bonus points |
| Teams | One team | Table position and strength ratings home and away |
| Gameweeks | One gameweek | Deadline, average and highest score, top player, most captained, most transferred in, chip plays |
| Live points | One player in one gameweek | Points and a breakdown by stat |
| League table | One team in a league | Rank, rank movement, gameweek and total points |
| Manager teams | One manager team | Overall rank, history by gameweek, past seasons, chips, squad picks with captain |

Real names of managers are not included. Manager rows show the team name and team ID only.

### How to scrape Fantasy Premier League data

1. Choose **What to collect**, for example Players.
2. Optionally filter by team, position, price, minutes or availability.
3. Pick how to sort the list, for example by form.
4. Set **Max Items** and click **Start**.
5. Export the dataset as CSV, Excel or from the Apify console.

### Input example

```json
{
  "mode": "players",
  "positions": ["MID"],
  "maxPrice": 8.0,
  "minMinutes": 300,
  "sortBy": "expectedGoalInvolvements",
  "nextFixtures": 5,
  "maxItems": 50
}
```

### Player output example

```json
{
  "playerId": 124,
  "webName": "Groß",
  "team": "Brighton",
  "position": "MID",
  "price": 5.7,
  "statusLabel": "available",
  "totalPoints": 47,
  "form": 9.4,
  "pointsPerGame": 9.4,
  "selectedByPercent": 23.5,
  "minutes": 450,
  "goalsScored": 3,
  "assists": 4,
  "expectedGoals": 1.77,
  "expectedAssists": 0.86,
  "expectedGoalInvolvements": 2.63,
  "ictIndex": 40.3,
  "pointsPerMillion": 8.25,
  "avgFixtureDifficultyNext": 3.8,
  "nextFixtures": [
    { "gameweek": 5, "opponent": "ARS", "home": true, "difficulty": 4 },
    { "gameweek": 6, "opponent": "SUN", "home": false, "difficulty": 3 }
  ]
}
```

### How much does it cost to scrape Fantasy Premier League data?

You pay per result: $15 per 1,000 rows plus a tiny start fee. The free plan returns up to 10 rows per run. The full player list is about 670 rows, and a full gameweek history for every player is a few thousand rows.

### Tips for better results

- Use the maximum price and minimum minutes filters together to find playing budget options.
- Sort by expected goal involvements to find players who are due more returns than their points show.
- Prices in the data are in millions, so 5.7 means 5.7m.
- Live points work best after matches have started. Leave gameweeks empty to use the current one.
- For gameweek history of a whole squad, filter by team and run the Actor after each deadline.

### Who uses Fantasy Premier League data?

- **Fantasy managers** shortlist transfers by form, fixtures and expected stats.
- **Content creators** publish tickers, tips and charts.
- **Analysts** study price changes and ownership.
- **Developers** feed apps and Discord bots.

### Automate and connect

Schedule the Actor an hour before every deadline to refresh prices, injury news and ownership. Send finished datasets to Google Sheets, Zapier, Make or n8n, or trigger a webhook when a run ends.

### FAQ

**Do I need a Fantasy Premier League account?**
No. The Actor works without any login.

**How current is the data?**
It matches what the game shows at the time of the run, including prices, injury news and ownership.

**Can I get any manager's team?**
Yes, if you know the team ID. It is in the address of a team page on the game website. Only information the game shows publicly is returned.

**Why are some player numbers empty early in the season?**
Expected stats and form need matches to be played first.

**Does it cover other fantasy games?**
No. This Actor covers the official Fantasy Premier League only.

### Legal note

This Actor collects information that is publicly visible on the website. Check the source site's terms and your local rules before using the data. It is not affiliated with the Premier League. Nothing here is betting advice.

### Support

Missing a field or found a bug? Open an issue from the Actor page.

# Actor input Schema

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

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000.

## `mode` (type: `string`):

Players gives one row per player with current stats, price, form, expected numbers and the next fixtures. Gameweek history gives one row per player per gameweek. Past seasons gives one row per player per earlier season. Fixtures, teams and gameweeks describe the season. Live gives points for a gameweek with a breakdown. League gives a league table. Managers gives team history and squads.

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

Premier League teams to keep, by short name or name, for example MCI, ARS or Liverpool.

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

Positions to keep: GKP, DEF, MID or FWD.

## `playerNames` (type: `array`):

Keep only players that match these names, for example Haaland or Salah. Partial names work.

## `statuses` (type: `array`):

Keep players by availability: available, doubtful, injured, suspended, unavailable or not in squad.

## `minPrice` (type: `number`):

Lowest current price in millions, for example 4.5.

## `maxPrice` (type: `number`):

Highest current price in millions, for example 8.0.

## `minMinutes` (type: `integer`):

Only players who have played at least this many minutes this season.

## `sortBy` (type: `string`):

Order of the player list, highest first.

## `nextFixtures` (type: `integer`):

How many upcoming fixtures to attach to each player, with opponent and difficulty.

## `gameweeks` (type: `array`):

Gameweek numbers to keep, for example 1, 2, 3. For live points and manager squads the current or last finished gameweek is used when empty.

## `leagueId` (type: `integer`):

Classic league number for league mode. 314 is the overall league. You can find a league number in the address of its page on the game website.

## `entryIds` (type: `array`):

Team numbers for manager mode. You can find a team number in the address of a team page on the game website.

## Actor input object example

```json
{
  "maxItems": 10,
  "mode": "players",
  "sortBy": "totalPoints",
  "nextFixtures": 5,
  "leagueId": 314
}
```

# 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 = {
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parselab/fpl-fantasy-premier-league-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 = { "maxItems": 10 }

# Run the Actor and wait for it to finish
run = client.actor("parselab/fpl-fantasy-premier-league-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 '{
  "maxItems": 10
}' |
apify call parselab/fpl-fantasy-premier-league-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parselab/fpl-fantasy-premier-league-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/KHLoeO3KNSiW5myqQ/builds/W5TRefU4ERj8d1FCx/openapi.json
