Discover/UEFA API
live

UEFA APIuefa.com

Access UEFA Champions League, Europa League, and Conference League player stats, match data, and seasonal rankings via 5 structured endpoints.

Endpoint health
verified 5d ago
get_match_player_stats
get_competitions
get_player_rankings
get_matches
get_stat_definitions
5/5 passing latest checkself-healing
Endpoints
5
Updated
22d ago

What is the UEFA API?

The UEFA.com API provides 5 endpoints covering player performance statistics, match results, and competition metadata across the three main UEFA club competitions. Use get_player_rankings to pull aggregated seasonal stats with pagination and per-stat filtering, or get_match_player_stats to retrieve granular per-player numbers for a specific match. Response fields include player details, team assignments, stadium info, scores, and a full library of named statistics queryable through get_stat_definitions.

Try it

No input parameters required.

api.parse.bot/scraper/23f00bd9-dcc1-4cac-90a0-b4a57ec8b416/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/23f00bd9-dcc1-4cac-90a0-b4a57ec8b416/get_competitions' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace uefa-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.


"""Walkthrough: UEFA Player Performance Stats — bounded, re-runnable."""
from parse_apis.uefa_player_performance_stats_api import (
    Uefa, CompetitionId, MatchNotFound
)

uefa = Uefa()

# Top scorers in Champions League this season
for ranking in uefa.playerrankings.list(
    competition_id=CompetitionId.UCL,
    season_year="2026",
    stats="goals,assists",
    limit=3,
):
    print(ranking.player.international_name, ranking.team.international_name, ranking.statistics[0].value)

# List recent matches and drill into player stats for one
match = uefa.matches.list(
    from_date="2025-09-17",
    to_date="2025-09-19",
    competition_id=CompetitionId.UCL,
    limit=1,
).first()

if match:
    print(match.id, match.home_team.international_name, "vs", match.away_team.international_name)
    for stat in match.player_stats.list(limit=3):
        print(stat.player_id, stat.team_id, stat.statistics[0].name)

# Browse available stat definitions
for defn in uefa.statdefinitions.list(limit=3):
    print(defn.name, defn.group, defn.aggregation_type)

# Typed error handling for invalid match ID
try:
    bad_match = uefa.matches.list(
        from_date="2025-09-17",
        to_date="2025-09-19",
        competition_id=CompetitionId.UCL,
        limit=1,
    ).first()
    if bad_match:
        for ps in bad_match.player_stats.list(limit=1):
            print(ps.player_id)
except MatchNotFound as exc:
    print(f"Match not found: {exc.match_id}")

print("exercised: playerrankings.list / matches.list / match.player_stats.list / statdefinitions.list")
All endpoints · 5 totalmissing one? ·

Returns a static mapping of supported UEFA competition abbreviations to their numeric IDs and full names. Use these IDs as the competition_id parameter in other endpoints.

Input

No input parameters required.

Response
{
  "type": "object",
  "fields": {
    "UCL": "object with id and name for UEFA Champions League",
    "UEL": "object with id and name for UEFA Europa League",
    "UECL": "object with id and name for UEFA Europa Conference League"
  },
  "sample": {
    "data": {
      "UCL": {
        "id": "1",
        "name": "UEFA Champions League"
      },
      "UEL": {
        "id": "14",
        "name": "UEFA Europa League"
      },
      "UECL": {
        "id": "2019",
        "name": "UEFA Europa Conference League"
      }
    },
    "status": "success"
  }
}

About the UEFA API

Competition and Discovery Endpoints

get_competitions returns a static mapping of the three supported competitions — UEFA Champions League (ID: 1), UEFA Europa League (ID: 14), and UEFA Europa Conference League (ID: 2019) — along with their abbreviations and full names. These IDs are the input accepted by get_player_rankings and get_matches via the competition_id parameter. get_stat_definitions complements this by returning every available statistic name, its description, grouping, aggregation type, and translations — making it the right starting point before constructing any filtered rankings query.

Player Rankings

get_player_rankings returns an array of player objects sorted in descending order by the requested stats. Each object includes player details, a playerId, a teamId, team details, and a statistics array. You can scope results to a competition and season using competition_id and season_year (e.g., '2026' for the 2025/26 season), filter to specific metrics by passing a comma-separated list of stat names via the stats parameter (names sourced from get_stat_definitions), and paginate using limit (max 100) and offset.

Match Data and Per-Match Player Stats

get_matches accepts a required date range (from_date and to_date in YYYY-MM-DD format) and optional competition_id and season_year filters. Each match object in the response contains homeTeam, awayTeam, score, kickOffTime, stadium, and a unique id. That id feeds directly into get_match_player_stats, which returns a data array where each entry holds a playerId, teamId, and a statistics array of name/value pairs representing that player's performance in the match.

Reliability & maintenanceVerified

The UEFA API is a managed, monitored endpoint for uefa.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when uefa.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official uefa.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
5d ago
Latest check
5/5 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Rank Champions League players by goals or assists across an entire season using get_player_rankings with stat filters
  • Build a match report tool that pulls per-player stats for any UCL or UEL fixture via get_match_player_stats
  • Discover all available performance metrics and their groupings using get_stat_definitions before querying rankings
  • Retrieve a week's worth of Europa League matches with stadium and score data via get_matches date range filtering
  • Compare a player's seasonal aggregated stats across the Europa and Conference Leagues by switching competition_id
  • Paginate through full-season player rankings to build a database of top performers across all three UEFA competitions
  • Identify match IDs for a specific date window to feed into per-match player analysis pipelines
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does UEFA have an official developer API?+
UEFA does not publish a public developer API with documented endpoints, API keys, or a developer portal as of mid-2025. Official data partnerships exist for broadcasters and commercial partners but are not publicly accessible.
What does get_stat_definitions return and why does it matter for get_player_rankings?+
get_stat_definitions returns an array of objects, each with a name, description, group, aggregationType, actors, and translations field. The name values are the exact strings you pass to the stats parameter in get_player_rankings. Without checking get_stat_definitions first, you would have to guess valid stat names.
How far back does historical season data go?+
The endpoints accept a season_year parameter, but the range of seasons actually available depends on what the source exposes. There is no documented guarantee of how many past seasons are covered, and very old seasons may not be present. You can fork this API on Parse and revise it to probe or document the full historical range.
Can I retrieve team-level statistics rather than player-level stats?+
Not currently. All three data-returning endpoints — get_player_rankings, get_match_player_stats, and get_matches — surface team identifiers and names as context for player data, but no endpoint aggregates stats at the team level. You can fork this API on Parse and revise it to add a team stats endpoint.
Does get_matches return future scheduled fixtures or only completed matches?+
get_matches returns match objects for any date range you specify, including future dates, so scheduled fixtures should appear alongside completed ones. Each match object includes kickOffTime and score, but score fields for unplayed matches will reflect their pre-match state. Verify by querying a future date range against a known competition_id.
Page content last updated . Spec covers 5 endpoints from uefa.com.
Related APIs in SportsSee all →
football-data.org API
Get live match scores, team standings, and player statistics across football competitions worldwide. Search for teams, view head-to-head matchups, track top scorers, and explore detailed information about competitions and geographical areas.
soccerstats.com API
Access comprehensive soccer statistics including live league tables, match details, team performance metrics, and form rankings across multiple football leagues. Search for specific teams and analyze their season statistics, head-to-head records, and competitive standings to stay informed on the latest soccer data.
footystats.org API
Get live football scores, team performance metrics, league standings, and head-to-head match statistics all in one place. Search teams and leagues to access detailed player stats, comprehensive analytics, and in-depth performance data across football competitions worldwide.
whoscored.com API
Search for players and teams, then dive deep into their performance metrics, match statistics, and detailed passing data to analyze football games and player abilities. Get comprehensive insights on team performance, individual player stats, and play-by-play event information to power your football analysis and decision-making.
fifa.com API
Track FIFA world rankings for men's and women's teams, browse tournament schedules and standings, access detailed match information with live timelines, and explore comprehensive player statistics and profiles. Stay updated with the latest football news and easily search across teams, players, and matches all in one place.
kooora.com API
Get live football scores, match details, team standings, and player statistics in real-time. Stay updated with the latest football news and competition rankings all in one place.
sports.ru API
Access football league standings, match results, player statistics, and upcoming fixtures from Sports.ru. Retrieve tournament tables, top scorers, detailed match information, and individual player profiles across major football leagues.
flashscore.com API
Search teams and competitions, pull daily fixtures and live scores, and retrieve match details including events, statistics, and league standings from FlashScore.
UEFA API – Player Stats & Match Data · Parse