Skip to content

Teams, Players & Rosters

Team roster

Universal across baseball, basketball, soccer, football, and hockey. Returns the sport-specific player records currently attached to the team (currentTeamId), as filled by the roster ingestion (24h cadence) and, for soccer, the squad-membership reconciler. NFL rows carry the football position cluster (QB/RB/WR/...), depth-chart slot, and draft metadata; NHL rows carry the hockey position cluster (C/LW/RW/D/G), shoots/catches handedness, and contract bits.

active defaults to true; set active=false to include retired or released players still tagged with the team. Reads are soft — a team whose roster has not been ingested yet returns an empty array rather than 404.

Soccer responses also carry _meta.availability saying whether an empty roster is expected: status is available (players returned), not_available (the team's squad page was fetched and lists nobody, and no recent cup lineup names its players, typically an amateur club that only appears in a domestic cup) or unknown (empty with nothing saying that is expected: no squad page fetched yet, a failed or partial fetch, or a squad page or cup lineup that lists players), with a reason and, when a squad page was checked, checked_at.

Requires the stats entitlement (a paid plan). See Responses & Errors for the success envelope and availability rules.

GEThttps://api.sportquanta.com/v1/{league}/teams/{id}/roster
GETGet a team's roster
GET/v1/{league}/teams/{id}/roster

Get a team's roster

Universal across baseball, basketball, soccer, football, and hockey. Returns the sport-specific player records currently attached to the team (currentTeamId), as filled by the roster ingestion (24h cadence) and, for soccer, the squad-membership reconciler. NFL rows carry the football position cluster (QB/RB/WR/...), depth-chart slot, and draft metadata; NHL rows carry the hockey position cluster (C/LW/RW/D/G), shoots/catches handedness, and contract bits.

active defaults to true; set active=false to include retired or released players still tagged with the team. Reads are soft — a team whose roster has not been ingested yet returns an empty array rather than 404.

Soccer responses also carry _meta.availability saying whether an empty roster is expected: status is available (players returned), not_available (the team's squad page was fetched and lists nobody, and no recent cup lineup names its players, typically an amateur club that only appears in a domestic cup) or unknown (empty with nothing saying that is expected: no squad page fetched yet, a failed or partial fetch, or a squad page or cup lineup that lists players), with a reason and, when a squad page was checked, checked_at.

Requires the stats entitlement (a paid plan). See Responses & Errors for the success envelope and availability rules.

Authorization
Path
Query
Get a team's rostercURL
200Example

Reference context: WKBL.

Overview · Response conventions

Authorizations

Authorizationstringheaderrequired

Send a workspace API token in the Authorization: Bearer <token> header.

Path Parameters

leagueenum<string>default:wkblrequired

League for this reference section: wkbl.

Available options: wkbl

idstringrequired

Query Parameters

activebooleandefault:true
provenancebooleandefault:false

Opt in to per-field provenance on supported single game, match, team, player, and venue reads. Lists and composites accept the flag but generally omit provenance. It is returned under _meta.provenance only when source metadata exists.

seasonstring

Basketball only: season start year or label such as 2025-26. Historical roster uses that season; omitted selects current roster.

Response

application/json

Array of sport-specific player records.

dataobject[] | nullrequired
data.idstring
data.canonical_idstring
data.external_idsobject

Map from the exact stored source/namespace key to that provider's identifier for this entity. Keys vary by entity and league. Values are strings, even when the provider ID looks numeric. Use the exact key and value for external-ID lookups; these are distinct from the canonical ID. SOURCE_KEY below is an illustrative placeholder.

data.external_ids.{key}string
data.created_atstring<date-time>

Canonical document creation timestamp, when present; not the scheduled start or event time.

data.updated_atstring<date-time>

Canonical document update timestamp, when present. It is not a guarantee that every field was refreshed at this time; field provenance carries individual ingestion times.

data.full_namestring
data.given_namestring
data.family_namestring
data.known_asstring
data.slugstring
data.jersey_numberstring
data.positionstring
data.date_of_birthstring
data.countrystring
data.nationalitystring
data.height_cminteger
data.weight_kginteger
data.headshot_asset_keystring

Stored asset key, when available. Prefer the materialized URL field for display instead of constructing a storage URL.

data.official_headshot_urlstring
data.current_team_idstring
data.activebooleanrequired
data.localized_namesobject

Names keyed by BCP-47 language tag, not a single translated string. Each value contains optional camelCase name fields (displayName, fullName, name, shortName, givenName, familyName), language, romanized, and nameSource; older records may use a plain string. Only populated languages appear. Common keys are en, ko, and ja; other supported keys include es, de, fr, pt, it, nl, zh-Hans, and zh-Hant. For display, try displayName → fullName → name → shortName → the entity's base name. This map can be absent or empty. See localized names.

data.localized_names.enobject | string

English name entry, when available.

data.localized_names.en.option 1object
data.localized_names.en.languagestring | null

BCP-47 tag echoing the map key. Retained for back-compat with the legacy baseball/basketball slot shape; new writers may omit it.

data.localized_names.en.namestring | null

Short / common display form (e.g. "두산", "맨유").

data.localized_names.en.fullNamestring | null

Official long form (e.g. "두산 베어스", "맨체스터 유나이티드").

data.localized_names.en.shortNamestring | null

Short-name variant (legacy baseball/basketball slot field).

data.localized_names.en.givenNamestring | null

Given/first name in this locale, when split out.

data.localized_names.en.familyNamestring | null

Family/last name in this locale, when split out.

data.localized_names.en.displayNamestring | null

Preferred UI display label for this locale.

data.localized_names.en.romanizedboolean

True when this name was produced by algorithmic transliteration (Korean Revised Romanization, Japanese Hepburn) as a fallback rather than sourced from an official/native feed. Absent or false means the value came from an authoritative source. Lets consumers distinguish a machine-romanized name from an official spelling.

data.localized_names.en.nameSourcestring | null

Origin of the value for auditing, e.g. 'naver', 'koreabaseball', 'npb_official', 'flashscore', 'statsapi', 'rr', 'hepburn'.

data.localized_names.koobject | string

Korean name entry, when available.

data.localized_names.ko.option 1object
data.localized_names.ko.languagestring | null

BCP-47 tag echoing the map key. Retained for back-compat with the legacy baseball/basketball slot shape; new writers may omit it.

data.localized_names.ko.namestring | null

Short / common display form (e.g. "두산", "맨유").

data.localized_names.ko.fullNamestring | null

Official long form (e.g. "두산 베어스", "맨체스터 유나이티드").

data.localized_names.ko.shortNamestring | null

Short-name variant (legacy baseball/basketball slot field).

data.localized_names.ko.givenNamestring | null

Given/first name in this locale, when split out.

data.localized_names.ko.familyNamestring | null

Family/last name in this locale, when split out.

data.localized_names.ko.displayNamestring | null

Preferred UI display label for this locale.

data.localized_names.ko.romanizedboolean

True when this name was produced by algorithmic transliteration (Korean Revised Romanization, Japanese Hepburn) as a fallback rather than sourced from an official/native feed. Absent or false means the value came from an authoritative source. Lets consumers distinguish a machine-romanized name from an official spelling.

data.localized_names.ko.nameSourcestring | null

Origin of the value for auditing, e.g. 'naver', 'koreabaseball', 'npb_official', 'flashscore', 'statsapi', 'rr', 'hepburn'.

data.localized_names.jaobject | string

Japanese name entry, when available.

data.localized_names.ja.option 1object
data.localized_names.ja.languagestring | null

BCP-47 tag echoing the map key. Retained for back-compat with the legacy baseball/basketball slot shape; new writers may omit it.

data.localized_names.ja.namestring | null

Short / common display form (e.g. "두산", "맨유").

data.localized_names.ja.fullNamestring | null

Official long form (e.g. "두산 베어스", "맨체스터 유나이티드").

data.localized_names.ja.shortNamestring | null

Short-name variant (legacy baseball/basketball slot field).

data.localized_names.ja.givenNamestring | null

Given/first name in this locale, when split out.

data.localized_names.ja.familyNamestring | null

Family/last name in this locale, when split out.

data.localized_names.ja.displayNamestring | null

Preferred UI display label for this locale.

data.localized_names.ja.romanizedboolean

True when this name was produced by algorithmic transliteration (Korean Revised Romanization, Japanese Hepburn) as a fallback rather than sourced from an official/native feed. Absent or false means the value came from an authoritative source. Lets consumers distinguish a machine-romanized name from an official spelling.

data.localized_names.ja.nameSourcestring | null

Origin of the value for auditing, e.g. 'naver', 'koreabaseball', 'npb_official', 'flashscore', 'statsapi', 'rr', 'hepburn'.

data.localized_names.{key}object | string
data.localized_names.{key}.option 1object
data.localized_names.{key}.languagestring | null

BCP-47 tag echoing the map key. Retained for back-compat with the legacy baseball/basketball slot shape; new writers may omit it.

data.localized_names.{key}.namestring | null

Short / common display form (e.g. "두산", "맨유").

data.localized_names.{key}.fullNamestring | null

Official long form (e.g. "두산 베어스", "맨체스터 유나이티드").

data.localized_names.{key}.shortNamestring | null

Short-name variant (legacy baseball/basketball slot field).

data.localized_names.{key}.givenNamestring | null

Given/first name in this locale, when split out.

data.localized_names.{key}.familyNamestring | null

Family/last name in this locale, when split out.

data.localized_names.{key}.displayNamestring | null

Preferred UI display label for this locale.

data.localized_names.{key}.romanizedboolean

True when this name was produced by algorithmic transliteration (Korean Revised Romanization, Japanese Hepburn) as a fallback rather than sourced from an official/native feed. Absent or false means the value came from an authoritative source. Lets consumers distinguish a machine-romanized name from an official spelling.

data.localized_names.{key}.nameSourcestring | null

Origin of the value for auditing, e.g. 'naver', 'koreabaseball', 'npb_official', 'flashscore', 'statsapi', 'rr', 'hepburn'.

_metaobject

Response request/cache metadata. Optional evidence fields are specific to this handler; cache TTL does not measure source-data freshness.

_meta.request_idstring
_meta.served_fromenum<string>

Available options: live, cache

_meta.cache_ttl_secondsinteger

Response cache TTL; independent of source freshness. Omitted when zero.