Welcome to the Euroleague Advanced API! This API provides comprehensive and advanced analysis and statistics for the Euroleague and Eurocup basketball competitions.
The API is divided into two broad paradigms based on data depth and response times:
Furthermore, most endpoints are structured around four main data scopes:
game: data for a specific game within a season.round: data representing all games in a specific round of a season.season: data encompassing all games played within a complete season.range of seasons: data spanning across multiple consecutive seasons.Note: If an endpoint does not explicitly make this distinction in its path or parameters, you should assume it returns aggregate data for all games within a single season.
Browse the API docs for a list of all available endpoints.
Note: Executing certain endpoints directly within the Swagger UI, particularly those returning full season data, may cause your browser tab to freeze or crash due to large response payloads. The API is designed to be consumed programmatically.
Advanced endpoints require a subscription. Once you subscribe, you will receive an Authorisation Token. You must include this token in the headers of your requests using the Bearer scheme:
Authorization: Bearer <YOUR_API_TOKEN>
Note: Some free endpoints accept the token optionally to significantly speed up data fetching by utilizing our database cache instead of querying the live API.
If you only want to access the free endpoints, you do not need to provide an Authorisation token. When writing your code, you can simply omit the Authorization header entirely, or leave the token field as empty, null, or None depending on your programming language.
Additionally, you can explore and interact with all endpoints directly from our interactive documentation at https://euroleague-advanced-api.eu/docs. To authenticate your requests there, simply click on the lock icon on the right side of any endpoint and enter your token.
Below are examples of how to interact with both a free endpoint and an authenticated endpoint using different programming languages.
This endpoint retrieves the basic standings for a given season and round. We will use the Euroleague competition, season 2024, round 1, and the basicstandings format.
Endpoint:
GET https://euroleague-advanced-api.eu/Euroleague/standings?season=2024&round_number=1&standings_type=basicstandings
This endpoint requires your authorisation token and returns clutch performance stats for all players in a season.
Endpoint:
GET https://euroleague-advanced-api.eu/Euroleague/players/clutch/season?season=2024&clutch_type=game
Here is how you can use the API in various programming languages. The examples demonstrate fetching the Player Clutch Statistics (Authenticated) from the example above. For the free endpoint, simply change the URL and remove the Authorization header.
import requests
url = "https://euroleague-advanced-api.eu/Euroleague/players/clutch/season"
params = {
"season": 2024,
"clutch_type": "game"
}
headers = {
"Authorization": "Bearer YOUR_API_TOKEN"
}
response = requests.get(url, params=params, headers=headers)
if response.status_code == 200:
data = response.json()
print(data)
else:
print(f"Error: {response.status_code} - {response.text}")
const url = "https://euroleague-advanced-api.eu/Euroleague/players/clutch/season?season=2024&clutch_type=game";
fetch(url, {
method: "GET",
headers: {
"Authorization": "Bearer YOUR_API_TOKEN"
}
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error("Error:", error));
const axios = require('axios');
const url = "https://euroleague-advanced-api.eu/Euroleague/players/clutch/season";
axios.get(url, {
params: {
season: 2024,
clutch_type: 'game'
},
headers: {
"Authorization": "Bearer YOUR_API_TOKEN"
}
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error("Error:", error.response ? error.response.status : error.message);
});
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
url := "https://euroleague-advanced-api.eu/Euroleague/players/clutch/season?season=2024&clutch_type=game"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer YOUR_API_TOKEN")
res, err := http.DefaultClient.Do(req)
if err != nil {
fmt.Println("Error:", err)
return
}
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Main {
public static void main(String[] args) {
String url = "https://euroleague-advanced-api.eu/Euroleague/players/clutch/season?season=2024&clutch_type=game";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer YOUR_API_TOKEN")
.build();
client.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(HttpResponse::body)
.thenAccept(System.out::println)
.join();
}
}
require 'uri'
require 'net/http'
url = URI("https://euroleague-advanced-api.eu/Euroleague/players/clutch/season?season=2024&clutch_type=game")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = "Bearer YOUR_API_TOKEN"
response = http.request(request)
puts response.read_body
library(httr)
url <- "https://euroleague-advanced-api.eu/Euroleague/players/clutch/season"
response <- GET(
url,
query = list(season = 2024, clutch_type = "game"),
add_headers(Authorization = "Bearer YOUR_API_TOKEN")
)
if (status_code(response) == 200) {
data <- content(response, "parsed")
print(data)
} else {
print(paste("Error:", status_code(response)))
}
curl -X GET "https://euroleague-advanced-api.eu/Euroleague/players/clutch/season?season=2024&clutch_type=game" \
-H "Authorization: Bearer YOUR_API_TOKEN"