Skip to contents

A player's game log: one row per game with the opponent, result and the statistics the site shows.

Endpoint: GET https://embed-api.eui.connect.sportradar.com/v1/embed/{website_id}/person_detail?sub=log

score is the site's text ("88 - 91"); which side is listed first is unverified, so it is not split. date is the local start time (no offset). The log carries no fixture id: join on date and opponent.

Usage

atrium_player_game_log(
  website_id,
  person_id,
  season = NULL,
  season_id = NULL,
  competition_id = NULL,
  locale = NULL
)

Arguments

website_id

(integer required): Site config id: which league site's widget this is (12 LNB France, 14 LNBP Mexico, 3 NBL1 Australia, 13 El Salvador, 22 Panama, 236 Austria, 326 Montenegro). Not a league id: one site serves several competitions.

person_id

(character required): Player UUID (person_id in atrium_players() or a box score), e.g. "4458f165-f865-11f0-8ebf-539c931c1654".

season

(integer optional): Season END year (2026 = 2025-26 on LNB, site 12, whose own year is the START year; the calendar year on the other sites). Needs competition_id when several competitions share that year (see atrium_seasons()). Omit season and season_id for the site's default season.

season_id

(character optional): Season UUID (season_id in atrium_seasons()); sent as is, skipping the END-year lookup of season.

competition_id

(character optional): Competition UUID (competition_id in atrium_seasons()). Picks the season together with season, and is then not sent; with neither season nor season_id the API filters by it.

locale

(character optional): Locale of the labels, e.g. "en-EN" or "fr-FR". Omitted = the site's own language. Ids and codes never change.

Value

A wehoop_data tibble, one row per game:

col_nametypedescription
website_idintegerSite config id the body came from (12 LNB, 14 LNBP, 3 NBL1, 13 El Salvador, 22 Panama, 236 Austria, 326 Montenegro), read from the body's links.self.
person_idcharacterPlayer UUID (person), shared across seasons and sites.
season_idcharacterSeason UUID the log is for (the season asked, else the site's default).
datecharacterLocal start of the game as the API sends it (YYYY-MM-DDTHH:MM:SS, no offset; the zone is not given): the field the ribbon's start_time_local reads.
opponent_entity_idcharacterTeam UUID of the opponent.
opponent_namecharacterName of the opponent.
resultcharacterResult for the player's team: W or L.
result_labelcharacterResult label in the site's language (V, D).
scorecharacterFinal score as the site's text (e.g. 88 - 91); which side is listed first is unverified, so it is not split.
minutescharacterTime played as an ISO 8601 duration (PT7M23S); a team's is the sum over its players (PT200M) (player, that game).
seconds_playedintegerTime played in whole seconds, parsed from minutes (player, that game).
pointsintegerPoints scored (player, that game).
reboundsintegerTotal rebounds (player, that game).
rebounds_offensiveintegerOffensive rebounds (player, that game).
rebounds_defensiveintegerDefensive rebounds (player, that game).
assistsintegerAssists (player, that game).
stealsintegerSteals (player, that game).
blocksintegerShots blocked (player, that game).
blocks_receivedintegerOwn shots blocked by an opponent (LNB only) (player, that game).
turnoversintegerTurnovers (player, that game).
fouls_totalintegerFouls committed (player, that game).
fouls_drawnintegerFouls drawn (committed against the player or team; LNBP only) (player, that game).
plus_minusintegerPlus/minus, the point differential while on court (LNB only; null in some team lines) (player, that game).
efficiencyintegerEfficiency rating, from the site's own formula (player, that game).
field_goals_madeintegerField goals made, two- and three-pointers together (LNBP only) (player, that game).
field_goals_attemptedintegerField goals attempted (LNBP only) (player, that game).
field_goals_percentagedoubleField-goal percentage, 0-100 (LNBP only) (player, that game).
points_two_madeintegerTwo-point field goals made (player, that game).
points_two_attemptedintegerTwo-point field goals attempted (player, that game).
points_two_percentagedoubleTwo-point percentage, 0-100 (player, that game).
points_three_madeintegerThree-point field goals made (player, that game).
points_three_attemptedintegerThree-point field goals attempted (player, that game).
points_three_percentagedoubleThree-point percentage, 0-100 (player, that game).
free_throws_madeintegerFree throws made (player, that game).
free_throws_attemptedintegerFree throws attempted (player, that game).
free_throws_percentagedoubleFree-throw percentage, 0-100 (player, that game).
points_fast_breakintegerFast-break points (LNBP only) (player, that game).
dunksintegerDunks (player, that game).
fouls_personalintegerPersonal fouls (player, that game).

Details

Unofficial. This is the public endpoint the Sportradar Atrium / Synergy "Connect" widget calls from every visitor's browser (keyless; the host has no robots.txt). The data is Sportradar's and the leagues'. The wrappers read it on the caller's behalf, one request at least 1 s after the last to the host, and it is not republished as release assets. Keep crawls small and incremental.

Sites and seasons. website_id picks the league site; one site carries many competitions. Seasons are END years (season = 2026): the site's own year is the START year on LNB and the calendar year elsewhere, and a year can hold several competitions, so pair season with competition_id (see atrium_seasons()) or pass season_id. atrium_end_year() maps a site's own year to that END year, and atrium_season_id() finds the season UUID.

Columns are configured per site: a statistic one site omits is NA. A key the documented columns do not list is appended with an inferred type. Player and team ids (UUIDs, character) are shared across sites; the player stat tables carry names only, so person_id there is decoded from the widget link beside each name.

Errors (classed conditions, all inheriting wehoop_error): wehoop_no_data when the site has nothing for the request (HTTP 404, no such season, an empty fixture list, a game with no play-by-play yet, or a fixture id the site does not serve: an unknown id or a game of another site, which the API answers alike with an empty fixture); wehoop_bad_request for HTTP 400 / 422 or an argument that cannot be mapped (an ambiguous END year, season with season_id); wehoop_asset_fetch for any other failed fetch, an error / stub body, or a body that belongs to another site, type, season, game, player or team than the one asked for.

 atrium_player_game_log(website_id = 12, person_id = "4458f165-f865-11f0-8ebf-539c931c1654")