NHL Stats Scraper avatar

NHL Stats Scraper

Pricing

from $25.88 / 1,000 results

Go to Apify Store
NHL Stats Scraper

NHL Stats Scraper

Scrapes NHL standings, schedules, team stats, rosters, and player pages from the official NHL data feed. Returns each record as a flat row with raw feed fields. Export to CSV, JSON, Excel, or XML.

Pricing

from $25.88 / 1,000 results

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

0

Monthly active users

14 days ago

Last modified

Share

ParseForge

NHL Stats Scraper

Scrape NHL stats from the official data feed: standings, schedules, team stats, rosters, and player pages. Every record comes back as a flat row with the raw feed fields. No API key or login. Export to CSV, JSON, Excel, or XML.

The NHL's public stats pages are built for browsers, not for analysis. This Actor reads the official NHL data feed directly and returns standings, schedules, team stats, rosters, and player pages in one fixed schema. Filter by team, season, season type, or player ID, and get every record as a flat row ready for your spreadsheet or database.

Who uses itWhat they scrape NHL for
Sports analystsPull current league standings to track playoff races and points pace.
Fantasy hockey playersGrab player pages and team rosters to evaluate matchups and injuries.
Sportsbook operatorsCollect team stats and schedules to feed pre-game models.
Hockey bloggersExport rosters and player data for season previews and recaps.

What it does

This Actor collects NHL standings, schedules, team stats, rosters, and player pages from the official NHL data feed and returns each record as a flat row.

  • ๐Ÿ’ Five data modes: standings, schedule, teamStats, player, and roster, each mapped to the official NHL feed.
  • ๐Ÿ“… Schedule by date: pass any YYYY-MM-DD date and get that day's games, with optional season type filter.
  • ๐Ÿ‘ฅ Batch lookups: send up to 32 team abbreviations or 100 player IDs in one run.
  • ๐Ÿ”ข Season control: specify an eight-digit season code like 20242025 for team stats.
  • ๐Ÿ“ฆ Flat output: every record is a flat row with the raw feed fields, ready for CSV, JSON, Excel, or XML.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with NHL data

๐Ÿ“Š Track playoff races.

A sports analyst runs standings mode daily to see which teams are gaining or losing ground in the wild card race.

๐Ÿ’ Scout fantasy matchups.

A fantasy hockey player pulls player pages for a list of IDs to check recent performance before setting a lineup.

๐Ÿ“… Build a schedule database.

A developer runs schedule mode for every date in a season and stores the flat rows in a database for a stats site.

๐Ÿ‘ฅ Audit team rosters.

A blogger sends all 32 team abbreviations to roster mode and exports the current rosters for a season preview.

Why choose this scraper

What you get
Official dataReads the same NHL feed that powers the league's own site, so numbers match the box score.
No API keyNo registration, no OAuth, no rate-limit headaches. run it.
Batch friendlyPull up to 32 teams or 100 players in a single run.
Flexible outputExport to CSV, JSON, Excel, or XML, or push straight to Apify storage.

How it compares

No other Store actor targets NHL the same way, so the honest comparison is with the alternatives teams actually weigh.

NHL Stats ScraperBuild it in-houseBy hand
SetupRun it now, zero configDays of engineeringNone, but hours per pull
When NHL changesMaintained for youYou fix itYou re-learn the page
Proxies, retries, anti-botBuilt inYour problemBrowser only
OutputFixed JSON schema, CSV/Excel exportWhatever you buildCopy-paste
CostPay per resultEngineering timeAnalyst hours

Configure the run

Drive the Actor from mode, date, team abbreviation, season, player ID, and maxItems, and filters run as each record is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

{
"mode": "standings",
"maxItems": 10
}

A larger pull:

{
"mode": "standings",
"maxItems": 200
}

Pricing

Pay-per-result: $0.0345 per result collected. You pay only for the results written to your dataset.

Results collectedApproximate cost
100 results$3.45
1,000 results$34.50
10,000 results$345.00

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the NHL Stats Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to NHL through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/nhl-stats-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results?

Check your mode and filters. For teamStats or roster, make sure you passed a valid three-letter team abbreviation. For player, verify the numeric player ID. Also check maxItems is at least 1.

Why is my schedule empty for a date?

The NHL may not have games on that date, or the date format is wrong. Use YYYY-MM-DD, like 2025-01-15. Also check seasonType if you set one.

Why did my batch lookup return fewer records than expected?

Batch inputs are capped at 32 team abbreviations and 100 player IDs. If you sent more, only the first valid ones are used. Also, invalid abbreviations or IDs are skipped.

Why is my teamStats run using the wrong season?

If you leave season empty, the Actor uses the current season. To specify a season, pass an eight-digit code like 20242025.

Why did my player run return an error?

The player ID must be numeric and valid. Copy the ID from the NHL site URL, like 8478402 for Connor McDavid. Do not include letters or dashes.

FAQ

QuestionAnswer
What data does this Actor scrape?It scrapes the official NHL data feed for standings, schedules, team stats, rosters, and player pages. Each mode returns a flat row per record with the raw feed fields.
Do I need an API key or login?No. The Actor reads the public NHL feed directly, so there is no registration, OAuth, or rate limit to manage.
How do I get a specific team's stats?Set mode to teamStats and pass the three-letter team abbreviation, like TOR for Toronto or NYR for the Rangers. You can also send a batch of abbreviations.
How do I get a player's page?Set mode to player and pass the numeric NHL player ID, like 8478402 for Connor McDavid. You can send up to 100 IDs in one run.
What is the season code format?Use an eight-digit code like 20242025 for the 2024-25 season. This applies to teamStats mode.
Can I filter the schedule by season type?Yes. In schedule mode, set seasonType to R for regular season, PR for preseason, or PO for postseason. Leave it empty for any.
What is the maximum number of records?You can set maxItems up to 1,000,000 records per run. The default is 10.
What output formats are supported?The Actor returns data as a dataset you can export to CSV, JSON, Excel, or XML, or access via the Apify API.
Does this Actor support batch lookups?Yes. Use teamAbbrevs for up to 32 team abbreviations and playerIds for up to 100 player IDs. Batch inputs take precedence over single values.
Is the data live?The Actor reads the NHL feed at run time, so you get the latest published data for the selected mode and filters.

Browse the full ParseForge collection for more scrapers.

๐Ÿ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

โš ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by National Hockey League. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.