# Premier League API

> Premier League returns league tables, fixtures, results and player stats as a workflow and API.

Premier League's Get league table returns club standings and recent form; choose a season or leave it blank for the current season. Get fixtures and results returns matches in a date range; optionally choose a club, match type and time zone.

- Page: https://fous.com/tools/premier-league
- Handle: `@premier-league`
- Category: [Sports](https://fous.com/tools/category/sports)
- Source website: https://premierleague.com
- Last verified: Sep 29, 2026

## Methods

### Get fixtures and results

Operation `get_fixtures_and_results`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get Premier League fixtures and results in a date range, with kickoff times in your chosen time zone. Returns up to 380 matches.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `club` | string | no | `"Arsenal"` | Club name to include; omit for all clubs. Example: Arsenal. |
| `show` | string | no | `"both"` | Include upcoming fixtures, past results, or both. Example: both. |
| `end_date` | string | no | `"2026-10-12"` | Last match date to include; defaults to 14 days from today. Example: 2026-10-12. |
| `time_zone` | string | no | `"Europe/London"` | Time zone for kickoff and date filtering. Example: America/New_York. |
| `start_date` | string | no | `"2026-09-14"` | First match date to include; defaults to 14 days ago. Example: 2026-09-14. |
| `max_results` | integer | no | `5` | Most matches to return, up to 380. Example: 50. |

**Input schema**

```json
{
  "type": "object",
  "properties": {
    "club": {
      "type": "string",
      "description": "Club name to include; omit for all clubs. Example: Arsenal.",
      "examples": [
        "Arsenal",
        "Liverpool"
      ]
    },
    "show": {
      "enum": [
        "fixtures",
        "results",
        "both"
      ],
      "type": "string",
      "default": "both",
      "description": "Include upcoming fixtures, past results, or both. Example: both.",
      "examples": [
        "both",
        "results",
        "fixtures"
      ]
    },
    "end_date": {
      "type": "string",
      "format": "date",
      "description": "Last match date to include; defaults to 14 days from today. Example: 2026-10-12.",
      "examples": [
        "2026-10-12",
        "2026-09-28",
        "2026-07-02"
      ]
    },
    "time_zone": {
      "type": "string",
      "default": "Europe/London",
      "description": "Time zone for kickoff and date filtering. Example: America/New_York.",
      "examples": [
        "Europe/London",
        "America/New_York"
      ]
    },
    "start_date": {
      "type": "string",
      "format": "date",
      "description": "First match date to include; defaults to 14 days ago. Example: 2026-09-14.",
      "examples": [
        "2026-09-14",
        "2026-09-18",
        "2026-10-10"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 50,
      "maximum": 380,
      "minimum": 1,
      "description": "Most matches to return, up to 380. Example: 50.",
      "x-fous-developer": true,
      "examples": [
        5
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "club": "Arsenal",
      "show": "both",
      "end_date": "2026-10-12",
      "time_zone": "Europe/London",
      "start_date": "2026-09-14"
    },
    {
      "show": "results",
      "end_date": "2026-09-28",
      "time_zone": "America/New_York",
      "start_date": "2026-09-18",
      "max_results": 5
    },
    {
      "club": "Liverpool",
      "show": "fixtures",
      "end_date": "2026-10-12",
      "start_date": "2026-10-10"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `matches` | array |  | Matches in kickoff date order. |
| `matches[].score` | string or null | `"3-0"` | Final or live score (home–away), or null if not played. |
| `matches[].status` | string | `"full time"` |  |
| `matches[].kickoff` | string | `"2026-09-19T15:00:00+01:00"` | Kickoff time in the selected time zone, ISO 8601 with offset. |
| `matches[].stadium` | string or null | `"American Express Stadium, Falmer"` |  |
| `matches[].match_id` | string | `"2645237"` |  |
| `matches[].away_club` | string | `"Arsenal"` |  |
| `matches[].home_club` | string | `"Brighton and Hove Albion"` |  |
| `matches[].matchweek` | integer or null | `5` | Premier League matchweek. |
| `matches[].match_link` | string | `"https://www.premierleague.com/en/match/2645237/brighton-and-hove-albion-vs-arsenal/overview"` |  |

**Example input**

```json
{
  "club": "Arsenal",
  "show": "both",
  "end_date": "2026-10-12",
  "time_zone": "Europe/London",
  "start_date": "2026-09-14"
}
```

**Example output**

```json
{
  "matches": [
    {
      "score": "3-0",
      "status": "full time",
      "kickoff": "2026-09-19T15:00:00+01:00",
      "stadium": "American Express Stadium, Falmer",
      "match_id": "2645237",
      "away_club": "Arsenal",
      "home_club": "Brighton and Hove Albion",
      "matchweek": 5,
      "match_link": "https://www.premierleague.com/en/match/2645237/brighton-and-hove-albion-vs-arsenal/overview"
    },
    {
      "score": null,
      "status": "scheduled",
      "kickoff": "2026-10-10T12:30:00+01:00",
      "stadium": "Emirates Stadium, London",
      "match_id": "2645245",
      "away_club": "Leeds United",
      "home_club": "Arsenal",
      "matchweek": 6,
      "match_link": "https://www.premierleague.com/en/match/2645245/arsenal-vs-leeds-united/overview"
    }
  ]
}
```

### Get league table

Operation `get_league_table`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get the Premier League table for the current season or a season you choose, including each club’s recent form.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `season` | string | no | `"2025/26"` | Season to show, such as 2025/26 or 2025. Leave blank for the current season. |

**Input schema**

```json
{
  "type": "object",
  "properties": {
    "season": {
      "type": "string",
      "default": "current",
      "examples": [
        "2025/26"
      ],
      "description": "Season to show, such as 2025/26 or 2025. Leave blank for the current season."
    }
  },
  "additionalProperties": false,
  "examples": [
    {},
    {
      "season": "2025/26"
    },
    {
      "season": "2024"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `clubs` | array |  | Clubs in league table order. |
| `clubs[].won` | integer | `5` | Matches won. |
| `clubs[].club` | string | `"Manchester City"` | Club name. |
| `clubs[].lost` | integer | `0` | Matches lost. |
| `clubs[].drawn` | integer | `0` | Matches drawn. |
| `clubs[].played` | integer | `5` | Matches played. |
| `clubs[].points` | integer | `15` | League points. |
| `clubs[].club_id` | string | `"43"` | Premier League club ID. |
| `clubs[].position` | integer | `1` | League position. |
| `clubs[].club_link` | string | `"https://www.premierleague.com/en/clubs/43/manchester-city/overview"` | Club page on Premier League. |
| `clubs[].recent_form` | string | `"W W W W W"` | Last five league results, oldest first; W, D, or L, or an empty string if none. |
| `clubs[].goals_scored` | integer | `13` | Goals scored. |
| `clubs[].goals_conceded` | integer | `5` | Goals conceded. |
| `clubs[].goal_difference` | integer | `8` | Goals scored minus goals conceded. |
| `season` | string | `"2026/27"` | Season shown, such as 2025/26. |

**Example input**

```json
{}
```

**Example output**

```json
{
  "clubs": [
    {
      "won": 5,
      "club": "Manchester City",
      "lost": 0,
      "drawn": 0,
      "played": 5,
      "points": 15,
      "club_id": "43",
      "position": 1,
      "club_link": "https://www.premierleague.com/en/clubs/43/manchester-city/overview",
      "recent_form": "W W W W W",
      "goals_scored": 13,
      "goals_conceded": 5,
      "goal_difference": 8
    },
    {
      "won": 4,
      "club": "Arsenal",
      "lost": 1,
      "drawn": 0,
      "played": 5,
      "points": 12,
      "club_id": "3",
      "position": 2,
      "club_link": "https://www.premierleague.com/en/clubs/3/arsenal/overview",
      "recent_form": "W W W W L",
      "goals_scored": 8,
      "goals_conceded": 4,
      "goal_difference": 4
    },
    {
      "won": 3,
      "club": "Brighton and Hove Albion",
      "lost": 1,
      "drawn": 1,
      "played": 5,
      "points": 10,
      "club_id": "36",
      "position": 3,
      "club_link": "https://www.premierleague.com/en/clubs/36/brighton-and-hove-albion/overview",
      "recent_form": "W L D W W",
      "goals_scored": 16,
      "goals_conceded": 5,
      "goal_difference": 11
    }
  ],
  "season": "2026/27"
}
```

### Get player stats

Operation `get_player_stats`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get a Premier League player’s profile and career totals, or stats for a chosen season, by name. If names clash, a current Premier League player takes priority.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `player` | string | yes | `"Bukayo Saka"` | Player name, for example Bukayo Saka. |
| `season` | string | no | `"2025/26"` | Premier League season, for example 2025/26. Omit for career totals. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "player"
  ],
  "properties": {
    "player": {
      "type": "string",
      "description": "Player name, for example Bukayo Saka.",
      "examples": [
        "Bukayo Saka",
        "Alisson Becker",
        "Petr Cech"
      ]
    },
    "season": {
      "type": "string",
      "default": "",
      "description": "Premier League season, for example 2025/26. Omit for career totals.",
      "examples": [
        "2025/26",
        "2015/16"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "player": "Bukayo Saka"
    },
    {
      "player": "Bukayo Saka",
      "season": "2025/26"
    },
    {
      "player": "Alisson Becker"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `club` | string or null | `"Arsenal"` |  |
| `name` | string | `"Bukayo Saka"` |  |
| `goals` | integer | `63` |  |
| `assists` | integer | `50` |  |
| `position` | string or null | `"Forward"` |  |
| `photo_url` | string or null | `"https://resources.premierleague.com/premierleague25/photos/players/110x140/223340.png"` |  |
| `player_id` | string | `"223340"` |  |
| `red_cards` | integer | `0` |  |
| `player_url` | string | `"https://www.premierleague.com/en/players/223340/bukayo-saka/stats"` |  |
| `appearances` | integer | `231` |  |
| `nationality` | string or null | `"England"` |  |
| `clean_sheets` | integer or null | `106` |  |
| `shirt_number` | integer or null | `7` |  |
| `yellow_cards` | integer | `28` |  |
| `date_of_birth` | string or null | `"2001-09-05"` |  |
| `minutes_played` | integer | `17812` |  |

**Example input**

```json
{
  "player": "Bukayo Saka"
}
```

**Example output**

```json
{
  "club": "Arsenal",
  "name": "Bukayo Saka",
  "goals": 63,
  "assists": 50,
  "position": "Forward",
  "photo_url": "https://resources.premierleague.com/premierleague25/photos/players/110x140/223340.png",
  "player_id": "223340",
  "red_cards": 0,
  "player_url": "https://www.premierleague.com/en/players/223340/bukayo-saka/stats",
  "appearances": 231,
  "nationality": "England",
  "clean_sheets": null,
  "shirt_number": 7,
  "yellow_cards": 28,
  "date_of_birth": "2001-09-05",
  "minutes_played": 17812
}
```

### List top scorers

Operation `list_top_scorers`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

List the Premier League's leading players by goals, assists or goalkeeper clean sheets for a season. Older seasons may have limited stats.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `stat` | string | no | `"assists"` | Statistic to rank players by, for example assists. |
| `season` | string | no | `"2025/26"` | Season in YYYY/YY format, for example 2025/26. Leave out for the current season. |
| `max_results` | integer | no | `5` | Maximum players to return, for example 20. |

**Input schema**

```json
{
  "type": "object",
  "properties": {
    "stat": {
      "enum": [
        "goals",
        "assists",
        "clean_sheets"
      ],
      "type": "string",
      "default": "goals",
      "description": "Statistic to rank players by, for example assists.",
      "examples": [
        "assists",
        "clean_sheets"
      ]
    },
    "season": {
      "type": "string",
      "default": "current",
      "description": "Season in YYYY/YY format, for example 2025/26. Leave out for the current season.",
      "examples": [
        "2025/26"
      ]
    },
    "max_results": {
      "type": "integer",
      "default": 20,
      "maximum": 100,
      "minimum": 1,
      "description": "Maximum players to return, for example 20.",
      "x-fous-developer": true,
      "examples": [
        5,
        20
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "stat": "assists",
      "season": "2025/26",
      "max_results": 5
    },
    {},
    {
      "stat": "clean_sheets",
      "season": "2025/26",
      "max_results": 20
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `stat` | string | `"assists"` | Requested statistic. |
| `season` | string | `"2025/26"` | Season in YYYY/YY format. |
| `players` | array |  | Players in descending order of the selected stat. Ties share a rank. |
| `players[].club` | string or null | `"Manchester United"` |  |
| `players[].rank` | integer | `1` |  |
| `players[].player` | string | `"Bruno Fernandes"` |  |
| `players[].player_url` | string | `"https://www.premierleague.com/en/players/141746"` | Official player page. |
| `players[].stat_value` | number | `21` |  |
| `players[].nationality` | string or null | `"Portugal"` |  |

**Example input**

```json
{
  "stat": "assists",
  "season": "2025/26",
  "max_results": 5
}
```

**Example output**

```json
{
  "stat": "assists",
  "season": "2025/26",
  "players": [
    {
      "club": "Manchester United",
      "rank": 1,
      "player": "Bruno Fernandes",
      "player_url": "https://www.premierleague.com/en/players/141746",
      "stat_value": 21,
      "nationality": "Portugal"
    },
    {
      "club": "Manchester City",
      "rank": 2,
      "player": "Rayan Cherki",
      "player_url": "https://www.premierleague.com/en/players/466052",
      "stat_value": 12,
      "nationality": "France"
    },
    {
      "club": "West Ham United",
      "rank": 3,
      "player": "Jarrod Bowen",
      "player_url": "https://www.premierleague.com/en/players/178186",
      "stat_value": 11,
      "nationality": "England"
    }
  ]
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@premier-league",
  "visibility": "public",
  "operation": "get_fixtures_and_results",
  "version": 1,
  "input": {
    "club": "Arsenal",
    "show": "both",
    "end_date": "2026-10-12",
    "time_zone": "Europe/London",
    "start_date": "2026-09-14"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@premier-league\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_fixtures_and_results\",\n  \"version\": 1,\n  \"input\": {\n    \"club\": \"Arsenal\",\n    \"show\": \"both\",\n    \"end_date\": \"2026-10-12\",\n    \"time_zone\": \"Europe/London\",\n    \"start_date\": \"2026-09-14\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@premier-league",
  "visibility": "public",
  "operation": "get_fixtures_and_results",
  "version": 1,
  "input": {
    "club": "Arsenal",
    "show": "both",
    "end_date": "2026-10-12",
    "time_zone": "Europe/London",
    "start_date": "2026-09-14"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/premier-league`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `get_fixtures_and_results`: Get fixtures and results. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `get_league_table`: Get league table. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `get_player_stats`: Get player stats. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `list_top_scorers`: List top scorers. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-premier-league https://api.fous.com/mcp/tools/premier-league --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## Use cases

- Compare club positions, points and recent form across seasons.
- Plan match coverage using fixtures for selected clubs and dates.
- Track results and scores across a date range.
- Review a player's appearances, goals and other career totals.
- Rank leading players by goals, assists or goalkeeper clean sheets.

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this Premier League tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a Premier League account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from premierleague.com when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Sep 29, 2026.

### What is each club's league position and recent form?

Get league table returns clubs in table order, with each club's position, points and recent form.

### Which matches are scheduled or completed during a date range?

Get fixtures and results returns matches in a date range, including upcoming fixtures or past results.

### Who leads the league in goals, assists or clean sheets?

List top scorers ranks players by the selected statistic for a chosen season.

## Related

- [ESPN API](https://fous.com/tools/espn.md): ESPN provides daily scores and schedules, team results, player statistics, matchup summaries, and latest topic-specific headlines; coverage and published details vary, especially for college and soccer.
- [NFL API](https://fous.com/tools/nfl.md): NFL provides weekly scores and schedules, regular-season standings, current rosters, and player season and career stats; released players are excluded, and ages or stats may be unavailable.
- [Yahoo Sports API](https://fous.com/tools/yahoo-sports.md): Yahoo Sports returns date-based scores and schedules, seasonal standings, and player regular-season and career stats when Yahoo provides them; unavailable data may be missing.
- [UEFA API](https://fous.com/tools/uefa.md): UEFA provides football competitions, matches and results, including club competition fixtures and scores by date range and current league-phase or group-stage tables.
- [SofaScore API](https://fous.com/tools/sofascore.md): SofaScore provides live sports scores and match statistics, plus football match details for the most recent played or live match and player season statistics.
- [MLB API](https://fous.com/tools/mlb.md): MLB provides scores, schedules and game details for one date or up to seven days, regular-season division standings defaulting to the current year, and player profiles with regular-season stats for a selected season and career.
- [NHL API](https://fous.com/tools/nhl.md): NHL provides games, schedules, and scores when published, standings by date, and player profiles with regular-season stats; dates outside a season have no teams, and unavailable stats are null.
- [Sports Reference API](https://fous.com/tools/sports-reference.md): Sports Reference provides regular-season career stats, awards and season records across basketball, football, baseball and hockey, plus season leaders using the latest published season if unspecified.
- [All Sports tools](https://fous.com/tools/category/sports)
