Skip to contents

Game header of a finished game: teams, coaches, final score, officials, venue and the Genius LiveStats id.

Endpoint: GET https://miniappapi.tbf.org.tr/webapi-service/api/Match/mac-header

Usage

tbf_game_header(match_id)

Arguments

match_id

Required. TBF game id (integer), e.g. 346279; match_id in tbf_schedule(). One global sequence across leagues and seasons. Only a finished game is served.

Value

A wehoop_data tibble. One row. 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
match_idintegerTBF game id (key space: TBF games, ONE global sequence across leagues and seasons: 62552 in 2006-07, 346279 in 2026-27). The match_id argument of every game wrapper; the routes echo it as a string or null, the runtime stamps the integer asked for.
match_codecharacterTBF short game code ('1EA4917').
genius_idintegerGenius Sports LiveStats match id (TBF spells it genuisId); joins the genius family. Null when TBF stored none: every game before 2018-19, many 2021-25 games and games not yet assigned one.
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.
activity_namecharacterActivity name ('BSL 2026-2027').
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 'YYYY-YYYY' (seasonName).
seasonintegerSeason END year, read from the season label (seasonName).
tipoffPOSIXctTip-off as a naive timestamp in Turkey local time (Europe/Istanbul, UTC+3).
status_idintegerGame status code: 1 = played (Oynandi), 4 = not played (Oynanmadi), 19 = fixture without a date and time. Cast to an integer from the 1 / 1.0 the API sends.
statuscharacterGame status text in Turkish: Oynandi = played. Only finished games are served.
venuecharacterVenue name (location) as TBF prints it.
attendanceintegerSpectator count (matchSpectatorCount); 0 when not recorded.
has_overtimelogicalOvertime flag (uzatma = overtime). Reliability unverified: false on every one of 64 BSL 2025-26 games checked.
broadcast_channelcharacterBroadcaster (matchBroadcastChannel), e.g. beINSports, or null.
home_team_process_idintegerHome team-season id (key space: TBF team registrations; the header calls it homeTeamProcessId).
home_teamcharacterHome team name as registered for that season, uppercase with Turkish letters.
home_coachcharacterHome head coach name, uppercase.
home_scoreintegerHome final score.
away_team_process_idintegerAway team-season id (key space: TBF team registrations).
away_teamcharacterAway team name as registered for that season, uppercase with Turkish letters.
away_coachcharacterAway head coach name, uppercase.
away_scoreintegerAway final score.
refereecharacterMain referee's name (names only: no contact or birth data is returned).
first_assistant_refereecharacterFirst assistant referee's name.
second_assistant_refereecharacterSecond assistant referee's name.
commissionercharacterCommissioner's (temsilci = representative) name.

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_game_header(match_id = 346279))
#> ── TBF Game Header ───────────────────────────────────────────── wehoop 3.1.0 ──
#> ℹ Data updated: 2026-10-22 03:25:35 UTC
#> # A tibble: 1 × 27
#>   match_id match_code genius_id activity_id activity_name season_id season_label
#>      <int> <chr>          <int>       <int> <chr>             <int> <chr>       
#> 1   346279 1EA4917      2913588       22214 BSL 2026-2027       174 2026-2027   
#> # ℹ 20 more variables: season <int>, tipoff <dttm>, status_id <int>,
#> #   status <chr>, venue <chr>, attendance <int>, has_overtime <lgl>,
#> #   broadcast_channel <chr>, home_team_process_id <int>, home_team <chr>,
#> #   home_coach <chr>, home_score <int>, away_team_process_id <int>,
#> #   away_team <chr>, away_coach <chr>, away_score <int>, referee <chr>,
#> #   first_assistant_referee <chr>, second_assistant_referee <chr>,
#> #   commissioner <chr>
# }