Understat xG Player Stats Scraper
Pricing
from $4.00 / 1,000 results
Understat xG Player Stats Scraper
Scrapes Understat player season stats for Premier League, La Liga, Bundesliga, Serie A, Ligue 1, and RFPL. Returns each player as a flat row with xG, xA, shots, key passes, and per-90 rates.
Pricing
from $4.00 / 1,000 results
Rating
0.0
(0)
Developer
ParseForge
Maintained by CommunityActor stats
0
Bookmarked
7
Total users
0
Monthly active users
14 days ago
Last modified
Categories
Share
Understat xG Player Stats Scraper
Scrape expected goals and player stats from Understat for any of the Big 5 leagues and the Russian Premier League. Every record returns a player's xG, assists, shots, key passes, and per-90 metrics for a full season. Export to CSV, JSON, Excel, or XML.
Understat is the reference for public expected goals data, but browsing season by season and copying tables is slow. This Actor reads the player stats tables directly for the league and campaign you choose, from 2014 through the current season. You get a clean dataset of every outfield player's attacking and passing numbers in one run.
| Who uses it | What they scrape Understat for |
|---|---|
| Football data analysts | Build expected goals models and compare player overperformance across seasons. |
| Fantasy football players | Identify undervalued midfielders and forwards whose underlying xG and key pass numbers signal future points. |
| Scouts and recruiters | Screen players in a target league by their xG per 90 and shot volume to shortlist attacking talent. |
| Sports journalists | Pull a season's attacking stats to support a transfer rumour or tactical piece with data. |
What it does
This Actor collects Understat player season stats for a chosen league and campaign, and returns each player as a flat row with their xG, xA, shots, key passes, and per-90 rates.
- โฝ League selector: Premier League, La Liga, Bundesliga, Serie A, Ligue 1, and the Russian Premier League.
- ๐ Season picker: Any campaign from 2014/2015 through the current season, driven by the start year.
- ๐ข Record cap: Set a maximum number of player rows to collect, from a single test record up to a million per run.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with Understat data
๐ Build an xG overperformance model.
A data analyst pulls the last three Premier League seasons, joins the xG and actual goals columns, and ranks players by the gap to find the most clinical finishers.
๐ฅ Scout a league for undervalued creators.
A recruitment analyst scrapes the current Ligue 1 season, filters for players under 23 with above-average xA per 90, and exports a shortlist for the scouting team.
๐ Win your draft fantasy league.
A fantasy player scrapes the latest Bundesliga season, sorts midfielders by key passes and xG per 90, and picks a differential ahead of the next gameweek.
๐ Back a transfer story with data.
A journalist scrapes the current Serie A campaign, grabs the top 20 players by xG, and uses the numbers to argue why a striker deserves a big move.
Why choose this scraper
| What you get | |
|---|---|
| Per-90 rates | xG, xA, shots, and key passes normalised per 90 minutes, ready for fair player comparisons. |
| Full season coverage | Every outfield player who appeared in the selected league and campaign, from 2014 onward. |
| Flat, analysis-ready schema | One row per player with no nested objects, so you can load it straight into Excel, R, or Python. |
How it compares
This Actor focuses on player season stats in a flat, analysis-ready format. The other Understat Actors on Apify cover team aggregates, match data, and shot-level detail that this one does not.
| Feature | ParseForge | Understat xG & Shot Data - Football Analytics | Understat xG Football Data Scraper |
|---|---|---|---|
| Player season stats (xG, xA, shots, key passes) | Yes | Yes | Yes |
| Per-90 normalised metrics | Yes | Not listed | Not listed |
| Team season aggregates | Not listed | Yes | Yes |
| Match-level xG timelines and shot coordinates | Not listed | Yes | Not listed |
| Player career history across multiple seasons | Not listed | Yes | Not listed |
| Flat CSV/JSON row per player with no nested objects | Yes | Not listed | Not listed |
Configure the run
Drive the Actor by picking a league and a season start year. The record cap stops the run after your chosen number of players, so you can sample or grab the full league. The Input tab lists every parameter.
A first run with the defaults:
{"season": 2024,"maxItems": 10}
A larger pull:
{"season": 2024,"maxItems": 200}
Pricing
Pay-per-result: $0.005 per result collected. You pay only for the results written to your dataset.
| Results collected | Approximate cost |
|---|---|
| 100 results | $0.50 |
| 1,000 results | $5.00 |
| 10,000 results | $50.00 |
New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the Understat xG Player Stats Scraper.
- Set your inputs and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to Understat through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
$claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/understat-xg-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting no results?
Check that the league and season combination is valid. Understat only has data from 2014 onward, and a season that has not started yet will return an empty table. Try a known past season like EPL 2023 to confirm the Actor is working.
The run finished but the dataset has fewer rows than I expected.
The maxItems input caps the number of records. If you set it to 10, you will only get 10 players. Increase it to a number larger than the league's player count, or set it to the maximum of one million, to get everyone.
Some players are missing from the output.
Understat only lists outfield players in its main stats table. Goalkeepers are excluded. Also, players with very few minutes may not appear if they fall below Understat's minimum threshold for the season.
The xG values look different from another site.
Different data providers use different expected goals models. Understat's model is its own. Small differences in xG totals between Understat, Opta, and StatsBomb are normal and reflect different shot-quality calculations.
FAQ
| Question | Answer |
|---|---|
| What is xG and why does it matter? | Expected goals (xG) measures the quality of a shot based on factors like distance, angle, and assist type. It is a better predictor of future goals than actual goals because it strips out finishing luck. |
| Which leagues can I scrape? | The Premier League, La Liga, Bundesliga, Serie A, Ligue 1, and the Russian Premier League. These are the six leagues Understat covers with full player stats. |
| How far back does the data go? | The 2014/2015 season is the earliest available. Set the season input to 2014 for that campaign, or any year up to the current season. |
| Does this Actor get team stats or match data? | No, this Actor is focused on player season stats. For team aggregates, shot-level data, or match timelines, use the Understat xG & Shot Data Actor by constructive_calm. |
| What does the per-90 column mean? | It normalises a player's xG, xA, shots, and key passes per 90 minutes played. This lets you compare a regular starter with a super-sub on a level playing field. |
| Can I filter by a specific player or team? | The Actor scrapes the full league table for the season you pick. You can filter the resulting dataset by player name or team in your spreadsheet or script after the run. |
| Why would I use this instead of the Understat website? | The website shows one season at a time in a paginated table. This Actor gives you the whole league in one structured file, ready for analysis, without copying and pasting. |
| Is an API key or login required? | No. The Actor reads the public stats pages on Understat, so you do not need to register an app or manage tokens. |
| What output formats are supported? | You can export your dataset as CSV, JSON, Excel, or XML from the Apify run console. |
| How do I get the current season's data? | Set the season input to the start year of the current campaign. For example, use 2024 for the 2024/2025 season. The Actor will pull whatever Understat has published so far. |
Related actors
Browse the full ParseForge collection for more scrapers.
๐ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
โ ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Understat. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
