Premier League API: List top players by stat
Ranks Premier League players for a season by goals, assists or goalkeeper clean sheets, with each player's club and nationality.
Unofficial. Not affiliated with or endorsed by Premier League.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Stat optional
stat Statistic to rank players by, for example assists.
goals (default)
One of
goals,assists,clean_sheets.- Season optional
season Season in YYYY/YY format, for example 2025/26. Leave out for the current season.
current (default)
- Max Results optional
max_results Maximum players to return, for example 20.
20 (default)
Whole number from 1 to 100.
Input as JSON
{}Output
{ "stat": "goals", "season": "2026/27" , "players": [ { "club": "Manchester City", "rank": 1, "player": "Erling Haaland", "player_url": "https://www.premierleague.com/en/players/223094" , "stat_value": 8, "nationality": "Norway" }, { "club": "Chelsea", "rank": 2, "player": "João Pedro", "player_url": "https://www.premierleague.com/en/players/475168" , "stat_value": 5, "nationality": "Brazil" }, { "club": "Liverpool", "rank": 2, "player": "Alexander Isak", "player_url": "https://www.premierleague.com/en/players/219168" , "stat_value": 5, "nationality": "Sweden" } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"premierleague.com/list_top_scorers","input":{}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "premierleague.com/list_top_scorers" , "input": {}})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "premierleague.com/list_top_scorers" , "input": {} }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run premierleague.com/list_top_scorers# with {}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "properties": { "stat": { "enum": [ "goals", "assists", "clean_sheets" ], "type": "string", "default": "goals", "description": "Statistic to rank players by, for example assists." }, "season": { "type": "string", "default": "current", "description": "Season in YYYY/YY format, for example 2025/26. Leave out for the current season." }, "max_results": { "type": "integer", "default": 20, "maximum": 100, "minimum": 1, "description": "Maximum players to return, for example 20." } }}Output schema
{ "type": "object", "required": [ "stat", "season", "players" ], "properties": { "stat": { "type": "string", "description": "Requested statistic." }, "season": { "type": "string", "description": "Season in YYYY/YY format." }, "players": { "type": "array", "items": { "type": "object", "required": [ "rank", "player", "club", "nationality", "stat_value", "player_url" ], "properties": { "club": { "type": [ "string", "null" ] }, "rank": { "type": "integer" }, "player": { "type": "string" }, "player_url": { "type": "string", "description": "Official player page." }, "stat_value": { "type": "number" }, "nationality": { "type": [ "string", "null" ] } } }, "description": "Players in descending order of the selected stat. Ties share a rank." } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
premierleague.com/list_top_scorers- Returns
- rank, player, club, nationality, stat value, player URL
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method premierleague.com/list_top_scorers with the inputs above.
Ask your agent
- Who scored the most Premier League goals in the 2023/24 season? Show me the top 15 with their clubs and nationalities.
- Rank the top 10 assist providers in the 2022/23 English top flight.
- Which goalkeepers kept the most clean sheets last season? Give me the top 25 list.
- On premierleague.com, show the leading goal scorers for the 2019/20 campaign.
- I need the top 20 players by assists for 2024/25, including each player's club, nationality, and profile link.
See more
All Premier League methodsLooks up a Premier League player by name and returns the profile and either career totals or the stats for a chosen season. If names clash, a current Premier League player is preferred.
premierleague.com/get_player_statsGets the Premier League table for the current season or a chosen season, with each club's last five league results.
premierleague.com/get_league_tableGets Premier League fixtures and results in a date range, with kickoff times in your chosen time zone. Returns up to 380 matches.
premierleague.com/get_fixtures_and_resultsLists league leaders for a season and statistic in NBA basketball, NFL football, MLB baseball or NHL hockey. If no season is given, it uses the latest season with published leaders.
sports-reference.com/list_season_leadersLooks up an ESPN player by name and returns season and career statistics. Use a league to tell apart players with the same name, and a season year or label to pick a past season.
espn.com/get_player_statsLooks up a Yahoo Sports player by name and returns the player's regular-season statistics for a season, alongside career totals. Each stat includes season and career values.
sports.yahoo.com/get_player_statsGets a football player's season statistics on SofaScore by name, with an optional competition and season (defaults: the player's main league and the current season). Unavailable statistics are null.
sofascore.com/get_player_season_statsLooks up an NHL player by name, link or ID and returns the profile with regular-season stats for a season and career totals.
nhl.com/get_player_stats