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

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.

Example Notebook:

An example Collab notebook can be found here at coreyjs/nhl-api-py-examples.

Installation

You can install NHL-py-api using pip:

pip install nhl-api-py

Usage

from nhlpy import NHLClient

client = NHLClient()

Available methods:

client.teams.all()
client.teams.get_by_id(id=1, roster=False)
client.teams.get_team_next_game(id=1)
client.teams.get_team_previous_game(id=1)
client.teams.get_team_stats(id=1)

# Standings
client.standings.get_standings(season="20222023", detailed_record=False)
client.standings.get_standing_types()

# Player Stats
client.players.get_player_stats(person_id=8477949, season="20222023", stat_type="statsSingleSeason")
client.players.get_player_stats(person_id=8477949, season="20222023", stat_type="goalsByGameSituation")
client.players.get_player_stats(person_id=8477949, season="20222023", stat_type="yearByYear")

# Schedule
client.schedule.get_schedule(season="20222023")

# Get Todays Games
client.schedule.get_schedule(season="20222023")
client.schedule.get_schedule(date="2021-10-01")
client.schedule.get_schedule(season="20222023", team_id=7)

# Games
client.games.get_game_types()
client.games.get_game_play_types()
client.games.get_game_status_codes()
client.games.get_game_live_feed(game_id=2020020001)
client.games.get_game_live_feed_diff_after_timestamp(game_id=2020020001, timestamp=1633070400)
client.games.get_game_boxscore(game_id=2020020001)
client.games.get_game_linescore(game_id=2020020001)
client.games.get_game_content(game_id=2020020001)

# Players
client.players.get_player(person_id=8477949)
client.players.get_player_stats(person_id=8477949, season="20222023", stat_type="statsSingleSeason")
client.players.get_player_stat_types()

# Helpers - Common use cases, data extraction, etc.  For easier dataframe initialization.  
#  These return data that has been parsed
# out, with some additional calculations as well.
standings_list = nhl_client.helpers.league_standings(season="20222023")
standings_df = pd.DataFrame(standings_list)
standings_df.head(20)

game_results = nhl_client.helpers.get_all_game_results(season="20222023", detailed_game_data=True, game_type="R", team_ids=[7])

As mentioned at the top, I created a notebook to go over some of the available methods in more detail. Below is an export md of that notebook, with out cell executions.

pip install nhl-api-py
from nhlpy import NHLClient

Getting Started - Create the NHLClient

client = NHLClient()

Team APIs

teams = client.teams.all()
teams
buffalo = client.teams.get_by_id(id=7)
buffalo
next_buffalo_game = client.teams.get_team_next_game(id=7)
next_buffalo_game
prev_buffalo_game = client.teams.get_team_previous_game(id=7)
prev_buffalo_game
buffalo_with_stats = client.teams.get_team_with_stats(id=7)
buffalo_with_stats
buffalo_roster = client.teams.get_team_roster(id=7)
buffalo_roster
buffalo_full_team_stats = client.teams.get_team_stats(id=7)
buffalo_full_team_stats

Standing APIs

# These can be used in conjunction with get_standings_by_standing_type
all_standing_types = client.standings.get_standing_types()
all_standing_types
# standings by season
all_standings = client.standings.get_standings(season="20222023", detailed_record=False)
all_standings
# same as above but with more detailed information
# standings by season
all_standings = client.standings.get_standings(season="20222023", detailed_record=True)
all_standings
# Get standings by type, types can be found via get_standings_by_type, or in the docstring
post_season = client.standings.get_standings_by_standing_type(standing_type="regularSeason")
post_season

Players

# APIs to access player information.  Requires person_id, found from `teams.get_team_roster()`
jj = client.players.get_player(person_id=8482175)
jj
jj_stats = client.players.get_player_stats(person_id=8482175, season="20222023", stat_type="statsSingleSeason")
jj_stats
# Differnt stat types you can access
types = client.players.get_player_stat_types()
types


Developers

poetry install --with dev

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-0.4.13.tar.gz (10.3 kB view details)

Uploaded Source

Built Distribution

nhl_api_py-0.4.13-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: nhl_api_py-0.4.13.tar.gz
  • Upload date:
  • Size: 10.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.10.6 Linux/5.10.16.3-microsoft-standard-WSL2

File hashes

Hashes for nhl_api_py-0.4.13.tar.gz
Algorithm Hash digest
SHA256 b36d6990ce3a89c5d655559b85d3d2221a0deb1c88c8b0c025e35ef26996053d
MD5 fdf7f5c2ec4f07e3064470fe03e0c6a0
BLAKE2b-256 22a9294904eb82ca9c572a5c60c489f057463f12d2ab7c0332e4706d94904d40

See more details on using hashes here.

File details

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

File metadata

  • Download URL: nhl_api_py-0.4.13-py3-none-any.whl
  • Upload date:
  • Size: 11.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.10.6 Linux/5.10.16.3-microsoft-standard-WSL2

File hashes

Hashes for nhl_api_py-0.4.13-py3-none-any.whl
Algorithm Hash digest
SHA256 352f50637e8f8338b62fd0ad90bb1b44037b0101cfed85e1b730b0e2ff45725b
MD5 f4b7f5e355884964b98b1c1350844449
BLAKE2b-256 fcdcf36994cf2ce9b0555f1d472024d510b06f0bdf80247018951732ebecdc5c

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