Fetching NHL Play by Play v2

Finally the 2017-2018 NHL hockey season has begun! But wait… **PANIC** my little thingy nhlplaybyplay-node for fetching games and play-by-play does not work anymore… Hmmm, after some research it looked like I needed to do some updates and fixes in order to make it work again… Instead I decided to create another Node.js app nhlplaybyplay2-node.

The following is a mirrored post from the README.md on the Github repo -> https://github.com/sfrechette/nhlplaybyplay2-node


Fetch and Convert NHL Play by Play game data v2

Purpose: Application built using Node.js that provides the means for accessing, fetching NHL Schedule and Play by Play game data in JSON format and converting data outputs to CSV.

Get yourself familiar with the following…

2017-2018 NHL Season Schedule -> http://live.nhl.com/GameData/SeasonSchedule-20172018.json This URL (API) outputs the complete NHL regular season schedule in JSON format

Play by Play for game 2017020001 -> http://live.nhl.com/GameData/20172018/2017020001/PlayByPlay.json
The following URL (API) used to provide the detailed play-by-play for a specific game… It doesn’t work anymore!

Now will be using this one -> http://statsapi.web.nhl.com/api/v1/game/2017020001/feed/live
A richer output with more detailed events and information.


If you don’t already have jq installed you will need to download and install it either before or after doing the npm install

Install the dependencies with the following command:

npm install

Create a data directory:

mkdir data

Before using you will need to create a specific directory for the season(s) you will be fetching data for.
i.e. To fetch data from the 2017-2018 NHL season you need to create the following folder 20172018 under the data directory.


Fetch Play by Play JSON
node fetch.js season [game]

To fetch all games for a specific season:

node fetch.js 20172018

To fetch a specific game from a specific season

node fetch.js 20172018 2017020001

Sample JSON, 2017020001.json

Convert Play by Play – “Events” to CSV
node convert-events.js season [game]

To convert all games for a specific season:

node convert-events.js 20172018

To convert a specific game from a specific season

node convert-events.js 20172018 2017020001

Sample CSV, 201702001_events.csv

Data dictionary: (game_id, away_team_id, away_team_code, away_team_name, home_team_id, home_team_code,
home_team_name, event_type, event_description, event_id, period, period_type, period_time,
period_time_remaining, away_goals, home_goals, coord_x, coord_y)

Convert Play by Play – “Event Players” to CSV
node convert-eventplayers.js season [game]

To convert all games for a specific season:

node convert-eventplayers.js 20172018

To convert a specific game from a specific season

node convert-eventplayers.js 20172018 2017020001

Sample CSV, 201702001_eventplayers.csv

Data dictionary: (game_id, event_id, event_type, player_id, player_name, player_type)

Convert Play by Play – “Players” to CSV
node convert-players.js season [game]

To convert all games for a specific season:

node convert-players.js 20172018

To convert a specific game from a specific season

node convert-players.js 20172018 2017020001

Sample CSV, 201702001_players.csv

Data dictionary: (game_id, player_id, full_name, first_name, last_name, current_number, birth_date, current_age,
birth_city, birth_state_province, birth_country, nationality, height, weight, active, alternate_captain,
captain, rookie, shoots_catches, roster_status, current_team, position_type, position)

Maybe more to come

comments powered by Disqus