How to Search Hotels Using SteadyAPI
Learn how to find hotels by destination using SteadyAPI. Resolve a place name to coordinates, then pull property names, ratings, and prices with the Booking.com hotel search endpoints.
READ MORECapabilities
Seven endpoints split into a league view (schedule, scores, standings) and a club view (teams, roster, games, stats). League calls take an optional date, and club calls take teamAbbrev.
One week of games starting on the date you pass, grouped by day, with the venue, start time, both teams, and game state. Meta adds the previous and next week's start dates and the season's key dates, so you can step through the calendar a week at a time. See examples
One row per team as of a date: conference and division with the team's place in each, games played, wins, losses, points, goal differential, and home, road, and last-10 splits. Pass a past date to show the table as it stood that day. See examples
The games on one date with their state and score, including games in progress. The response also counts the games on each day of that week, which helps when you build a date picker. See examples
The teams call lists the clubs on the NHL's current schedule calendar, each with its team id, three-letter abbreviation, full and common names, and logo URLs. That abbreviation is the value the club endpoints expect. See examples
Forwards, defensemen, and goalies in separate lists. Each player has an id, headshot, sweater number, position, shoots or catches, height, weight, and birth details. The season is the one spanning last year and this year, for example 2025-26 for a request made in 2026. See examples
The team games call returns the club's games for the current month, played and upcoming, with TV broadcasts. The team stats call returns current-season numbers for its skaters, such as goals, assists, points, plus/minus, and ice time, and for its goalies. See examples
How a call is made
Send your key as a bearer token in the Authorization header. Most integrations read the league by date first, then open a club by its abbreviation.
GET /api/v1/nhl/schedule, /api/v1/nhl/scores, and /api/v1/nhl/standings accept an optional date in YYYY-MM-DD form, such as 2024-01-25. Leave it out and the call uses today. A date in another format is rejected with a validation error.
The schedule call returns one week from the date you send. To move forward or back, read nextStartDate or previousStartDate from meta and pass it as the next date.
GET /api/v1/nhl/teams-roster, /api/v1/nhl/teams-games, and /api/v1/nhl/teams-stats require teamAbbrev, such as BOS or VAN. Take it from the abbrev field in the teams response or from a standings row.
Shortened examples
Trimmed responses for a club, a standings row, a scheduled game, a score row, a roster entry, and a skater's stats. They come from the 2023–24 season, and the score row shows a game that had not started yet, so no final score appears.
{
"id": 1,
"abbrev": "NJD",
"name": {
"default": "New Jersey Devils"
},
"placeName": {
"default": "New Jersey"
},
"seasonId": 20232024
}{
"id": 2023020747,
"season": 20232024,
"gameDate": "2024-01-25",
"startTimeUTC": "2024-01-26T00:00:00Z",
"gameState": "FUT",
"venue": {
"default": "Little Caesars Arena"
},
"awayTeam": {
"abbrev": "PHI",
"name": {
"default": "Flyers"
}
},
"homeTeam": {
"abbrev": "DET",
"name": {
"default": "Red Wings"
}
}
}{
"id": 8480003,
"firstName": {
"default": "Jesper"
},
"lastName": {
"default": "Boqvist"
},
"sweaterNumber": 70,
"positionCode": "C",
"shootsCatches": "L",
"birthDate": "1998-10-30",
"birthCountry": "SWE"
}{
"teamAbbrev": {
"default": "VAN"
},
"teamName": {
"default": "Vancouver Canucks"
},
"conferenceName": "Western",
"divisionName": "Pacific",
"gamesPlayed": 48,
"wins": 32,
"losses": 11,
"otLosses": 5,
"points": 69,
"date": "2024-01-25",
"seasonId": 20232024
}{
"id": 2023020747,
"gameDate": "2024-01-25",
"gameState": "PRE",
"venue": {
"default": "Little Caesars Arena"
},
"awayTeam": {
"abbrev": "PHI",
"record": "25-17-6"
},
"homeTeam": {
"abbrev": "DET",
"record": "24-18-5"
}
}{
"playerId": 8473419,
"firstName": {
"default": "Brad"
},
"lastName": {
"default": "Marchand"
},
"positionCode": "L",
"gamesPlayed": 47,
"goals": 23,
"assists": 23,
"points": 46,
"plusMinus": 7
}Before you integrate
Answers to the questions developers ask before building an NHL scoreboard or club page.
Each endpoint returns one JSON view: the week's schedule, a day's scores, the standings, the club list, or one club's roster, monthly games, or season stats. Every response has a meta object and a body that holds the data.
From the abbrev field in /api/v1/nhl/teams, or from the team abbreviation on a standings row. Pass the three letters, such as VAN, to the roster, team games, or team stats endpoint.
No. They are trimmed responses from the 2023–24 season, kept to show the field names. A live call returns current data for the date or club you request.
Call /api/v1/nhl/scores with no date for today's games and their current state, or /api/v1/nhl/schedule for the week starting today. For another day, pass date as YYYY-MM-DD.
Schedule and score rows can carry the odds values that the NHL's own feed attaches to each team, keyed by provider id, and the scores response lists the NHL's odds partners. The API passes those values through as published. It does not calculate odds or take bets.
The hockey docs list the parameters for the schedule, scores, standings, teams, roster, team games, and team stats endpoints, explain the date and teamAbbrev rules, and show a full sample response for each.
Every endpoint in the documentation includes a sample request in Shell, JavaScript, PHP, and Python.
Related APIs
Your SteadyAPI key also works on these APIs.
MLB seasons, clubs, rosters, and the schedule for a date, then one game's box score and play-by-play by its gamePk. Baseball API
Soccer matches by date, live and upcoming lists, lineups, match events, and club and player profiles. Its dates are written as YYYYMMDD. Football API
Stock quotes, price history, option chains, and earnings and dividend calendars, for projects that also follow the markets. Stock and Options API
Pricing
Your plan's monthly requests work on this API and every other SteadyAPI API. Plan details, overage rates, and the Free plan's daily cap are on the pricing page. Need more volume than the largest plan? Email [email protected].
Free $0.00 per month | Starter $14.99 per month | Developer $39.99 per month | Business Popular $89.99 per month | Enterprise $299.99 per month | |
|---|---|---|---|---|---|
| Subscribe | Subscribe | Subscribe | Subscribe | Subscribe | |
| Requests per month | 500 | 10,000 | 50,000 | 250,000 | 2,500,000 |
| Stock Market API | |||||
| Options Data API | |||||
| Crypto Data API | |||||
| AliExpress API | |||||
| Reddit API | |||||
| Booking.com API | |||||
| Real Estate API | |||||
| Baseball (MLB) API | |||||
| Hockey API | |||||
| Football API | |||||
| Amazon API | |||||
| eBay API | |||||
| Walmart API | |||||
| Instagram API | |||||
| Twitter / X API | |||||
| TikTok API | |||||
| YouTube API | |||||
| AutoHub API | |||||
| ScrapeFlow | |||||
| Commercial Use | |||||
| Optional overage rate* | $1.50 per 1,000 requests | $1.05 per 1,000 requests | $0.50 per 1,000 requests | $0.09 per 1,000 requests | |
| Overage cap | up to 50,000 extra | up to 250,000 extra | up to 1,250,000 extra | up to 12,500,000 extra |
Free $0.00 per year | Starter $11.96 per month$143.52 billed yearly | Developer $32.50 per month$389.99 billed yearly | Business Popular $72.50 per month$869.99 billed yearly | Enterprise $320.83 per month$3,849.99 billed yearly | |
|---|---|---|---|---|---|
| Subscribe | Subscribe | Subscribe | Subscribe | Subscribe | |
| Requests per month | 500 | 10,000 | 50,000 | 250,000 | 2,500,000 |
| Stock Market API | |||||
| Options Data API | |||||
| Crypto Data API | |||||
| AliExpress API | |||||
| Reddit API | |||||
| Booking.com API | |||||
| Real Estate API | |||||
| Baseball (MLB) API | |||||
| Hockey API | |||||
| Football API | |||||
| Amazon API | |||||
| eBay API | |||||
| Walmart API | |||||
| Instagram API | |||||
| Twitter / X API | |||||
| TikTok API | |||||
| YouTube API | |||||
| AutoHub API | |||||
| ScrapeFlow | |||||
| Commercial Use | |||||
| Optional overage rate* | $1.50 per 1,000 requests | $1.05 per 1,000 requests | $0.50 per 1,000 requests | $0.09 per 1,000 requests | |
| Overage cap | up to 50,000 extra | up to 250,000 extra | up to 1,250,000 extra | up to 12,500,000 extra |
* Overage is optional and stays off until you turn it on in Billing. It is available on paid plans billed by card through Stripe, and not during a trial. Usage is counted in monthly periods that start on your billing day, yearly plans included. Requests past the included limit are charged at the plan's rate for each started block of 1,000, up to the overage cap, on one invoice after the period ends. Amounts under $0.50 carry over to the next invoice. If you change plans during a period, the limit and overage rate of the plan you are on when the period ends apply to the whole period.
The Free plan is also capped at 20 requests per day (New York time). Requests count by endpoint weight, and only responses with HTTP status 200 count.
Commercial use is included only on the plans that list it. If you are not sure whether your project counts as commercial use, email [email protected] before you launch.
Why this API
League and club data come from separate calls, so a scoreboard stays light and a club page requests only what it shows.