openapi: 3.1.0 info: title: BALLDONTLIE EuroLeague API version: 1.0.0 description: >- EuroLeague teams, players, games, lineups, scoring, statistics and standings. Seasons use the starting year. Data availability varies by game and statistic; missing statistics are null and unavailable collections can be empty. servers: - url: https://api.balldontlie.io security: - ApiKeyAuth: [] paths: /euroleague/v1/teams: get: summary: Get teams operationId: euroleague_teams_list tags: - Teams description: Requires FREE or higher. Availability varies by game. parameters: - name: per_page in: query required: false description: Results per page (default 25, maximum 100). schema: type: integer minimum: 1 maximum: 100 default: 25 - name: cursor in: query required: false description: Use meta.next_cursor from the previous response. schema: type: integer minimum: 1 maximum: 2147483647 - name: season in: query required: false description: Season start year. schema: type: integer maximum: 2147483647 responses: '200': description: Success. content: application/json: schema: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/Team' meta: $ref: '#/components/schemas/Meta' example: data: - id: 1 name: Paris abbreviation: PAR meta: per_page: 1 '400': description: Invalid parameters. content: application/json: schema: $ref: '#/components/schemas/ValidationError' example: errors: - param: per_page error: Invalid value '401': description: Missing or invalid API key, or the subscription does not include this endpoint. content: text/plain: schema: type: string example: Unauthorized '429': description: Rate limit exceeded. '500': description: Server error. /euroleague/v1/teams/{id}: get: summary: Get a team operationId: euroleague_teams_get tags: - Teams description: Requires FREE or higher. Availability varies by game. parameters: - name: id in: path required: true description: Team ID. schema: type: integer maximum: 2147483647 responses: '200': description: Success. content: application/json: schema: type: object required: - data properties: data: $ref: '#/components/schemas/Team' example: data: id: 1 name: Paris abbreviation: PAR '400': description: Invalid parameters. content: application/json: schema: $ref: '#/components/schemas/ValidationError' example: errors: - param: per_page error: Invalid value '401': description: Missing or invalid API key, or the subscription does not include this endpoint. content: text/plain: schema: type: string example: Unauthorized '404': description: Record not found. content: application/json: schema: $ref: '#/components/schemas/NotFound' example: error: Not found '429': description: Rate limit exceeded. '500': description: Server error. /euroleague/v1/players: get: summary: Get players operationId: euroleague_players_list tags: - Players description: Requires FREE or higher. Availability varies by game. parameters: - name: per_page in: query required: false description: Results per page (default 25, maximum 100). schema: type: integer minimum: 1 maximum: 100 default: 25 - name: cursor in: query required: false description: Use meta.next_cursor from the previous response. schema: type: integer minimum: 1 maximum: 2147483647 - name: season in: query required: false description: Filter by participation in this season. schema: type: integer maximum: 2147483647 - name: search in: query required: false description: Case-insensitive player name search. schema: type: string maxLength: 100 - name: team_ids[] in: query required: false description: >- Filter by team participation in lineups or stats; combine with season for a season-specific roster. schema: type: array items: type: integer maximum: 2147483647 style: form explode: true responses: '200': description: Success. content: application/json: schema: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/Player' meta: $ref: '#/components/schemas/Meta' example: data: - id: 1 name: Warren T. country: USA meta: next_cursor: 1 per_page: 1 '400': description: Invalid parameters. content: application/json: schema: $ref: '#/components/schemas/ValidationError' example: errors: - param: per_page error: Invalid value '401': description: Missing or invalid API key, or the subscription does not include this endpoint. content: text/plain: schema: type: string example: Unauthorized '429': description: Rate limit exceeded. '500': description: Server error. /euroleague/v1/players/{id}: get: summary: Get a player operationId: euroleague_players_get tags: - Players description: Requires FREE or higher. Availability varies by game. parameters: - name: id in: path required: true description: Player ID. schema: type: integer maximum: 2147483647 responses: '200': description: Success. content: application/json: schema: type: object required: - data properties: data: $ref: '#/components/schemas/Player' example: data: id: 1 name: Warren T. country: USA '400': description: Invalid parameters. content: application/json: schema: $ref: '#/components/schemas/ValidationError' example: errors: - param: per_page error: Invalid value '401': description: Missing or invalid API key, or the subscription does not include this endpoint. content: text/plain: schema: type: string example: Unauthorized '404': description: Record not found. content: application/json: schema: $ref: '#/components/schemas/NotFound' example: error: Not found '429': description: Rate limit exceeded. '500': description: Server error. /euroleague/v1/games: get: summary: Get games operationId: euroleague_games_list tags: - Games description: Requires ALL-STAR or GOAT. Availability varies by game. parameters: - name: per_page in: query required: false description: Results per page (default 25, maximum 100). schema: type: integer minimum: 1 maximum: 100 default: 25 - name: cursor in: query required: false description: Use meta.next_cursor from the previous response. schema: type: integer minimum: 1 maximum: 2147483647 - name: team_ids[] in: query required: false description: Filter by team IDs from the teams endpoint. schema: type: array items: type: integer maximum: 2147483647 minItems: 1 maxItems: 100 style: form explode: true - name: seasons[] in: query required: false description: Filter by season start years. schema: type: array items: type: integer maximum: 2147483647 minItems: 1 maxItems: 100 style: form explode: true - name: dates[] in: query required: false description: Filter by UTC game dates. schema: type: array items: type: string format: date style: form explode: true - name: start_date in: query required: false description: Inclusive UTC start date. schema: type: string format: date - name: end_date in: query required: false description: Inclusive UTC end date. schema: type: string format: date - name: status in: query required: false description: Filter by game status. schema: type: string enum: - scheduled - live - final - postponed - cancelled responses: '200': description: Success. content: application/json: schema: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/Game' meta: $ref: '#/components/schemas/Meta' example: data: - id: 1 season: 2026 datetime: '2026-10-07T18:45:00.000Z' status: final home_team: id: 1 name: Paris abbreviation: PAR visitor_team: id: 2 name: Lyon-Villeurbanne abbreviation: LYO home_team_score: 96 visitor_team_score: 98 meta: next_cursor: 1 per_page: 1 '400': description: Invalid parameters. content: application/json: schema: $ref: '#/components/schemas/ValidationError' example: errors: - param: per_page error: Invalid value '401': description: Missing or invalid API key, or the subscription does not include this endpoint. content: text/plain: schema: type: string example: Unauthorized '429': description: Rate limit exceeded. '500': description: Server error. /euroleague/v1/games/{id}: get: summary: Get a game operationId: euroleague_games_get tags: - Games description: Requires ALL-STAR or GOAT. Availability varies by game. parameters: - name: id in: path required: true description: Game ID. schema: type: integer maximum: 2147483647 responses: '200': description: Success. content: application/json: schema: type: object required: - data properties: data: $ref: '#/components/schemas/Game' example: data: id: 1 season: 2026 datetime: '2026-10-07T18:45:00.000Z' status: final home_team: id: 1 name: Paris abbreviation: PAR visitor_team: id: 2 name: Lyon-Villeurbanne abbreviation: LYO home_team_score: 96 visitor_team_score: 98 '400': description: Invalid parameters. content: application/json: schema: $ref: '#/components/schemas/ValidationError' example: errors: - param: per_page error: Invalid value '401': description: Missing or invalid API key, or the subscription does not include this endpoint. content: text/plain: schema: type: string example: Unauthorized '404': description: Record not found. content: application/json: schema: $ref: '#/components/schemas/NotFound' example: error: Not found '429': description: Rate limit exceeded. '500': description: Server error. /euroleague/v1/stats: get: summary: Get player stats operationId: euroleague_stats_list tags: - Player Stats description: Requires GOAT. Availability varies by game. parameters: - name: per_page in: query required: false description: Results per page (default 25, maximum 100). schema: type: integer minimum: 1 maximum: 100 default: 25 - name: cursor in: query required: false description: Use meta.next_cursor from the previous response. schema: type: integer minimum: 1 maximum: 2147483647 - name: team_ids[] in: query required: false description: Filter by team IDs from the teams endpoint. schema: type: array items: type: integer maximum: 2147483647 minItems: 1 maxItems: 100 style: form explode: true - name: seasons[] in: query required: false description: Filter by season start years. schema: type: array items: type: integer maximum: 2147483647 minItems: 1 maxItems: 100 style: form explode: true - name: game_ids[] in: query required: false description: Filter by game IDs from the games endpoint. schema: type: array items: type: integer maximum: 2147483647 minItems: 1 maxItems: 100 style: form explode: true - name: player_ids[] in: query required: false description: Filter by player IDs from the players endpoint. schema: type: array items: type: integer maximum: 2147483647 minItems: 1 maxItems: 100 style: form explode: true responses: '200': description: Success. content: application/json: schema: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/PlayerStats' meta: $ref: '#/components/schemas/Meta' example: data: - id: 1 game_id: 1 team: id: 1 name: Paris abbreviation: PAR player: id: 1 name: Warren T. country: USA pts: 9 reb: 2 oreb: 1 dreb: 1 ast: 3 stl: 0 blk: 0 turnover: 1 pf: 0 fgm: 4 fga: 9 fg2m: 3 fg2a: 6 fg3m: 1 fg3a: 3 ftm: 0 fta: 0 min: '21:39' plus_minus: -1 meta: next_cursor: 1 per_page: 1 '400': description: Invalid parameters. content: application/json: schema: $ref: '#/components/schemas/ValidationError' example: errors: - param: per_page error: Invalid value '401': description: Missing or invalid API key, or the subscription does not include this endpoint. content: text/plain: schema: type: string example: Unauthorized '429': description: Rate limit exceeded. '500': description: Server error. /euroleague/v1/team_stats: get: summary: Get team stats operationId: euroleague_team_stats_list tags: - Team Stats description: Requires GOAT. Availability varies by game. parameters: - name: per_page in: query required: false description: Results per page (default 25, maximum 100). schema: type: integer minimum: 1 maximum: 100 default: 25 - name: cursor in: query required: false description: Use meta.next_cursor from the previous response. schema: type: integer minimum: 1 maximum: 2147483647 - name: team_ids[] in: query required: false description: Filter by team IDs from the teams endpoint. schema: type: array items: type: integer maximum: 2147483647 minItems: 1 maxItems: 100 style: form explode: true - name: seasons[] in: query required: false description: Filter by season start years. schema: type: array items: type: integer maximum: 2147483647 minItems: 1 maxItems: 100 style: form explode: true - name: game_ids[] in: query required: false description: Filter by game IDs from the games endpoint. schema: type: array items: type: integer maximum: 2147483647 minItems: 1 maxItems: 100 style: form explode: true - name: period in: query required: false description: 0 for the entire game; 1–4 for quarters; 5+ for overtime. schema: type: integer minimum: 0 maximum: 20 responses: '200': description: Success. content: application/json: schema: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/TeamStats' meta: $ref: '#/components/schemas/Meta' example: data: - id: 1 game_id: 1 team: id: 1 name: Paris abbreviation: PAR period: 0 pts: 96 reb: 33 oreb: 17 dreb: 16 ast: 16 stl: 13 blk: 2 turnover: 11 pf: 21 fgm: 36 fga: 78 fg2m: 21 fg2a: 40 fg3m: 15 fg3a: 38 ftm: 9 fta: 12 meta: next_cursor: 1 per_page: 1 '400': description: Invalid parameters. content: application/json: schema: $ref: '#/components/schemas/ValidationError' example: errors: - param: per_page error: Invalid value '401': description: Missing or invalid API key, or the subscription does not include this endpoint. content: text/plain: schema: type: string example: Unauthorized '429': description: Rate limit exceeded. '500': description: Server error. /euroleague/v1/lineups: get: summary: Get lineups operationId: euroleague_lineups_list tags: - Lineups description: Requires ALL-STAR or GOAT. Availability varies by game. parameters: - name: per_page in: query required: false description: Results per page (default 25, maximum 100). schema: type: integer minimum: 1 maximum: 100 default: 25 - name: cursor in: query required: false description: Use meta.next_cursor from the previous response. schema: type: integer minimum: 1 maximum: 2147483647 - name: team_ids[] in: query required: false description: Filter by team IDs from the teams endpoint. schema: type: array items: type: integer maximum: 2147483647 minItems: 1 maxItems: 100 style: form explode: true - name: seasons[] in: query required: false description: Filter by season start years. schema: type: array items: type: integer maximum: 2147483647 minItems: 1 maxItems: 100 style: form explode: true - name: game_ids[] in: query required: true description: Filter by game IDs from the games endpoint. schema: type: array items: type: integer maximum: 2147483647 minItems: 1 maxItems: 100 style: form explode: true - name: player_ids[] in: query required: false description: Filter by player IDs from the players endpoint. schema: type: array items: type: integer maximum: 2147483647 minItems: 1 maxItems: 100 style: form explode: true responses: '200': description: Success. content: application/json: schema: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/Lineup' meta: $ref: '#/components/schemas/Meta' example: data: - id: 1 game_id: 1 team: id: 1 name: Paris abbreviation: PAR player: id: 1 name: Warren T. country: USA jersey_number: '1' starter: true meta: next_cursor: 1 per_page: 1 '400': description: Invalid parameters. content: application/json: schema: $ref: '#/components/schemas/ValidationError' example: errors: - param: per_page error: Invalid value '401': description: Missing or invalid API key, or the subscription does not include this endpoint. content: text/plain: schema: type: string example: Unauthorized '429': description: Rate limit exceeded. '500': description: Server error. /euroleague/v1/scoring: get: summary: Get scoring operationId: euroleague_scoring_list tags: - Scoring description: >- Requires ALL-STAR or GOAT. Returns scoring progression, not a full play-by-play feed. Availability varies by game. parameters: - name: per_page in: query required: false description: Results per page (default 25, maximum 100). schema: type: integer minimum: 1 maximum: 100 default: 25 - name: cursor in: query required: false description: Use meta.next_cursor from the previous response. schema: type: integer minimum: 1 maximum: 2147483647 - name: game_id in: query required: true description: Game ID from the games endpoint. schema: type: integer maximum: 2147483647 responses: '200': description: Success. content: application/json: schema: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/Scoring' meta: $ref: '#/components/schemas/Meta' example: data: - id: 1 game_id: 1 sequence: 1 period: 1 home_team_score: 0 visitor_team_score: 1 meta: next_cursor: 1 per_page: 1 '400': description: Invalid parameters. content: application/json: schema: $ref: '#/components/schemas/ValidationError' example: errors: - param: per_page error: Invalid value '401': description: Missing or invalid API key, or the subscription does not include this endpoint. content: text/plain: schema: type: string example: Unauthorized '429': description: Rate limit exceeded. '500': description: Server error. /euroleague/v1/standings: get: summary: Get standings operationId: euroleague_standings_list tags: - Standings description: Requires FREE or higher. Availability varies by game. parameters: - name: per_page in: query required: false description: Results per page (default 25, maximum 100). schema: type: integer minimum: 1 maximum: 100 default: 25 - name: cursor in: query required: false description: Use meta.next_cursor from the previous response. schema: type: integer minimum: 1 maximum: 2147483647 - name: season in: query required: true description: Season start year. schema: type: integer maximum: 2147483647 responses: '200': description: Success. content: application/json: schema: type: object required: - data - meta properties: data: type: array items: $ref: '#/components/schemas/Standing' meta: $ref: '#/components/schemas/Meta' example: data: - id: 1 season: 2026 group: null rank: 1 team: id: 5 name: Panathinaikos abbreviation: PAT games_played: 4 wins: 4 losses: 0 points_for: 375 points_against: 292 meta: next_cursor: 1 per_page: 1 '400': description: Invalid parameters. content: application/json: schema: $ref: '#/components/schemas/ValidationError' example: errors: - param: per_page error: Invalid value '401': description: Missing or invalid API key, or the subscription does not include this endpoint. content: text/plain: schema: type: string example: Unauthorized '429': description: Rate limit exceeded. '500': description: Server error. components: securitySchemes: ApiKeyAuth: type: apiKey in: header name: Authorization schemas: Team: type: object required: - id - name - abbreviation properties: id: type: integer description: Team ID. name: type: string description: Team name. abbreviation: type: - string - 'null' description: Team abbreviation. Player: type: object required: - id - name - country properties: id: type: integer description: Player ID. name: type: string description: Player name. country: type: - string - 'null' description: Country, when available. Game: type: object required: - id - season - datetime - status - home_team - visitor_team - home_team_score - visitor_team_score properties: id: type: integer description: Game ID. season: type: integer description: Season start year; 2026 identifies the 2026–27 season. datetime: type: string format: date-time description: Scheduled start time in UTC. status: type: string enum: - scheduled - live - final - postponed - cancelled home_team: $ref: '#/components/schemas/Team' visitor_team: $ref: '#/components/schemas/Team' home_team_score: type: - integer - 'null' description: Home score. Null before scoring is available. visitor_team_score: type: - integer - 'null' description: Visitor score. Null before scoring is available. PlayerStats: type: object required: - id - game_id - team - player - pts - reb - oreb - dreb - ast - stl - blk - turnover - pf - fgm - fga - fg2m - fg2a - fg3m - fg3a - ftm - fta - min - plus_minus properties: id: type: integer description: Stat record ID. game_id: type: integer description: Game ID from the games endpoint. team: $ref: '#/components/schemas/Team' player: $ref: '#/components/schemas/Player' pts: type: - number - 'null' description: Points. Null when unavailable. reb: type: - number - 'null' description: Total rebounds. Null when unavailable. oreb: type: - number - 'null' description: Offensive rebounds. Null when unavailable. dreb: type: - number - 'null' description: Defensive rebounds. Null when unavailable. ast: type: - number - 'null' description: Assists. Null when unavailable. stl: type: - number - 'null' description: Steals. Null when unavailable. blk: type: - number - 'null' description: Blocked shots. Null when unavailable. turnover: type: - number - 'null' description: Turnovers. Null when unavailable. pf: type: - number - 'null' description: Personal fouls. Null when unavailable. fgm: type: - number - 'null' description: Field goals made. Null when unavailable. fga: type: - number - 'null' description: Field goals attempted. Null when unavailable. fg2m: type: - number - 'null' description: Two-point field goals made. Null when unavailable. fg2a: type: - number - 'null' description: Two-point field goals attempted. Null when unavailable. fg3m: type: - number - 'null' description: Three-point field goals made. Null when unavailable. fg3a: type: - number - 'null' description: Three-point field goals attempted. Null when unavailable. ftm: type: - number - 'null' description: Free throws made. Null when unavailable. fta: type: - number - 'null' description: Free throws attempted. Null when unavailable. min: type: - string - 'null' description: Playing time, as minutes or minutes:seconds according to available precision. plus_minus: type: - number - 'null' description: Plus/minus. TeamStats: type: object required: - id - game_id - team - period - pts - reb - oreb - dreb - ast - stl - blk - turnover - pf - fgm - fga - fg2m - fg2a - fg3m - fg3a - ftm - fta properties: id: type: integer description: Stat record ID. game_id: type: integer description: Game ID from the games endpoint. team: $ref: '#/components/schemas/Team' period: type: integer description: 0 = entire game; 1–4 = quarters; 5 and above = overtime periods. pts: type: - number - 'null' description: Points. Null when unavailable. reb: type: - number - 'null' description: Total rebounds. Null when unavailable. oreb: type: - number - 'null' description: Offensive rebounds. Null when unavailable. dreb: type: - number - 'null' description: Defensive rebounds. Null when unavailable. ast: type: - number - 'null' description: Assists. Null when unavailable. stl: type: - number - 'null' description: Steals. Null when unavailable. blk: type: - number - 'null' description: Blocked shots. Null when unavailable. turnover: type: - number - 'null' description: Turnovers. Null when unavailable. pf: type: - number - 'null' description: Personal fouls. Null when unavailable. fgm: type: - number - 'null' description: Field goals made. Null when unavailable. fga: type: - number - 'null' description: Field goals attempted. Null when unavailable. fg2m: type: - number - 'null' description: Two-point field goals made. Null when unavailable. fg2a: type: - number - 'null' description: Two-point field goals attempted. Null when unavailable. fg3m: type: - number - 'null' description: Three-point field goals made. Null when unavailable. fg3a: type: - number - 'null' description: Three-point field goals attempted. Null when unavailable. ftm: type: - number - 'null' description: Free throws made. Null when unavailable. fta: type: - number - 'null' description: Free throws attempted. Null when unavailable. Lineup: type: object required: - id - game_id - team - player - jersey_number - starter properties: id: type: integer description: Lineup record ID. game_id: type: integer description: Game ID from the games endpoint. team: $ref: '#/components/schemas/Team' player: $ref: '#/components/schemas/Player' jersey_number: type: - string - 'null' description: Jersey number. starter: type: boolean description: Whether the player is a confirmed starter. Scoring: type: object required: - id - game_id - sequence - period - home_team_score - visitor_team_score properties: id: type: integer description: Scoring record ID. game_id: type: integer description: Game ID from the games endpoint. sequence: type: integer description: Scoring sequence, returned in ascending order. period: type: integer description: 1–4 = quarters; 5 and above = overtime periods. home_team_score: type: integer description: Cumulative home score. visitor_team_score: type: integer description: Cumulative visitor score. Standing: type: object required: - id - season - group - rank - team - games_played - wins - losses - points_for - points_against properties: id: type: integer description: Standing record ID. season: type: integer description: Season start year. group: type: - string - 'null' description: Standings group; null for an ungrouped league. rank: type: integer description: Rank within the group. team: $ref: '#/components/schemas/Team' games_played: type: integer description: Games played. wins: type: integer description: Wins. losses: type: integer description: Losses. points_for: type: integer description: Points scored. points_against: type: integer description: Points conceded. Meta: type: object required: - per_page properties: per_page: type: integer minimum: 1 maximum: 100 prev_cursor: type: integer description: The cursor supplied in this request, when present. next_cursor: type: integer description: Pass as cursor for the next page. Omitted when no further page is indicated. ValidationError: type: object required: - errors properties: errors: type: array items: type: object required: - param - error properties: param: type: string description: Invalid parameter. error: type: string description: Validation message. NotFound: type: object required: - error properties: error: type: string const: Not found