NHL API: Get standings
Gets NHL standings as of a date, ordered by conference, division and division rank, with each team's official homepage.
Unofficial. Not affiliated with or endorsed by NHL.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Date optional
date Standings date in YYYY-MM-DD; defaults to today. Example: 2025-12-01.
2025-12-01
Date.
Input as JSON
{ "date": "2025-12-01"}Output
{ "date": "2025-12-01", "teams": [ { "team": "Tampa Bay Lightning", "wins": 16, "losses": 7, "points": 34, "division": "Atlantic", "page_url": "https://www.nhl.com/lightning" , "goals_for": 84, "conference": "Eastern", "league_rank": 3, "games_played": 25, "division_rank": 1, "goals_against": 65, "current_streak": "Won 7", "conference_rank": 1, "goal_difference": 19, "overtime_losses": 2, "points_percentage": 0.68 }, { "team": "Boston Bruins", "wins": 15, "losses": 12, "points": 30, "division": "Atlantic", "page_url": "https://www.nhl.com/bruins" , "goals_for": 83, "conference": "Eastern", "league_rank": 13, "games_played": 27, "division_rank": 2, "goals_against": 86, "current_streak": "Won 1", "conference_rank": 7, "goal_difference": -3, "overtime_losses": 0, "points_percentage": 0.555556 }, { "team": "Montréal Canadiens", "wins": 13, "losses": 8, "points": 29, "division": "Atlantic", "page_url": "https://www.nhl.com/canadiens" , "goals_for": 82, "conference": "Eastern", "league_rank": 14, "games_played": 24, "division_rank": 3, "goals_against": 87, "current_streak": "Lost 1", "conference_rank": 8, "goal_difference": -5, "overtime_losses": 3, "points_percentage": 0.604167 } ], "message": null}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"nhl.com/get_standings","input":{"date":"2025-12-01"}}' # 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_standings" , "input": { "date": "2025-12-01" }})# 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_standings" , "input": { "date": "2025-12-01" } }), 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_standings# with {"date":"2025-12-01"}"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", "properties": { "date": { "type": "string", "format": "date", "description": "Standings date in YYYY-MM-DD; defaults to today. Example: 2025-12-01." } }}Output schema
{ "type": "object", "required": [ "date", "teams", "message" ], "properties": { "date": { "type": "string", "format": "date", "description": "Requested standings date." }, "teams": { "type": "array", "items": { "type": "object", "required": [ "conference", "division", "division_rank", "conference_rank", "league_rank", "team", "games_played", "wins", "losses", "overtime_losses", "points", "points_percentage", "goals_for", "goals_against", "goal_difference", "current_streak", "page_url" ], "properties": { "team": { "type": "string", "description": "Team name." }, "wins": { "type": "integer", "description": "Wins." }, "losses": { "type": "integer", "description": "Regulation losses." }, "points": { "type": "integer", "description": "Standings points." }, "division": { "type": [ "string", "null" ], "description": "Division name." }, "page_url": { "type": "string", "format": "uri", "description": "Official team page, or standings page when no team page is listed." }, "goals_for": { "type": "integer", "description": "Goals scored." }, "conference": { "type": [ "string", "null" ], "description": "Conference name." }, "league_rank": { "type": [ "integer", "null" ], "description": "Rank in league." }, "games_played": { "type": "integer", "description": "Games played." }, "division_rank": { "type": [ "integer", "null" ], "description": "Rank in division." }, "goals_against": { "type": "integer", "description": "Goals allowed." }, "current_streak": { "type": [ "string", "null" ], "description": "Current winning or losing streak in words." }, "conference_rank": { "type": [ "integer", "null" ], "description": "Rank in conference." }, "goal_difference": { "type": "integer", "description": "Goals scored minus goals allowed." }, "overtime_losses": { "type": "integer", "description": "Overtime losses." }, "points_percentage": { "type": [ "number", "null" ], "description": "Share of possible standings points, from 0 to 1." } }, "additionalProperties": false }, "description": "Teams ordered by conference, division, and division rank." }, "message": { "type": [ "string", "null" ], "description": "Explains when there are no standings for the date." } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
nhl.com/get_standings- Returns
- conference, division, ranks, record, points, goals, streak and team page for each team
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_standings with the inputs above.
Ask your agent
- What are the NHL standings as of December 1, 2025, broken down by conference and division?
- Show me the league table for 2025-11-15 with each team's points, goals and current streak.
- Can you pull up the NHL standings from nhl.com for March 3, 2025?
- I need the division rankings and team homepages for the NHL standings on 2025-01-20.
- Which teams led the Western Conference in points on 2024-12-10, and what were their records?
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_scoresLooks up an NHL player by name, link or ID and returns the profile with regular-season stats for a season and career totals.
nhl.com/get_player_statsReturns NBA regular-season standings for a season, with Eastern and Western Conference teams in rank order. Defaults to the season shown on the NBA standings page.
nba.com/get_standingsGets NFL regular-season standings by conference and division for a season, with clinch status when shown.
nfl.com/get_standingsReturns Yahoo Sports team standings for a league and season, grouped by division or conference.
sports.yahoo.com/get_standingsReturns MLB regular-season division standings for a season: records, win percentage, games back, streak, last 10 games and wild-card games back. Defaults to the current year.
mlb.com/get_standingsGets NFL scores and scheduled games for the week that contains a date. You can keep only one team's games. Kickoff times are in US Eastern time unless you choose another time zone.
nfl.com/get_scoresGets NCAA college sports games for a date (or, for football, the week containing it) with scores, rankings, live status, TV networks and NCAA game links, optionally for one conference.
ncaa.com/get_scores