NewConnect Claude, Gemini, ChatGPT, and other AI agents to API Ninjas via our MCP server →

Champions League API

A football (soccer) API for the UEFA Champions League: get the league phase and knockout fixtures, live scores with the match minute on paid plans, results with extra time, penalty shootouts and the aggregate score of two-legged ties, the league phase table with the knockout places, and the squads of every club. The free plan covers the current season's fixtures, results, table and squads.

The UEFA Champions League is served by the Football (Soccer) API with league=ucl. The same API key works for every sports API.

Available endpoints:

Champions League data at a glance

Season valueseason=2026 is the 2026-27 competition, with the final in 2027
Stagesseason_type is league_phase or knockout (group_stage in seasons with groups); round names the knockout round, such as Knockout Round Playoffs, Round of 16, Quarterfinals, Semifinals or Final
Two-legged tiesleg is 1 or 2, and aggregate_scores gives the tie's aggregate after the match
Extra time and penaltiesdecided_in is regulation, extra_time or penalties; a shootout's score is in penalty_scores and its winner in winner
ScoringGoals per half in period_scores, with both halves of extra time when played
Match daydate is the Central European date of the match
Club idsThe same id as in the domestic league, e.g. soccer-arsenal. Clubs from other leagues have league: null in /v1/soccerclubs

Champions League table fields

The league phase table: points, wins, draws, losses, goals_for, goals_against, goal_difference and league_rank, with qualification showing whether a place leads to the round of 16, the knockout phase playoffs (seeded or unseeded) or elimination. Seasons with a group stage add group and group_rank.

4 endpoints

https://api.api-ninjas.com/v1/soccermatches

Returns fixtures, live scores and results. Ask for one day, a team's season or one match; with only league you get today's matches. Paid plans see matches in progress with the score, half and match minute updated throughout the match; the free plan sees their status and the final score once they end. The free plan covers the current season. Developer plans add the three previous seasons, and the Business tier and above gets the full season archive.

Full parameter and response reference: /v1/soccermatches.

Live Demo

Live demo · no API key required
Query parameters
league
date
team
season
season_type
status
game_id
limit
offset

Get a free API key to get started — no credit card required.

Headers
X-Api-KeyLog in or sign up to get your API key
GET
https://api.api-ninjas.com/v1/soccermatches?league=ucl
Sample response
[
{
"game_id": "ucl-20260317-bodo-scp",
"league": "ucl",
"sport": "soccer",
"season": 2025,
"season_label": "2025-26",
"season_type": "knockout",
"round": "Round of 16",
"leg": 2,
"date": "2026-03-17",
"start_time": "2026-03-17T17:45:00Z",
"status": "final",
"status_detail": null,
"period": 4,
"clock": null,
"home_team": {
"team_id": "soccer-sporting-cp",
"name": "Sporting CP",
"abbreviation": "SCP"
},
"away_team": {
"team_id": "soccer-bodo-glimt",
"name": "Bodo/Glimt",
"abbreviation": "BODO"
},
"home_score": 5,
"away_score": 0,
"period_scores": {
"home": [
1,
2,
1,
1
],
"away": [
0,
0,
0,
0
]
},
"penalty_scores": null,
"aggregate_scores": {
"home": 5,
"away": 3
},
"decided_in": "extra_time",
"winner": "soccer-sporting-cp",
"venue": {
"name": "Estádio José Alvalade",
"city": "Lisbon",
"state": null,
"country": "PT"
},
"neutral_site": false,
"original_date": null,
"updated_at": "2026-10-28T04:00:40Z"
},
{
"game_id": "ucl-20260530-ars-psg",
"league": "ucl",
"sport": "soccer",
"season": 2025,
"season_label": "2025-26",
"season_type": "knockout",
"round": "Final",
"leg": null,
"date": "2026-05-30",
"start_time": "2026-05-30T16:00:00Z",
"status": "final",
"status_detail": null,
"period": 4,
"clock": null,
"home_team": {
"team_id": "soccer-paris-saint-germain",
"name": "Paris Saint-Germain",
"abbreviation": "PSG"
},
"away_team": {
"team_id": "soccer-arsenal",
"name": "Arsenal",
"abbreviation": "ARS"
},
"home_score": 1,
"away_score": 1,
"period_scores": {
"home": [
0,
1,
0,
0
],
"away": [
1,
0,
0,
0
]
},
"penalty_scores": {
"home": 4,
"away": 3
},
"aggregate_scores": null,
"decided_in": "penalties",
"winner": "soccer-paris-saint-germain",
"venue": {
"name": "Puskás Aréna",
"city": "Budapest",
"state": null,
"country": "HU"
},
"neutral_site": true,
"original_date": null,
"updated_at": "2026-10-28T04:00:40Z"
}
]

Code Examples

curl -X GET "https://api.api-ninjas.com/v1/soccermatches?league=ucl" \ -H "X-Api-Key: YOUR_API_KEY"

https://api.api-ninjas.com/v1/soccerstandings

Returns the table for a season, ordered by league rank, or by conference or division rank when you filter. Tables update throughout the season, shortly after each match ends. The free plan covers the current season. Developer plans add the three previous seasons, and the Business tier and above gets the full season archive.

Full parameter and response reference: /v1/soccerstandings.

Live Demo

Live demo · no API key required
Query parameters
league
season
conference

Get a free API key to get started — no credit card required.

Headers
X-Api-KeyLog in or sign up to get your API key
GET
https://api.api-ninjas.com/v1/soccerstandings?league=ucl
Sample response
[
{
"league": "ucl",
"sport": "soccer",
"season": 2026,
"season_label": "2026-27",
"team": {
"team_id": "soccer-paris-saint-germain",
"name": "Paris Saint-Germain",
"abbreviation": "PSG"
},
"conference": null,
"division": null,
"games_played": 3,
"wins": 3,
"draws": 0,
"losses": 0,
"points": 9,
"goals_for": 14,
"goals_against": 5,
"goal_difference": 9,
"league_rank": 1,
"qualification": "Qualifies for round of 16",
"final": false
}
]

Code Examples

curl -X GET "https://api.api-ninjas.com/v1/soccerstandings?league=ucl" \ -H "X-Api-Key: YOUR_API_KEY"

https://api.api-ninjas.com/v1/soccerclubs

Lists clubs with their domestic league, country and home venue. Available on every plan.

Full parameter and response reference: /v1/soccerclubs.

Live Demo

Live demo · no API key required
Query parameters
league
team
active

Get a free API key to get started — no credit card required.

Headers
X-Api-KeyLog in or sign up to get your API key
GET
https://api.api-ninjas.com/v1/soccerclubs?league=ucl
Sample response
[
{
"team_id": "soccer-liverpool",
"league": "epl",
"sport": "soccer",
"abbreviation": "LIV",
"name": "Liverpool",
"short_name": "Liverpool",
"city": "Liverpool",
"country": "GB",
"venue": {
"name": "Anfield",
"city": "Liverpool",
"state": null,
"country": "GB"
},
"active": true
},
{
"team_id": "soccer-galatasaray",
"league": null,
"sport": "soccer",
"abbreviation": "GAL",
"name": "Galatasaray",
"short_name": "Galatasaray",
"city": "Istanbul",
"country": "TR",
"venue": {
"name": "RAMS Park",
"city": "Istanbul",
"state": null,
"country": "TR"
},
"active": true
}
]

Code Examples

curl -X GET "https://api.api-ninjas.com/v1/soccerclubs?league=ucl" \ -H "X-Api-Key: YOUR_API_KEY"

https://api.api-ninjas.com/v1/soccerplayers

Returns current squads and player profiles, by team or by name. Rosters refresh every day. Available on every plan.

Full parameter and response reference: /v1/soccerplayers.

Live Demo

Live demo · no API key required
Query parameters
league
team
name
player_id
position
limit
offset

Get a free API key to get started — no credit card required.

Headers
X-Api-KeyLog in or sign up to get your API key
GET
https://api.api-ninjas.com/v1/soccerplayers?league=ucl&team=LIV
Sample response
[
{
"player_id": "soccer-p-663c7bff5b",
"league": "epl",
"team": {
"team_id": "soccer-liverpool",
"name": "Liverpool",
"abbreviation": "LIV"
},
"name": "Hugo Ekitike",
"first_name": "Hugo",
"last_name": "Ekitike",
"position": "F",
"jersey_number": "22",
"height_in": 75,
"height_cm": 190,
"weight_lb": 168,
"weight_kg": 76,
"birth_date": "2002-06-20",
"birth_place": null,
"roster_status": "active",
"nationality": "France"
}
]

Code Examples

curl -X GET "https://api.api-ninjas.com/v1/soccerplayers?league=ucl&team=LIV" \ -H "X-Api-Key: YOUR_API_KEY"

Frequently Asked Questions

  • Yes, but you must have a premium subscription. Commercial use of the Champions League API is not permitted on the free tier. See our pricing page to choose a plan that fits your needs.
  • Sign up for a free account to instantly get your API key, then pass it in the X-Api-Key header on every request. The documentation above includes ready-to-run examples in cURL, Python, JavaScript, Node.js, and more.
  • Your API requests will simply be denied once you hit your monthly quota — you will never be charged more than the plan you signed up for. To increase your quota, you can upgrade your plan any time on our pricing page.
  • The API responds with a standard HTTP status code and a JSON error message describing the problem. See our error codes reference for the full list of codes and how to resolve each one, or contact support if you need help.
  • UEFA does not publish a public API for developers. The API Ninjas Football (Soccer) API provides Champions League fixtures, live scores, results, the league phase table and squads with league=ucl. API Ninjas is not affiliated with or endorsed by UEFA.
  • League phase matches have season_type=league_phase. Knockout matches have season_type=knockout and the round in round: Knockout Round Playoffs, Round of 16, Quarterfinals, Semifinals or Final. Seasons with a group stage have season_type=group_stage.
  • Each knockout match has leg (1 or 2), and aggregate_scores gives the aggregate after the match, with home and away as in that match. A second leg decided after extra time has decided_in=extra_time.
  • home_score and away_score are the score after extra time, decided_in is penalties, penalty_scores holds the shootout score and winner is the club that won the shootout.
  • The 2026-27 competition: the league phase from September 2026, the knockout rounds from February 2027 and the final in 2027.

API Ninjas is not affiliated with or endorsed by the NFL, the NBA, the NHL or any other league, competition or team. League, competition and team names are trademarks of their owners and are used only to identify them.