Nhl Stats Scraper avatar

Nhl Stats Scraper

Pricing

from $2.99 / 1,000 results

Go to Apify Store
Nhl Stats Scraper

Nhl Stats Scraper

NHL Stats Scraper is a Python tool designed to extract real-time and historical National Hockey League data, including player statistics, game box scores, team standings, and schedules. It exports structured hockey data into clean CSV or JSON formats for sports analytics and fantasy league modeling.

Pricing

from $2.99 / 1,000 results

Rating

0.0

(0)

Developer

real-estate-api

real-estate-api

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

NHL Stats Scraper: NHL Standings, Schedules, and Players

NHL Stats Scraper

Collect structured NHL standings, weekly schedules, and current team rosters. Export team rankings, points, goal statistics, game times, scores, player positions, and other available fields into a dataset.

No login or access key is required for the supported public data sources. Export results as JSON, CSV, or Excel, and schedule runs to keep your files up to date.

The actor relies on publicly accessible NHL data resources. These resources are not a documented, stable product interface, so fields and response formats may change.

Use Cases

  • Standings updates: Collect conference and division rankings, points, wins, and goal statistics for a selected date.
  • Schedule tracking: Retrieve games for a week and continue through subsequent weeks until the configured item limit is reached.
  • Roster checks: Export current forwards, defensemen, and goalies for a selected team.
  • Spreadsheet exports: Move structured NHL data into Excel or other compatible data analysis tools.
  • Scheduled monitoring: Refresh standings, schedules, or rosters and retain source references and collection timestamps.

Input

ParameterTypeDefaultDescription
modestringstandingsOperation: standings, schedule, or roster.
datestring2026-01-15Date in YYYY-MM-DD format for standings and schedule modes.
teamstringTORTeam abbreviation for roster mode.
maxItemsinteger100Maximum number of saved records, from 1 to 1,000.
timeoutSecsinteger300Overall run time limit in seconds.
requestTimeoutSecsinteger30Timeout for an individual request, in seconds.

Example Inputs

Standings

{
"mode": "standings",
"date": "2026-01-15",
"team": "TOR",
"maxItems": 100,
"timeoutSecs": 300,
"requestTimeoutSecs": 30
}

Current Team Roster

{
"mode": "roster",
"team": "TOR",
"maxItems": 100
}

Weekly Schedule

{
"mode": "schedule",
"date": "2026-10-10",
"maxItems": 100
}

What Data Does This Actor Extract?

The output structure depends on the selected mode:

  • Standings: One record per team, including conference and division positions, points, wins, losses, and goal statistics.
  • Schedule: One record per game, including participating teams, scores, game state, start time, and venue when available.
  • Roster: One record per player, including player ID, name, position, jersey number, and headshot URL when available.

If the date or mode is invalid, or the source returns an unusable response, the actor records an error row rather than necessarily failing the entire run.

Example standings record:

{
"conferenceAbbrev": "W",
"conferenceName": "Western",
"conferenceSequence": 1,
"date": "2026-01-15",
"divisionAbbrev": "C",
"divisionName": "Central",
"divisionSequence": 1,
"gameTypeId": 2,
"gamesPlayed": 45,
"goalDifferential": 79,
"goalDifferentialPctg": 1.755556,
"goalAgainst": 103,
"goalFor": 182,
"goalsForPctg": 4.044444,
"teamAbbrev": "COL",
"teamNameText": "Colorado Avalanche",
"points": 74,
"wins": 33,
"scrapedAt": "2026-10-12T00:00:00+00:00"
}

Output Fields

The fields below cover the supported standings, schedule, roster, and error records. Fields depend on the selected mode and the data returned by the source.

FieldTypeDescription
conferenceAbbrevstringConference abbreviation.
conferenceHomeSequenceintegerConference position based on home performance.
conferenceL10SequenceintegerConference position based on the last 10 games.
conferenceNamestringConference name.
conferenceRoadSequenceintegerConference position based on road performance.
conferenceSequenceintegerOverall conference position.
datestringStandings or game date.
divisionAbbrevstringDivision abbreviation.
divisionHomeSequenceintegerDivision position based on home performance.
divisionL10SequenceintegerDivision position based on the last 10 games.
divisionNamestringDivision name.
divisionRoadSequenceintegerDivision position based on road performance.
divisionSequenceintegerOverall division position.
gameTypeIdintegerGame type identifier.
gamesPlayedintegerGames played.
goalDifferentialintegerGoals scored minus goals conceded.
goalDifferentialPctgnumberGoal differential per game, as reported by the source.
goalAgainstintegerGoals conceded.
goalForintegerGoals scored.
goalsForPctgnumberGoals scored per game, as reported by the source.
homeGamesPlayedintegerHome games played.
homeGoalDifferentialintegerHome goal differential.
homeGoalsAgainstintegerHome goals conceded.
homeGoalsForintegerHome goals scored.
homeLossesintegerHome losses.
teamAbbrevstringTeam abbreviation.
teamNameTextstringTeam name.
pointsintegerStandings points.
winsintegerWins.
lossesintegerLosses.
otLossesintegerOvertime losses.
gameIdintegerGame identifier.
gameDatestringScheduled game date.
startTimeUTCstringGame start time in UTC.
gameStatestringGame state code.
awayTeamAbbrevstringAway team abbreviation.
homeTeamAbbrevstringHome team abbreviation.
awayScoreintegerAway team score, when available.
homeScoreintegerHome team score, when available.
venueNamestringArena or venue name, when available.
playerIdintegerPlayer identifier.
firstNameTextstringPlayer's first name.
lastNameTextstringPlayer's last name.
positionCodestringPlayer position code.
sweaterNumberintegerJersey number.
teamstringRoster team abbreviation.
headshotUrlstringPlayer headshot URL, when available.
scrapedAtstringUTC timestamp when the row was saved.
errorstringExplanation of an input or processing error.
inputobjectInput details attached to an error record.

How It Works

  1. The actor reads the selected mode, date, and team abbreviation.
  2. It retrieves the corresponding standings, schedule, or current roster data from the public NHL data source.
  3. Requests are spaced at least one second apart. HTTP 429 responses, server errors, and timeouts are retried up to three times, with delays of 2, 4, and 8 seconds or longer when a Retry-After value requires it.
  4. In schedule mode, the actor follows the next available start date to retrieve additional weeks when the item limit exceeds the first week's results.
  5. Duplicate team records, game IDs, and player IDs are skipped.
  6. The actor stops at maxItems or the overall timeout and saves the collected records.

Limits and Data Use

  • Request pacing: Requests are spaced at least one second apart.
  • Retries: Temporary rate limits, server errors, and request timeouts are retried within the configured behavior.
  • Maximum records: Up to 1,000 records per run.
  • Standings: A single response normally contains the full standings table. The item limit can reduce the number of saved rows.
  • Schedule: Additional weeks are retrieved when needed, subject to the item limit and available schedule data.
  • Roster: The actor retrieves the current roster for the selected team.
  • Source changes: The source data structure may change without notice because it is not a documented, stable product interface.

NHL game data, team names, logos, and other marks may be subject to copyright or trademark protections. Use exported data responsibly, respect applicable terms and licensing requirements, and do not present NHL-owned material as your own.

FAQ

Why did I receive an error row instead of standings?

The date may not use YYYY-MM-DD format, the selected mode may be invalid, or the source may have returned an unusable response or an HTTP error after retries.

How many teams are included in standings?

A standings response normally contains the full table, typically 32 teams. The maxItems setting limits the number of records saved.

Can schedule mode retrieve more than one week?

Yes. When maxItems exceeds the number of games available in the initial week, the actor follows the next available start date until it reaches the cap or encounters a stopping condition.

Can I schedule regular exports?

Yes. Schedule the actor in Apify to collect updated standings, upcoming games, or current rosters at your preferred interval.

Trademark Notice

NHL and related names, logos, and trademarks belong to their respective owners. Their use in this documentation is solely to identify the source of the data and does not imply affiliation, sponsorship, endorsement, or partnership.

Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, sponsored by, or otherwise officially associated with the NHL or its owners.

Collecting information that is already public is generally legal. Scraping is not the same thing as hacking, and there is no single law that bans it. The limits are the usual ones: do not break into accounts, do not take private or confidential data, and be careful with personal data and copyrighted works. A site's terms can also restrict how you access it. Facts such as a public name, price, or rating are not the same thing as republishing someone's article or photo.

This actor collects information from public pages. It does not log in and it does not bypass access controls.

For a longer explanation, see Apify's article Is web scraping legal?.