Update Frequencies
Intro
Each NHL API endpoint updates at a variable frequency, in terms of both its cache and its data.
For example, a Game endpoint may have a 3-second cache during a live game. After the game concludes, this shifts to a 600-second cache, and after seven days, to 4 hours. Alternatively, a Standings endpoint may have a 10-minute cache, with the data updating when games conclude.
Given your limited amount of API requests and QPS, these frequencies should be understood and factored into your pull rate.
Use this section to help determine the best pull frequency for your needs.
Time-to-Live (TTL) and Data Updates
Understanding the distinction between TTL and data updates is crucial for designing an efficient and reliable NBA API solution. TTL is focused on the length of time an object is cached, whereas data updates are concerned with the actual data within the API.
Time-to-Live (TTL)
Time-to-Live (TTL) defines the maximum duration a response may be served from cache before revalidation. TTL values are returned in the Cache-Control header for each REST feed. For example:
Cache-Control: public, must-revalidate, max-age=300
This indicates a TTL of 300 seconds.
TTL is an upper bound, not a guarantee. When underlying event data changes, our system proactively invalidates and replaces the cached object immediately, even if the TTL has not expired.
Data Updates
Data Updates refer to the changes made to the underlying data that the API provides access to. This can occur through various operations such as creating, updating, or deleting our sports data.
Data updates are critical to ensuring that the API delivers the most current and accurate information. Data entry workflows and processes specific to NFL data will affect your suggested request frequency.
See a daily breakdown of data updates for the NHL API.
Additional Frequency Resources
Visit our Headers documentation to learn how to interpret and use header responses to access the freshest sports data.
Frequency Chart
What is the right request frequency for your use? Which endpoints should you pull to get the most efficient use of your allotted calls?
The below chart provides answers to these questions, with a breakdown of the cache and data updates for every NHL API endpoint, as well as our recommended pulling frequency.
| Endpoint | TTL / Cache | Data Updates | Recommended Pull (Non-Live) | Recommended Pull (Live) |
|---|---|---|---|---|
| Awards List | 4 hours | New awards appear as they are added to the database | Pull on an as needed basis | Not applicable |
| Daily Change Log |
| Entries populate live for changes to teams, players, game statistics, schedules, and standings Start time of the log is 05:00:00 UTC; end time is 04:59:59 UTC | Pull every ten minutes or less, depending on your use case | Not applicable |
| Daily Schedule | 10 minutes for days with active games (games in non- 4 hours for days without active games | Schedule info updates in realtime as changes are made | Pull every hour or less, depending on your use case Note that this feed should be used for schedule info prior to a game start For status of a live game, reference a "game" endpoint | Not applicable Use this feed for non-live schedule retrieval only |
| Daily Transfers | 4 hours | Updates in realtime as transactions are entered | Pull every hour or less, depending on your use case | Not applicable |
| Depth Charts | 4 hours | Depth chart info updates in realtime as changes are made | Pull every hour or less, depending on your use case | Not applicable |
| Free Agents | 4 hours | Updates in realtime as changes are made to rosters or player profiles | Pull every hour or less, depending on your use case | Not applicable |
| Game Analytics | 60 seconds when a game is in 3 seconds when a game moves to 600 seconds when a game moves to 4 hours when seven days have passed since | Realtime | Pull on an as-needed basis Feed can be ignored until 30 minutes before the scheduled game start, depending on your use case Utilize the daily change log to capture data changes after a game has ended | Can request as fast as every 3 seconds (matching the TTL) when a game is live Game feeds should be requested 10 minutes before the scheduled start |
| Game Boxscore | 60 seconds when a game is in 3 seconds when a game moves to 600 seconds when a game moves to 4 hours when seven days have passed since | Realtime | Pull on an as-needed basis Feed can be ignored until 10 minutes before the scheduled game start, depending on your use case Utilize the daily change log to capture data changes after a game has ended | Can request as fast as every 3 seconds (matching the TTL) when a game is live Game feeds should be requested 10 minutes before the scheduled start |
| Game Faceoffs | 60 seconds when a game is in 3 seconds when a game moves to 600 seconds when a game moves to 4 hours when seven days have passed since | Realtime | Pull on an as-needed basis Feed can be ignored until 10 minutes before the scheduled game start, depending on your use case Utilize the daily change log to capture data changes after a game has ended | Can request as fast as every 3 seconds (matching the TTL) when a game is live Game feeds should be requested 10 minutes before the scheduled start |
| Game Play-by-Play | 60 seconds when a game is in 3 seconds when a game moves to 600 seconds when a game moves to 4 hours when seven days have passed since | Realtime | Pull on an as-needed basis Feed can be ignored until 10 minutes before the scheduled game start, depending on your use case Utilize the daily change log to capture data changes after a game has ended | Can request as fast as every 3 seconds (matching the TTL) when a game is live Game feeds should be requested 10 minutes before the scheduled start |
| Game Shot Zones | 60 seconds when a game is in 3 seconds when a game moves to 600 seconds when a game moves to 4 hours when seven days have passed since | Realtime | Pull on an as-needed basis Feed can be ignored until 10 minutes before the scheduled game start, depending on your use case Utilize the daily change log to capture data changes after a game has ended | Can request as fast as every 3 seconds (matching the TTL) when a game is live Game feeds should be requested 10 minutes before the scheduled start |
| Game Summary | 60 seconds when a game is in 3 seconds when a game moves to 600 seconds when a game moves to 4 hours when seven days have passed since | Realtime | Pull on an as-needed basis Feed can be ignored until 30 minutes before the scheduled game start, depending on your use case Utilize the daily change log to capture data changes after a game has ended | Can request as fast as every 3 seconds (matching the TTL) when a game is live Game feeds should be requested 10 minutes before the scheduled start |
| Game Time On Ice | 60 seconds when a game is in 3 seconds when a game moves to 600 seconds when a game moves to 4 hours when seven days have passed since | Realtime | Pull on an as-needed basis Feed can be ignored until 10 minutes before the scheduled game start, depending on your use case Utilize the daily change log to capture data changes after a game has ended | Can request as fast as every 3 seconds (matching the TTL) when a game is live Game feeds should be requested 10 minutes before the scheduled start |
| Injuries | 4 hours | We monitor and update injuries and transactions throughout the day, using a combination of official and reliable sources | Pull every hour or less, depending on your use case | Not applicable |
| League Hierarchy | 4 hours | Hierarchy updates appear as they are updated in the database | Pull daily or less, depending on your use case | Not applicable |
| League Leaders - Daily | 4 hours | League Leaders update nightly after all games are closed and statistics validated | Pull daily or less, depending on your use case | Not applicable |
| League Leaders - Goaltending | 4 hours | LLeague Leaders update nightly after all games are closed and statistics validated | Pull daily or less, depending on your use case | Not applicable |
| League Leaders - Seasonal | 4 hours | League Leaders update nightly after all games are closed and statistics validated | Pull daily or less, depending on your use case | Not applicable |
| League Leaders - Skaters | 4 hours | League Leaders update nightly after all games are closed and statistics validated | Pull daily or less, depending on your use case | Not applicable |
| Player Profile | 4 hours | Stats update around 5 minutes after a game is moved to closed | Pull on an as-needed basis Utilize the daily change log to capture data changes after a game has ended | Pull 5-10 mins after a game moves to closed to receive the quickest updates |
| Rankings | 4 hours | Rankings updated nightly, 60 minutes after all games are over | Pull every hour or less, depending on your use case | Not applicable |
| Schedule | 10 minutes when season includes active games (games in non- 4 hours when no active games | Schedule info updates in realtime as changes are made | Pull every hour or less, depending on your use case Note that this feed should be used for schedule info prior to a game start For status of a live game, reference a "game" endpoint | Not applicable Use this feed for non-live schedule retrieval only |
| Seasonal Analytics | 4 hours | Seasonal stats update around 5 minutes after a game is moved to closed | Pull on an as-needed basis Utilize the daily change log to capture data changes after a game has ended | Pull 5-10 mins after a game moves to closed to receive the quickest updates |
| Seasonal Awards | 4 hours | Award entries are added as they are announced | Pull on an as-needed basis | Pull 5-10 mins after a game is moved to closed to receive the quickest updates |
| Seasonal Faceoffs | 4 hours | Seasonal stats update around 5 minutes after a game moves to closed | Pull on an as-needed basis | Pull 5-10 mins after a game is moved to closed to receive the quickest updates |
| Seasonal Shot Zones | 4 hours | Seasonal stats update around 5 minutes after a game moves to closed | Pull on an as-needed basis | Pull 5-10 mins after a game is moved to closed to receive the quickest updates |
| Seasonal Statistics | 4 hours | Seasonal stats update around 5 minutes after a game moves to closed | Pull on an as-needed basis | Pull 5-10 mins after a game is moved to closed to receive the quickest updates |
| Seasons | 4 hours | New seasons appear as they are added to the database The season status is updated on the same day | Pull on an as-needed basis | Not applicable |
| Series Faceoffs | 3 seconds | Series stats update around 5 minutes after a game moves to closed | Pull on an as-needed basis | Pull 5-10 mins after a series game is moved to closed to receive the quickest updates |
| Series Schedule | 300 seconds for series' with active games (games in non- 12 hours for series' without active games | Schedule info updates in realtime as changes are made The initial playoff schedule (with TBD matchups) is available shortly after the regular season schedule is released | Pull on an as-needed basis | Pull 5-10 mins after a series game is moved to closed to receive the quickest updates |
| Series Statistics | 3 seconds | Series stats update around 5 minutes after a game moves to closed | Pull on an as-needed basis | Pull 5-10 mins after a series game moves to closed to receive the quickest updates |
| Standings | 10 minutes | Standings update within 5 minutes of each game moving to complete | Pull on an as-needed basis | Pull 5-10 mins after a game moves to closed to receive the quickest updates |
| Team Leaders - Daily | 4 hours | Team Leaders update nightly after all games are closed and statistics validated | Pull daily or less, depending on your use case | Not applicable |
| Team Leaders - Seasonal | 4 hours | Team Leaders update nightly after all games are closed and statistics validated | Pull daily or less depending on your use case | Not applicable |
| Team Profile | 4 hours | Updates in realtime as changes are made to rosters or player profiles | Pull every hour or less, depending on your use case | Not applicable |
| Teams | 4 hours | New teams appear as they are added to the database | Pull on an as-needed basis | Not applicable |
Important NotePull recommendations are based on a typical customer's needs. We suggest starting with our recommended rate and adjusting as necessary according to your needs.
