openapi: 3.1.0 info: title: BALLDONTLIE Basketball Champions League API version: 1.0.0 description: >- Basketball Champions League 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: /bcl/v1/teams: get: summary: Get teams operationId: bcl_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: 1413 name: Murcia abbreviation: MUR 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. /bcl/v1/teams/{id}: get: summary: Get a team operationId: bcl_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: 1413 name: Murcia abbreviation: MUR '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. /bcl/v1/players: get: summary: Get players operationId: bcl_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: 397 name: Raieste S. country: Estonia meta: next_cursor: 397 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. /bcl/v1/players/{id}: get: summary: Get a player operationId: bcl_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: 397 name: Raieste S. country: Estonia '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. /bcl/v1/games: get: summary: Get games operationId: bcl_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: 688 season: 2026 datetime: '2026-10-07T18:30:00.000Z' status: final home_team: id: 1413 name: Murcia abbreviation: MUR visitor_team: id: 1414 name: Varese abbreviation: VAR home_team_score: 85 visitor_team_score: 58 meta: next_cursor: 688 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. /bcl/v1/games/{id}: get: summary: Get a game operationId: bcl_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: 688 season: 2026 datetime: '2026-10-07T18:30:00.000Z' status: final home_team: id: 1413 name: Murcia abbreviation: MUR visitor_team: id: 1414 name: Varese abbreviation: VAR home_team_score: 85 visitor_team_score: 58 '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. /bcl/v1/stats: get: summary: Get player stats operationId: bcl_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: 340 game_id: 688 team: id: 1413 name: Murcia abbreviation: MUR player: id: 397 name: Raieste S. country: Estonia pts: 8 reb: 2 oreb: 0 dreb: 2 ast: 2 stl: 0 blk: 2 turnover: 1 pf: 3 fgm: 2 fga: 3 fg2m: 0 fg2a: 0 fg3m: 2 fg3a: 3 ftm: 2 fta: 2 min: '19:25' plus_minus: 10 meta: next_cursor: 340 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. /bcl/v1/team_stats: get: summary: Get team stats operationId: bcl_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: 163 game_id: 688 team: id: 1413 name: Murcia abbreviation: MUR period: 0 pts: 85 reb: 49 oreb: 13 dreb: 36 ast: 27 stl: 8 blk: 7 turnover: 17 pf: 22 fgm: 29 fga: 67 fg2m: 17 fg2a: 33 fg3m: 12 fg3a: 34 ftm: 15 fta: 17 meta: next_cursor: 163 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. /bcl/v1/lineups: get: summary: Get lineups operationId: bcl_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: 374 game_id: 688 team: id: 1413 name: Murcia abbreviation: MUR player: id: 397 name: Raieste S. country: Estonia jersey_number: '2' starter: true meta: next_cursor: 374 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. /bcl/v1/scoring: get: summary: Get scoring operationId: bcl_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: 1450 game_id: 688 sequence: 1 period: 1 home_team_score: 2 visitor_team_score: 0 meta: next_cursor: 1450 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. /bcl/v1/standings: get: summary: Get standings operationId: bcl_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: 77 season: 2026 group: Group A rank: 1 team: id: 1427 name: Trabzonspor abbreviation: TRA games_played: 1 wins: 1 losses: 0 points_for: 93 points_against: 83 meta: next_cursor: 77 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