This package pulls data from DigitalShift sites such as HockeyShift, SoccerShift, LacrosseShift, FootballShift, BasketballShift, and BaseballShift.
For the Ruby version of this library, see shift_stats
You can install node-shiftstats via npm: npm install node-shiftstats
const ShiftStats = require('node-shiftstats')
Create a new instance of ShiftStats with
let s = new ShiftStats()
then await
or .then()
on s.login()
. This connects to the ShiftStats server, logs in, and stores the ticket hash so you're ready to make any other request. This ticket is only valid for a limited amount of time.
Optionally specify your API key (note: by default uses the same API key as the Android HockeyShift app)
let s = new ShiftStats('yourApiKeyHere')
Attempting to login or call any API can reject
/catch
if there are network issues or the API key is invalid.
See the included example script for a small sample of interfacing with the library.
leagues
- Get a list of all available leagues.league(leagueId)
- Show details for a specific league.leagueSeasons(leagueId)
- Get a list of seasons for a specific league.leagueSuspensions(leagueId, onlyActive = true)
- Get a list of suspended players for the specified league.onlyActive
controls whether expired suspensions are included or not.- WARNING: this response can be very large, especially if
onlyActive
is false.
teamSearch(sportName, teamName)
- Search for the given team in the given sport for all active seasons.teamSchedule(teamId)
- Retrieve the game schedule for the supplied team.teamPlayersList(teamId)
- Get the list of players on a specific team.teamsInDivision(divisionName, leagueId, currentSeason = true)
- Get all teams in the named division in the specific league.- This is an odd API that requires the division be a name, not an ID, and requires specifying a league ID to search in.
teamGames(teamId, includeFuture = true, includeToday = true)
- Get all games for a specific team.teamGamesForStatus(teamId, status = 'Final,In Progress,Forfeit')
- Get a list of all games for a specific team matching the specified type.- Valid values for
status
areFinal
,In Progress
, andForfeit
, and can be mixed and matched, separated by commas.
- Valid values for
teamPractices(teamId, includeFuture = true, includeToday = true)
- Get a list of practices schedule for the specified team.teamSuspensions(teamId, onlyActive = true)
- Get a list of suspensions of players on the specified team.onlyActive
controls whether expired suspensions are included or not.
game(gameId)
- Returns data about the specified game.gameGoals(gameId, only = null)
- Returns a list of goals in the specified game.- Valid values for
only
are'home'
and'away'
. If not specified, both teams' goals are included.
- Valid values for
gameGoalies(gameId, only = null)
- Returns a list of goalies in the specified game.- Valid values for
only
are'home'
and'away'
. If not specified, both teams' goalies are included.
- Valid values for
gamePenalties(gameId, only = null)
- Returns a list of penalties in the specified game.- Valid values for
only
are'home'
and'away'
. If not specified, both teams' penalties are included.
- Valid values for
gameRoster(gameId, only = null)
- Returns the roster for the specified game.- Valid values for
only
are'home'
and'away'
. If not specified, both teams' rosters are included.
- Valid values for
divisionGamesList(divisionId)
- Returns all games for a specified division.divisionStandings(divisionId, type = 'Regular Season')
- Returns a ranked list of teams for the specified division.- Valid values for
type
areRegular Season
,Playoffs
, andExhibition
.
- Valid values for
divisionTeams(divisionId)
- Lists all teams in the specified division.divisionLeaders(divisionId, type = 'Regular Season', limit = 20, metrics = ['points', 'goals'])
- Lists up tolimit
number of leaders for the specified division.- Valid values for
type
areRegular Season
,Playoffs
, andExhibition
. - Valid values for
metrics
include anything listed inleague(leagueId).league.view_settings.leader_metrics
.
- Valid values for
divisionSuspensions(divisionId, onlyActive = true)
- Get a list of suspensions of players in the specified division.onlyActive
controls whether expired suspensions are included or not.
season(seasonId)
- Show details for a specific season.seasonDivisionsList(seasonId)
- Lists all divisions for the specified season.seasonSuspensions(seasonId, onlyActive = true)
- Get a list of suspended players for the specified season.onlyActive
controls whether expired suspensions are included or not.
Please create an issue or pull request on github. Assistance is most welcome.
There are more endpoints available on Shift sites, but none are documented. Running a mobile app inside an emulator and watching wireshark, fiddler, etc. is how the current endpoints were discovered.