Skip to contents

The featured leagues (league-season activities) of one TBF season: BSL, TBL, KBSL and the others.

Endpoint: GET https://miniappapi.tbf.org.tr/webapi-service/api/League/get-leagues-for-filter

Usage

tbf_leagues(season)

Arguments

season

Required. Season END year (2027 = the 2026-2027 season). TBF keys a league-season by internal season and activity ids; the runtime reads them from the league's season list by the END year of the label. A year the list lacks raises wehoop_no_data.

Value

A wehoop_data tibble. One row per league: BSL, TBL, KBSL, TKBL, TB2L and the youth leagues with their activity_id. Every column below is always present (a zero-row tibble keeps them and their types); an answer with nothing in it raises wehoop_no_data, as in sdv-py.

col_nametypedescription
activity_idintegerActivity id (faaliyet = activity; key space: TBF league-SEASONS, new every season: BSL 2026-27 = 22214, BSL 2025-26 = 20728, TBL 2026-27 = 22215, KBSL 2026-27 = 22209). Cast to an integer from the 22214 / 22214.0 the API sends.
namecharacterActivity name '<LEAGUE> YYYY-YYYY' ('BSL 2026-2027').
display_namecharacterLeague short name ('BSL', 'KBSL', 'TBL', 'TKBL', 'TB2L', 'BGL', 'BGLK', 'KBBL').
competitioncharacterTBF league the row belongs to: bsl, tbl or kbsl (the request's competition, or the league prefix the API reports).
gendercharacterGender in Turkish: 'Erkek' = men, 'Kadin' = women.
season_idintegerInternal TBF season id (key space: TBF seasons, global across leagues: 174 = 2026-2027, 172 = 2025-2026; the odd ids are international UA- seasons). Never an sdv key: use season (END year).
season_labelcharacterSeason label as TBF writes it, 'YYYY-YYYY' (start and end year).
seasonintegerSeason END year (2027 = the 2026-2027 season), read from the 'YYYY-YYYY' label or the request; the sdv season key. Not the internal TBF season id (season_id).
sortintegerDisplay order in the app (integer, 1 = first: BSL).

Details

Official TBF app API, unofficial for SportsDataverse: the backend of the Turkish Basketball Federation's mobile app (miniappapi.tbf.org.tr), which serves BSL, TBL, KBSL and the other TBF leagues. It needs no key; robots.txt answers 404 on the host, and the runtime spaces requests at least 1 s apart. SportsDataverse has not ruled on TBF's terms, so payloads are not redistributed as release assets. The vendor's origin hosts (nikayazilim.com) serve the same data without Cloudflare but are deliberately not used, redirects are never followed, and www.tbf.org.tr's interactive Turnstile is neither used nor automated.

Coverage: season and competition are parameters (bsl Basketbol Super Ligi, back to 1966-67 in the league list; tbl second tier; kbsl women, both from 2015-16). Game wrappers serve FINISHED games only (an unfinished game raises wehoop_asset_fetch). Box scores exist from 2006-07 (no starters flagged that season); play-by-play and shots from 2025-26 only, an earlier finished game raises wehoop_no_data. Every game carries a Genius LiveStats id (genius_id, joins the genius family) from 2018-19 on some seasons and on every game of 2025-26 and later. Birth dates, contact details, photos and logos are dropped. Names and category labels are Turkish; the column descriptions give the English gloss.

Errors: wehoop_no_data when TBF has nothing for the request (HTTP 404, an unknown game or player, a season the league list lacks, an empty list, a finished game before 2025-26 asked for play-by-play or shots); wehoop_bad_request for an invalid argument or HTTP 400 / 422; wehoop_asset_fetch when the fetch failed or the answer is not the one asked for (an unfinished game, a body for another game, season, league or team, an error envelope, a redirect, a partial page or a changed capped list). All inherit wehoop_error. Timestamps are Turkey local time (Europe/Istanbul).

Examples

# \donttest{
  try(tbf_leagues(season = 2027))
#> ── TBF Leagues ───────────────────────────────────────────────── wehoop 3.1.0 ──
#> ℹ Data updated: 2026-10-22 03:25:39 UTC
#> # A tibble: 8 × 9
#>   activity_id name        display_name competition gender season_id season_label
#>         <int> <chr>       <chr>        <chr>       <chr>      <int> <chr>       
#> 1       22214 BSL 2026-2… BSL          BSL         Erkek        174 2026-2027   
#> 2       22209 KBSL 2026-… KBSL         KBSL        Kadın        174 2026-2027   
#> 3       22215 TBL 2026-2… TBL          TBL         Erkek        174 2026-2027   
#> 4       22210 TKBL 2026-… TKBL         TKBL        Kadın        174 2026-2027   
#> 5       22223 TB2L 2026-… TB2L         TB2L        Erkek        174 2026-2027   
#> 6       23540 BGL 2026-2… BGL          BGL         Erkek        174 2026-2027   
#> 7       23541 BGLK 2026-… BGLK         BGLK        Kadın        174 2026-2027   
#> 8       23539 KBBL 2026-… KBBL         KBBL        Kadın        174 2026-2027   
#> # ℹ 2 more variables: season <int>, sort <int>
# }