NHL API: Get player stats
Looks up an NHL player by name, link or ID and returns the profile with regular-season stats for a season and career totals.
Unofficial. Not affiliated with or endorsed by NHL.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Player, required
player Player name, NHL player link, or player ID, e.g. Connor McDavid.
Connor McDavid
- Season optional
season Starting year of the season, e.g. 2025 for 2025-26. Omit for latest season with recorded games.
2025
Whole number.
Input as JSON
{ "player": "Connor McDavid", "season": 2025}Output
{ "age": 29, "name": "Connor McDavid", "team": "Edmonton Oilers", "season": "2025-26", "country": "Canada", "position": "Center", "player_id": 8478402, "player_link": "https://www.nhl.com/player/connor-mcdavid-8478402" , "career_stats": { "wins": null, "goals": 417, "losses": null, "points": 1251, "assists": 834, "shutouts": null, "plus_minus": 204, "games_played": 804, "penalty_minutes": 332, "save_percentage": null, "goals_against_average": null }, "season_stats": { "wins": null, "goals": 48, "losses": null, "points": 138, "assists": 90, "shutouts": null, "plus_minus": 17, "games_played": 82, "penalty_minutes": 44, "save_percentage": null, "goals_against_average": null }, "jersey_number": 97, "shoots_or_catches": "Left", "headshot_image_link": "https://assets.nhle.com/mugs/nhl/20262027/EDM/8478402.png" }Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"nhl.com/get_player_stats","input":{"player":"Connor McDavid","season":2025}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "nhl.com/get_player_stats" , "input": { "player": "Connor McDavid", "season": 2025 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "nhl.com/get_player_stats" , "input": { "player": "Connor McDavid", "season": 2025 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run nhl.com/get_player_stats# with {"player":"Connor McDavid","season":2025}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "player" ], "properties": { "player": { "type": "string", "description": "Player name, NHL player link, or player ID, e.g. Connor McDavid." }, "season": { "type": "integer", "description": "Starting year of the season, e.g. 2025 for 2025-26. Omit for latest season with recorded games." } }}Output schema
{ "type": "object", "required": [ "name", "team", "position", "shoots_or_catches", "jersey_number", "age", "country", "headshot_image_link", "player_link", "player_id", "season", "season_stats", "career_stats" ], "properties": { "age": { "type": [ "integer", "null" ], "description": "Age in years today." }, "name": { "type": "string", "description": "Player name." }, "team": { "type": [ "string", "null" ], "description": "Current NHL team, or most recent NHL team if no longer active." }, "season": { "type": "string", "description": "Selected NHL season, such as 2025-26." }, "country": { "type": [ "string", "null" ], "description": "Country of birth." }, "position": { "type": [ "string", "null" ], "description": "Playing position." }, "player_id": { "type": "integer", "description": "NHL player ID.", "x-fous-developer": true }, "player_link": { "type": "string", "description": "NHL player page." }, "career_stats": { "type": "object", "required": [ "games_played", "goals", "assists", "points", "plus_minus", "penalty_minutes", "wins", "losses", "save_percentage", "goals_against_average", "shutouts" ], "properties": { "wins": { "type": [ "integer", "null" ], "description": "NHL regular-season wins." }, "goals": { "type": [ "integer", "null" ], "description": "NHL regular-season goals." }, "losses": { "type": [ "integer", "null" ], "description": "NHL regular-season losses." }, "points": { "type": [ "integer", "null" ], "description": "NHL regular-season points." }, "assists": { "type": [ "integer", "null" ], "description": "NHL regular-season assists." }, "shutouts": { "type": [ "integer", "null" ], "description": "NHL regular-season shutouts." }, "plus_minus": { "type": [ "integer", "null" ], "description": "NHL regular-season plus minus." }, "games_played": { "type": [ "integer", "null" ], "description": "NHL regular-season games played." }, "penalty_minutes": { "type": [ "integer", "null" ], "description": "NHL regular-season penalty minutes." }, "save_percentage": { "type": [ "number", "null" ], "description": "NHL regular-season save percentage." }, "goals_against_average": { "type": [ "number", "null" ], "description": "NHL regular-season goals against average." } }, "description": "NHL regular-season career totals." }, "season_stats": { "type": "object", "required": [ "games_played", "goals", "assists", "points", "plus_minus", "penalty_minutes", "wins", "losses", "save_percentage", "goals_against_average", "shutouts" ], "properties": { "wins": { "type": [ "integer", "null" ], "description": "NHL regular-season wins." }, "goals": { "type": [ "integer", "null" ], "description": "NHL regular-season goals." }, "losses": { "type": [ "integer", "null" ], "description": "NHL regular-season losses." }, "points": { "type": [ "integer", "null" ], "description": "NHL regular-season points." }, "assists": { "type": [ "integer", "null" ], "description": "NHL regular-season assists." }, "shutouts": { "type": [ "integer", "null" ], "description": "NHL regular-season shutouts." }, "plus_minus": { "type": [ "integer", "null" ], "description": "NHL regular-season plus minus." }, "games_played": { "type": [ "integer", "null" ], "description": "NHL regular-season games played." }, "penalty_minutes": { "type": [ "integer", "null" ], "description": "NHL regular-season penalty minutes." }, "save_percentage": { "type": [ "number", "null" ], "description": "NHL regular-season save percentage." }, "goals_against_average": { "type": [ "number", "null" ], "description": "NHL regular-season goals against average." } }, "description": "NHL regular-season statistics across all teams in this season." }, "jersey_number": { "type": [ "integer", "null" ], "description": "Jersey number." }, "shoots_or_catches": { "type": [ "string", "null" ], "description": "Shoots or catches left or right." }, "headshot_image_link": { "type": [ "string", "null" ], "description": "Player headshot image link." } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
nhl.com/get_player_stats- Returns
- name, team, position, age, country, season_stats, career_stats
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method nhl.com/get_player_stats with the inputs above.
Ask your agent
- How many goals did Connor McDavid score in the 2024-25 season, and what are his career totals?
- Show me Nathan MacKinnon's regular season stats for 2023-24 along with his career numbers on nhl.com.
- What team does Auston Matthews play for, what position is he, and how old is he?
- Pull up Cale Makar's profile with his season stats for 2025 and career totals.
- Get the player profile for player ID 8478402 including country of birth and points for the 2022 season.
See more
All NHL methodsLists NHL games for a date, optionally limited to one team, with start times in the chosen time zone, scores, status, and TV networks.
nhl.com/get_scoresGets NHL standings as of a date, ordered by conference, division and division rank, with each team's official homepage.
nhl.com/get_standingsGets a named NFL player's season and career stats, with profile details. Active players are preferred when names match.
nfl.com/get_player_statsGets an MLB player's profile and regular-season hitting and pitching statistics for one season and for his career. Without a season it uses the current season, or the player's latest MLB season if he has no stats this year.
mlb.com/get_player_statsLooks up a Yahoo Sports player by name and returns the player's regular-season statistics for a season, alongside career totals. Each stat includes season and career values.
sports.yahoo.com/get_player_statsLooks up an ESPN player by name and returns season and career statistics. Use a league to tell apart players with the same name, and a season year or label to pick a past season.
espn.com/get_player_statsLooks up a Premier League player by name and returns the profile and either career totals or the stats for a chosen season. If names clash, a current Premier League player is preferred.
premierleague.com/get_player_statsLooks up an NBA player by name, including retired players, and returns the bio and regular-season per-game averages for the reported season and career.
nba.com/get_player