# UEFA API

> UEFA returns club competition matches and tables as a workflow and API.

UEFA, also called UEFA.com, offers Get competition matches for a selected competition and date range, with an optional club and season. Get competition table returns league-phase or group-stage standings for a selected competition and season.

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

## Methods

### Get competition matches

Operation `get_competition_matches`, 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 UEFA club competition matches in a date range, with kick-off times, scores, stages and venues. Club names must match a team in the selected competition and date range.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `club` | string | no | `"Bayern Munich"` | Only matches involving this club, for example Bayern Munich. |
| `season` | integer | no | `2026` | Starting year of the season, for example 2026 for 2026/27. Defaults to the current season. |
| `end_date` | string | no | `"2026-09-10"` | Last local match date, for example 2026-09-10. Defaults to fourteen days from now. |
| `time_zone` | string | no | `"America/New_York"` | Time zone for dates and kick-offs, for example Europe/Paris or America/New_York. Defaults to Central European Time. |
| `start_date` | string | no | `"2026-09-08"` | First local match date, for example 2026-09-08. Defaults to seven days ago. |
| `competition` | string | yes | `"champions_league"` | UEFA competition, for example champions_league. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "competition"
  ],
  "properties": {
    "club": {
      "type": "string",
      "description": "Only matches involving this club, for example Bayern Munich.",
      "examples": [
        "Bayern Munich"
      ]
    },
    "season": {
      "type": "integer",
      "description": "Starting year of the season, for example 2026 for 2026/27. Defaults to the current season.",
      "examples": [
        2026,
        2025
      ]
    },
    "end_date": {
      "type": "string",
      "format": "date",
      "description": "Last local match date, for example 2026-09-10. Defaults to fourteen days from now.",
      "examples": [
        "2026-09-10",
        "2026-09-23",
        "2026-09-17"
      ]
    },
    "time_zone": {
      "type": "string",
      "description": "Time zone for dates and kick-offs, for example Europe/Paris or America/New_York. Defaults to Central European Time.",
      "examples": [
        "America/New_York"
      ]
    },
    "start_date": {
      "type": "string",
      "format": "date",
      "description": "First local match date, for example 2026-09-08. Defaults to seven days ago.",
      "examples": [
        "2026-09-08",
        "2026-09-22",
        "2026-09-16"
      ]
    },
    "competition": {
      "enum": [
        "champions_league",
        "europa_league",
        "conference_league",
        "womens_champions_league"
      ],
      "type": "string",
      "description": "UEFA competition, for example champions_league.",
      "examples": [
        "champions_league",
        "womens_champions_league",
        "europa_league"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "club": "Bayern Munich",
      "season": 2026,
      "end_date": "2026-09-10",
      "start_date": "2026-09-08",
      "competition": "champions_league"
    },
    {
      "season": 2026,
      "end_date": "2026-09-23",
      "time_zone": "America/New_York",
      "start_date": "2026-09-22",
      "competition": "womens_champions_league"
    },
    {
      "season": 2026,
      "end_date": "2026-09-17",
      "start_date": "2026-09-16",
      "competition": "europa_league"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `matches` | array |  | Matches in kick-off order. |
| `matches[].city` | string or null | `"Munich"` |  |
| `matches[].score` | string or null | `"5-0"` | Match score, with aggregate and penalties when relevant. |
| `matches[].stage` | string or null | `"League phase, Matchday 1"` | Round and matchday or leg. |
| `matches[].status` | string | `"Finished"` |  |
| `matches[].stadium` | string or null | `"Fußball Arena München"` |  |
| `matches[].kick_off` | string or null | `"2026-09-10T21:00:00+02:00"` | Kick-off time in the requested time zone, ISO 8601 with offset. |
| `matches[].match_id` | string | `"2049565"` |  |
| `matches[].away_club` | string or null | `"Bodø/Glimt"` |  |
| `matches[].home_club` | string or null | `"Bayern München"` |  |
| `matches[].match_link` | string | `"https://www.uefa.com/uefachampionsleague/match/2049565/"` |  |

**Example input**

```json
{
  "club": "Bayern Munich",
  "season": 2026,
  "end_date": "2026-09-10",
  "start_date": "2026-09-08",
  "competition": "champions_league"
}
```

**Example output**

```json
{
  "matches": [
    {
      "city": "Munich",
      "score": "5-0",
      "stage": "League phase, Matchday 1",
      "status": "Finished",
      "stadium": "Fußball Arena München",
      "kick_off": "2026-09-10T21:00:00+02:00",
      "match_id": "2049565",
      "away_club": "Bodø/Glimt",
      "home_club": "Bayern München",
      "match_link": "https://www.uefa.com/uefachampionsleague/match/2049565/"
    }
  ]
}
```

### Get competition table

Operation `get_competition_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 league-phase or group-stage table for a UEFA club competition and season. Qualification labels reflect table places; older group tables may not show them.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `season` | integer | no | `2023` | Starting year of the season, for example 2023 for 2023/24. Defaults to the current UEFA season. |
| `competition` | string | yes | `"champions_league"` | UEFA club competition, for example champions_league. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "competition"
  ],
  "properties": {
    "season": {
      "type": "integer",
      "maximum": 9998,
      "minimum": 1950,
      "description": "Starting year of the season, for example 2023 for 2023/24. Defaults to the current UEFA season.",
      "examples": [
        2023,
        2024,
        2025
      ]
    },
    "competition": {
      "enum": [
        "champions_league",
        "europa_league",
        "conference_league",
        "womens_champions_league"
      ],
      "type": "string",
      "description": "UEFA club competition, for example champions_league.",
      "examples": [
        "champions_league",
        "europa_league",
        "conference_league"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "season": 2023,
      "competition": "champions_league"
    },
    {
      "competition": "europa_league"
    },
    {
      "season": 2024,
      "competition": "conference_league"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `clubs` | array |  |  |
| `clubs[].won` | integer | `5` |  |
| `clubs[].club` | string | `"Bayern München"` |  |
| `clubs[].lost` | integer | `0` |  |
| `clubs[].drawn` | integer | `1` |  |
| `clubs[].group` | string or null | `"Group A"` | Group name, or null for a league phase. |
| `clubs[].played` | integer | `6` |  |
| `clubs[].points` | integer | `16` |  |
| `clubs[].country` | string or null | `"Germany"` |  |
| `clubs[].position` | integer | `1` |  |
| `clubs[].goals_for` | integer | `12` |  |
| `clubs[].page_link` | string | `"https://www.uefa.com/uefachampionsleague/history/clubs/50037/"` |  |
| `clubs[].goals_against` | integer | `6` |  |
| `clubs[].goal_difference` | integer | `6` |  |
| `clubs[].qualification_status` | string or null | `"Round of 16"` | Table-place qualification label when shown; null if unavailable. |
| `season` | integer | `2023` | Starting year of the season. |
| `competition` | string | `"champions_league"` |  |

**Example input**

```json
{
  "season": 2023,
  "competition": "champions_league"
}
```

**Example output**

```json
{
  "clubs": [
    {
      "won": 5,
      "club": "Bayern München",
      "lost": 0,
      "drawn": 1,
      "group": "Group A",
      "played": 6,
      "points": 16,
      "country": "Germany",
      "position": 1,
      "goals_for": 12,
      "page_link": "https://www.uefa.com/uefachampionsleague/history/clubs/50037/",
      "goals_against": 6,
      "goal_difference": 6,
      "qualification_status": null
    },
    {
      "won": 2,
      "club": "Copenhagen",
      "lost": 2,
      "drawn": 2,
      "group": "Group A",
      "played": 6,
      "points": 8,
      "country": "Denmark",
      "position": 2,
      "goals_for": 8,
      "page_link": "https://www.uefa.com/uefachampionsleague/history/clubs/52709/",
      "goals_against": 8,
      "goal_difference": 0,
      "qualification_status": null
    },
    {
      "won": 1,
      "club": "Galatasaray",
      "lost": 3,
      "drawn": 2,
      "group": "Group A",
      "played": 6,
      "points": 5,
      "country": "Türkiye",
      "position": 3,
      "goals_for": 10,
      "page_link": "https://www.uefa.com/uefachampionsleague/history/clubs/50067/",
      "goals_against": 13,
      "goal_difference": -3,
      "qualification_status": null
    }
  ],
  "season": 2023,
  "competition": "champions_league"
}
```

## 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": "@uefa",
  "visibility": "public",
  "operation": "get_competition_matches",
  "version": 1,
  "input": {
    "club": "Bayern Munich",
    "season": 2026,
    "end_date": "2026-09-10",
    "start_date": "2026-09-08",
    "competition": "champions_league"
  },
  "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\": \"@uefa\",\n  \"visibility\": \"public\",\n  \"operation\": \"get_competition_matches\",\n  \"version\": 1,\n  \"input\": {\n    \"club\": \"Bayern Munich\",\n    \"season\": 2026,\n    \"end_date\": \"2026-09-10\",\n    \"start_date\": \"2026-09-08\",\n    \"competition\": \"champions_league\"\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": "@uefa",
  "visibility": "public",
  "operation": "get_competition_matches",
  "version": 1,
  "input": {
    "club": "Bayern Munich",
    "season": 2026,
    "end_date": "2026-09-10",
    "start_date": "2026-09-08",
    "competition": "champions_league"
  },
  "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/uefa`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `get_competition_matches`: Get competition matches. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `get_competition_table`: Get competition table. 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-uefa https://api.fous.com/mcp/tools/uefa --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

- Track club competition scores and kick-off times
- Review match stages and venues
- Compare clubs’ points, wins and goal differences
- Check clubs’ positions and qualification labels

## 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 UEFA 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 UEFA account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from uefa.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 matches are scheduled in a competition date range?

Get competition matches returns matches with kick-off times, scores, stages and venues for a selected competition and date range.

### What is the table for a club competition and season?

Get competition table returns the league-phase or group-stage table for a selected club competition and season.

## Related

- [Premier League API](https://fous.com/tools/premier-league.md): Premier League provides current/chosen-season tables and recent form, date-range fixtures/results (up to 380), player profiles and stats, and seasonal leaders; older-season stats may be limited.
- [FIFA API](https://fous.com/tools/fifa.md): FIFA provides official men’s and women’s national-team rankings, excluding unranked teams, and year-specific tournament matches with scores, teams, stages and venues.
- [Flashscore API](https://fous.com/tools/flashscore.md): Live sports scores and match results.
- [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.
- [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.
- [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.
- [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.
- [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.
- [All Sports tools](https://fous.com/tools/category/sports)
