The roster is the player list for one NHL club. You pass the team abbreviation from standings, such as BOS. Players are split into forwards, defensemen, and goalies. Names are objects, not plain strings.
👉 To access this endpoint, you must obtain an API key: https://steadyapi.com/register
Authentication
Every call uses a Bearer token from your SteadyAPI dashboard.
Documentation:
https://docs.steadyapi.com/#authenticating-requests
headers = {
'Authorization': 'Bearer YOUR_API_KEY'
}
Where this fits
Read teamAbbrev.default from GET /v1/nhl/standings and pass that string here. The same abbreviation is what GET /v1/nhl/teams-games and GET /v1/nhl/teams-stats expect. A city name is not the parameter.
Get an NHL roster
Endpoint: GET /v1/nhl/teams-roster
Documentation:
https://docs.steadyapi.com/#hockey-nhl-GETapi-v1-nhl-teams-roster
Parameters
teamAbbrev— required team abbreviation (example:BOS)
There is no date and no season parameter. One abbreviation returns the roster grouped by position. The group key is not the player’s position code. Read positionCode on the player. C in the sample is center, and that player still lives under forwards.
Python
import requests
url = "https://api.steadyapi.com/v1/nhl/teams-roster"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
response = requests.get(url, headers=headers, params={"teamAbbrev": "BOS"})
response.raise_for_status()
body = response.json().get("body") or {}
for player in body.get("forwards") or []:
first = (player.get("firstName") or {}).get("default")
last = (player.get("lastName") or {}).get("default")
print(player.get("id"), first, last, player.get("sweaterNumber"))
Annotated sample
{
"forwards": [
{
"id": 8480003,
"firstName": { "default": "Jesper" },
"lastName": { "default": "Boqvist" },
"sweaterNumber": 70,
"positionCode": "C",
"shootsCatches": "L",
"heightInInches": 73,
"weightInPounds": 184,
"birthDate": "1998-10-30"
}
]
}
Store id. Display firstName.default and lastName.default. sweaterNumber is the jersey number. The same player fields appear under defensemen and goalies. headshot is a URL when it is present. Birth city is also an object with default. Birth country in the sample is the code SWE.
Practical use
Do not concatenate firstName as if it were a string. You will print the object. Use the default field, the same way standings uses teamAbbrev.default.
A full roster is three lists. If you only loop forwards, you drop the defense and the goalies. Count all three when you report roster size.
The abbreviation is the one from standings, three letters such as BOS, DAL, or WPG. The team’s city is not accepted in place of it.
👉 Get your API key and load a roster: https://steadyapi.com/register