The players of a season, with position, nationality, birth date, age and height.
Endpoint: GET https://embed-api.eui.connect.sportradar.com/v1/embed/{website_id}/persons
height is an integer where the site gives one (centimetres; unit unverified).
position_code / position_name follow the site locale (the name is translated,
the code is not). person_id is stable across seasons and sites.
Usage
atrium_players(
website_id,
season = NULL,
season_id = NULL,
competition_id = NULL,
entity_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.
- 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_idwhen several competitions share that year (seeatrium_seasons()). Omitseasonandseason_idfor the site's default season.- season_id
(character optional): Season UUID (
season_idinatrium_seasons()); sent as is, skipping the END-year lookup ofseason.- competition_id
(character optional): Competition UUID (
competition_idinatrium_seasons()). Picks the season together withseason, and is then not sent; with neitherseasonnorseason_idthe API filters by it.- entity_id
(character optional): Team UUID (
entity_idinatrium_teams()or any fixture row).- 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 (season_id, person_id):
| col_name | type | description |
| website_id | integer | Site 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. |
| season_id | character | Season UUID of the roster list. |
| person_id | character | Player UUID (person), shared across seasons and sites. |
| name | character | Player name as the site prints it. |
| bib | character | Jersey number, as text. |
| entity_id | character | Team UUID the player is rostered with that season. |
| team_name | character | Team name in the site's language. |
| position_code | character | Position code (C, PG, SF, ...), language-independent. |
| position_name | character | Position name in the site's language. |
| nationality | character | Player's nationality in the site's language (e.g. Belgique). |
| date_of_birth | Date | Player's date of birth. |
| age | integer | Player's age in years when the body was generated. |
| height | integer | Height as an integer, centimetres presumed (unit unverified); null when the site gives none. |
| status | character | Player status in the site's language (Actif, Blesse). |
| image_url | character | URL of the Sportradar-hosted image (400 px). |
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.
See also
Other Atrium Functions:
atrium_box_score(),
atrium_competition_player_stats(),
atrium_competition_team_stats(),
atrium_end_year(),
atrium_fixture(),
atrium_fixture_periods(),
atrium_fixtures(),
atrium_fixtures_ribbon(),
atrium_leaders(),
atrium_pbp(),
atrium_player(),
atrium_player_game_log(),
atrium_player_seasons(),
atrium_player_stats(),
atrium_season_id(),
atrium_seasons(),
atrium_shots(),
atrium_standings(),
atrium_standings_summary(),
atrium_team(),
atrium_team_box_score(),
atrium_team_stats(),
atrium_teams(),
lmb_competition,
lnbp_competition,
lpb_competition,
nbl1_competition
Examples
# \donttest{
try(atrium_players(
website_id = 12, season = 2026, competition_id = "3f4064bb-51ad-11f0-aaaf-2923c944b404"
))
#> ── Atrium players from embed-api.eui.connect.sportradar.com ──── wehoop 3.1.0 ──
#> ℹ Data updated: 2026-10-22 02:33:49 UTC
#> # A tibble: 294 × 15
#> website_id season_id person_id name bib entity_id team_name position_code
#> <int> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 12 df310a05-… 01173036… Isma… 21 f43b1b0f… Paris C
#> 2 12 df310a05-… 03e0ef50… Juha… 23 736b73ae… Monaco GF
#> 3 12 df310a05-… 0602120f… Jare… NA f43b1b0f… Paris NA
#> 4 12 df310a05-… 06ded7ee… Dayl… 2 c281453b… Cholet SG
#> 5 12 df310a05-… 08ee670c… John… 8 7e9f3d8d… Le Mans GF
#> 6 12 df310a05-… 095e7eb6… Davi… 4 7e9f3d8d… Le Mans FC
#> 7 12 df310a05-… 0a26b3fe… Just… 1 238ad480… Dijon PG
#> 8 12 df310a05-… 0b6849a9… Just… 5 f43b1b0f… Paris PG
#> 9 12 df310a05-… 0c8e19b5… Cat … 1 689d1a0a… Saint-Qu… GF
#> 10 12 df310a05-… 16742263… Aaro… 79 c281453b… Cholet PG
#> # ℹ 284 more rows
#> # ℹ 7 more variables: position_name <chr>, nationality <chr>,
#> # date_of_birth <date>, age <int>, height <int>, status <chr>,
#> # image_url <chr>
# }
