NHL players API
players
nhl.playersEvery individual who has played in the NHL — current rosters, AHL call-ups, free agents, and retired players, with their shooting hand, position, and home country.
⚠️ This endpoint is documented but not yet live. Calls return
503 until data is wired in.GET/api/v1/nhl/playersList players for NHL
Requires one of:
team_id or roster_status — requests satisfying none of these return 400.Parameters
team_idquerybigintoptionalFilter to players whose current team_id matches. Null team_id rows (free agents, retired) are excluded when this filter is applied.
roster_statusquerystringoptionalFilter by canonical roster status. NHL source granularity is coarse: "active" (on a current team roster), "free_agent" (no team), "inactive" (not currently rostered); injured_reserve appears where derivable. The "on a team now" set is {active, injured_reserve}. Values: active, injured_reserve, inactive, free_agent.
limitqueryintegeroptionaldefault 50Page size. Defaults to 50; max 5000.
from_idquerybigintoptionalReturn rows with id strictly greater than this value; page using the previous response's `next_from_id`. Omit on the first page.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/nhl/players?team_id=1'Responses
200players rows matching the declared filter set, wrapped in { players, limit, next_from_id }. next_from_id is the last row's id on a full page — pass it back via ?from_id= to walk the full result; null marks the terminal page.application/jsonshow example ▸
400No declared filter set was satisfied — response body matches MissingRequiredFiltersError; pick one combo from the accepted-sets hint and resend.
application/json503Coming soon — handler returns 503 until data is wired in.
Response Schema(35 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
draft_team_id | bigintnullable | — e.g. — (all-null in sample) | |
league_id | stringnullable | — | Official NHL player identifier e.g. — (all-null in sample) |
league_player_id | integer | — | Official NHL player ID (issued by the league) e.g. — (all-null in sample) |
team_id | bigintnullable | — e.g. — (all-null in sample) | |
birth_city | stringnullable | — | — e.g. — (all-null in sample) |
birth_country | stringnullable | — | — e.g. — (all-null in sample) |
birth_date | datenullable | — | — e.g. — (all-null in sample) |
birth_state | stringnullable | — | — e.g. — (all-null in sample) |
catches | stringnullable | — | — e.g. — (all-null in sample) |
college | stringnullable | — | — e.g. — (all-null in sample) |
draft_overall_pick | integernullable | — | — e.g. — (all-null in sample) |
draft_pick | integernullable | — | — e.g. — (all-null in sample) |
draft_round | integernullable | — | — e.g. — (all-null in sample) |
draft_year | integernullable | — | — e.g. — (all-null in sample) |
experience | integernullable | — | Years of NHL experience e.g. — (all-null in sample) |
first_name | string | — | — e.g. — (all-null in sample) |
full_name | string | — | — e.g. — (all-null in sample) |
height | integernullable | — | Height in inches e.g. — (all-null in sample) |
injury_body_part | stringnullable | — | — e.g. — (all-null in sample) |
injury_notes | stringnullable | — | — e.g. — (all-null in sample) |
injury_start_date | timestamptznullable | — | — e.g. — (all-null in sample) |
injury_status | stringnullable | — | — e.g. — (all-null in sample) |
jersey | stringnullable | — | — e.g. — (all-null in sample) |
last_name | string | — | — e.g. — (all-null in sample) |
nationality | stringnullable | — | — e.g. — (all-null in sample) |
photo_url | stringnullable | — | URL to player headshot image e.g. — (all-null in sample) |
position_category | stringnullable | — | — e.g. — (all-null in sample) |
primary_position | string | — | — e.g. — (all-null in sample) |
rookie_year | integernullable | — | — e.g. — (all-null in sample) |
roster_status | stringnullable | — | Canonical roster status, shared across leagues. NHL source granularity is coarse: "active" (on a current api-web team roster), "free_agent" (no team), "inactive" (not currently rostered); injured_reserve where derivable. The "on a team now" set is {active, injured_reserve}. |
shoots | stringnullable | — | — e.g. — (all-null in sample) |
weight | integernullable | — | Weight in pounds e.g. — (all-null in sample) |
youth_league | stringnullable | — | — e.g. — (all-null in sample) |
youth_team | stringnullable | — | — e.g. — (all-null in sample) |
GET/api/v1/nhl/players/{id}Get a single player by id
Parameters
idpathbigintrequiredPrimary key (id) of the player row.
Restores the documented defaults (trial keys only accept the unchanged defaults).
Request
curl -sS --compressed \
-H 'Authorization: Bearer YOUR_API_KEY' \
'https://api.stat-api.com/api/v1/nhl/players/{pk_value}'Responses
200Single player row.application/jsonshow example ▸
404Row not found.
503Coming soon — handler returns 503 until data is wired in.
Response Schema(35 fields)show schema ▸
| Field | Type | References | Description |
|---|---|---|---|
idkey | bigint | — | Primary Key |
draft_team_id | bigintnullable | — e.g. — (all-null in sample) | |
league_id | stringnullable | — | Official NHL player identifier e.g. — (all-null in sample) |
league_player_id | integer | — | Official NHL player ID (issued by the league) e.g. — (all-null in sample) |
team_id | bigintnullable | — e.g. — (all-null in sample) | |
birth_city | stringnullable | — | — e.g. — (all-null in sample) |
birth_country | stringnullable | — | — e.g. — (all-null in sample) |
birth_date | datenullable | — | — e.g. — (all-null in sample) |
birth_state | stringnullable | — | — e.g. — (all-null in sample) |
catches | stringnullable | — | — e.g. — (all-null in sample) |
college | stringnullable | — | — e.g. — (all-null in sample) |
draft_overall_pick | integernullable | — | — e.g. — (all-null in sample) |
draft_pick | integernullable | — | — e.g. — (all-null in sample) |
draft_round | integernullable | — | — e.g. — (all-null in sample) |
draft_year | integernullable | — | — e.g. — (all-null in sample) |
experience | integernullable | — | Years of NHL experience e.g. — (all-null in sample) |
first_name | string | — | — e.g. — (all-null in sample) |
full_name | string | — | — e.g. — (all-null in sample) |
height | integernullable | — | Height in inches e.g. — (all-null in sample) |
injury_body_part | stringnullable | — | — e.g. — (all-null in sample) |
injury_notes | stringnullable | — | — e.g. — (all-null in sample) |
injury_start_date | timestamptznullable | — | — e.g. — (all-null in sample) |
injury_status | stringnullable | — | — e.g. — (all-null in sample) |
jersey | stringnullable | — | — e.g. — (all-null in sample) |
last_name | string | — | — e.g. — (all-null in sample) |
nationality | stringnullable | — | — e.g. — (all-null in sample) |
photo_url | stringnullable | — | URL to player headshot image e.g. — (all-null in sample) |
position_category | stringnullable | — | — e.g. — (all-null in sample) |
primary_position | string | — | — e.g. — (all-null in sample) |
rookie_year | integernullable | — | — e.g. — (all-null in sample) |
roster_status | stringnullable | — | Canonical roster status, shared across leagues. NHL source granularity is coarse: "active" (on a current api-web team roster), "free_agent" (no team), "inactive" (not currently rostered); injured_reserve where derivable. The "on a team now" set is {active, injured_reserve}. |
shoots | stringnullable | — | — e.g. — (all-null in sample) |
weight | integernullable | — | Weight in pounds e.g. — (all-null in sample) |
youth_league | stringnullable | — | — e.g. — (all-null in sample) |
youth_team | stringnullable | — | — e.g. — (all-null in sample) |