Skip to main content

NHL API. For standings, team stats, outcomes, player information. Contains each individual API endpoint as well as convience methods for easy data loading in Pandas or any ML applications.

Project description

PyPI version nhl-api-py workflow

NHL-API-PY

This is being updated with the new, also undocumented, NHL API.

More endpoints will be flushed out and completed as they are discovered. If you find any, please submit a PR.

About

NHL-api-py is a Python package that provides a simple wrapper around the NHL API, allowing you to easily access and retrieve NHL data in your Python applications.

Note: This is very early, I created this to help me with some machine learning projects around the NHL and the NHL data sets. Special thanks to https://github.com/erunion/sport-api-specifications/tree/master/nhl and https://gitlab.com/dword4/nhlapi/-/blob/master/stats-api.md.

Usage

from nhlpy import NHLClient

client = NHLClient()
# OR
client = NHLClient(verbose=True) # a tad more logging such as the URL being called

Stats Endpoints (In development)

client.stats.club_stats_season(team_abbr="BUF") # kinda weird endpoint.

client.stats.player_career_stats(player_id="8478402")

# Team Summary Stats.
# These have lots of available parameters.  You can also tap into the apache cayenne expressions to build custom
# queries, if you have that knowledge.
client.stats.team_summary(start_season="20202021", end_season="20212022", game_type_id=2)
client.stats.team_summary(start_season="20202021", end_season="20212022")

###
# Skater Summary Stats.
# Queries for skaters for year ranges, filterable down by franchise.
client.stats.skater_stats_summary(start_season="20232024", end_season="20232024")
client.stats.skater_stats_summary(franchise_id=10, start_season="20232024", end_season="20232024")

 # skater_stats_summary_by_expression is more advanced method.  It allows for more direct manipulation of the query and
 # the cayenne expression clauses.
 sort_expr = [
                {"property": "points", "direction": "DESC"},
                {"property": "gamesPlayed", "direction": "ASC"},
                {"property": "playerId", "direction": "ASC"},
            ]
expr = "gameTypeId=2 and seasonId<=20232024 and seasonId>=20222023"
client.stats.skater_stats_summary_by_expression(default_cayenne_exp=expr, sort_expr=sort_expr)

###

Schedule Endpoints

client.schedule.get_schedule(date="2021-01-13")
client.schedule.get_schedule()

client.schedule.get_schedule_by_team_by_month(team_abbr="BUF")
client.schedule.get_schedule_by_team_by_month(team_abbr="BUF", month="2021-01")

client.schedule.get_schedule_by_team_by_week(team_abbr="BUF")
client.schedule.get_schedule_by_team_by_week(team_abbr="BUF", date="2024-01-01")

client.schedule.get_season_schedule(team_abbr="BUF", season="20212022")

client.schedule.schedule_calendar(date="2023-11-23")

Standings Endpoints

client.standings.get_standings()
client.standings.get_standings(date="2021-01-13")
client.standings.get_standings(season="202222023")

# standings manifest.  This returns a ton of information for every season ever it seems like
# This calls the API for this info, I also cache this in /data/seasonal_information_manifest.json
# for less API calls since this only changes yearly.
client.standings.season_standing_manifest()

Teams Endpoints

client.teams.teams_info() # returns id + abbrevation + name of all teams

client.teams.team_stats_summary(lang="en") # I honestly dont know. This is missing teams and has teams long abandoned.

Game Center

client.game_center.boxscore(game_id="2023020280")

client.game_center.play_by_play(game_id="2023020280")

client.game_center.landing(game_id="2023020280")

client.game_center.score_now()

Misc Endpoints

client.misc.glossary()

client.misc.config()

client.misc.countries()

client.misc.season_specific_rules_and_info()

client.misc.draft_year_and_rounds()

Insomnia Rest Client Export

Insomnia Rest Client is a great tool for testing

nhl_api-{ver}.json in the root folder is an export of the endpoints I have been working through using the Insomnia Rest Client. You can import this directly into the client and use it to test the endpoints. I will be updating this as I go


Developers

  1. Install Poetry

curl -sSL https://install.python-poetry.org | python3 -

or using pipx

pipx install poetry

  1. poetry install --with dev

  2. poetry shell

$ poetry shell

# You can then run the following
$ pytest
$ ruff .
$ black .

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nhl_api_py-2.2.6.tar.gz (17.1 kB view details)

Uploaded Source

Built Distribution

nhl_api_py-2.2.6-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

File details

Details for the file nhl_api_py-2.2.6.tar.gz.

File metadata

  • Download URL: nhl_api_py-2.2.6.tar.gz
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.1 Darwin/23.2.0

File hashes

Hashes for nhl_api_py-2.2.6.tar.gz
Algorithm Hash digest
SHA256 497fe1c6f3c97df3275735e6dcebf82161d94ce6e50e03cda1ac36bba2cccc0f
MD5 9d6ddc1e6b7aa67d1b8ea68efb69133d
BLAKE2b-256 1fcf62864425a088654aa1e323c10bc41b1ce13d2acbb8e671d7a2ea45d1e7f6

See more details on using hashes here.

File details

Details for the file nhl_api_py-2.2.6-py3-none-any.whl.

File metadata

  • Download URL: nhl_api_py-2.2.6-py3-none-any.whl
  • Upload date:
  • Size: 19.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.1 CPython/3.12.1 Darwin/23.2.0

File hashes

Hashes for nhl_api_py-2.2.6-py3-none-any.whl
Algorithm Hash digest
SHA256 1e138ea25eeff349c15f239140ecbd238df46daa839d9424159b459a4aa029c8
MD5 749c503be206b0ced6a98f6d2e032e2a
BLAKE2b-256 69986aa9b10cb7597d0b834adde994ea218ca55b9e8bdf29eef49662d48322ec

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page