Integration GuidesReference Docs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

Update Frequencies

Intro

Each NBA 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 NBA data will affect your suggested request frequency.



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 NBA API endpoint, as well as our recommended pulling frequency.


Endpoint

TTL / Cache

Data Updates

Recommended Pull

(Non-Live)

Recommended Pull

(Live)

Daily Change Log

4 hours

Entries populate every 20 minutes 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 Injuries

4 hours

Injuries are made available depending on the scheduled time of a game.

Pull every hour or less during the current day, depending on your use case.

Not applicable

Daily Schedule

10 minutes during the season

4 hours during the offseason

Schedule info updates in realtime as changes are made

Pull every hour or less during the current day, depending on your use case.

Not applicable

Daily Transfers

4 hours

Updates in realtime as transactions are entered.

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 Boxscore

3 seconds when a game moves to inprogress

600 seconds when a game moves to closed

4 hours when seven days have passed since closed

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

3 seconds when a game moves to inprogress

600 seconds when a game moves to closed

4 hours when seven days have passed since closed

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

3 seconds when a game moves to inprogress

600 seconds when a game moves to closed

4 hours when seven days have passed since closed

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

Injuries are made available depending on the scheduled time of a game.

Pull every hour or less during the current day, 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

4 hours

League Leaders update on a 20-minute timer.

Updates are triggered around 5 minutes after a game is closed

Pull on an as-needed basis.

Utilize the Daily Change Log to capture data changes after a game has ended.

Pull 20-25 mins after a game moves to closed to receive the quickest updates

Player Profile

4 hours

Stats update around 5 minutes after a game moves 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 update nightly, 60 minutes after all games end.

Teams are marked as clinched 5 minutes after a game is closed when clinching a playoff spot.

Pull on an as-needed basis.

Pull 30-90 minutes after the final game of the day moves to complete.

Schedule

10 minutes during the season

4 hours during the offseason

Schedule information 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

Seasonal Statistics

4 hours

Seasonal stats update around 5 minutes after a game moves 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

Seasons

4 hours

New seasons appear as they are added to the database.

Season statuses update during the day of a status change.

Pull on an as-needed basis.

Not applicable

Series Schedule

10 minutes during the season

4 hours during the offseason

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.

Teams advance to the next round on a 2-minute timer after the previous game moves to complete status.

Pull on an as-needed basis.

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.

Series Statistics

10 minutes during the season

4 hours during the offseason

Series stats update around 5 minutes after a game moves 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

Splits (Game)

4 hours

Splits update around 5 minutes after a game moves 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

Splits (Hierarchy)

4 hours

Splits update around 5 minutes after a game moves 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

Splits (In-game)

4 hours

Splits update around 5 minutes after a game moves 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

Splits (Schedule)

4 hours

Splits update around 5 minutes after a game moves 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

Standings

10 minutes

Standings update within 2 minutes of each game moving to complete.

Pull every hour or less, depending on your use case.

Pull 2-5 mins after a game moves to complete to receive the quickest updates

Team Depth Charts

4 hours

Depth charts may update multiple times per week to remain current.

Pull every hour 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

Draft Summary

2 seconds

Realtime

Pull on an as-needed basis.

Can request as fast as every 2 seconds (matching the TTL) when the draft is live.

Summary and Trade feeds should be requested 10 minutes before the scheduled start.

Prospects

2 seconds

Prospects populate after the NCAA Men's Basketball season ends and players declare, typically in May.

Pull on an as-needed basis.

Not applicable

Team Draft Picks

2 seconds

Realtime

Pull on an as-needed basis.

Can request as fast as every 2 seconds (matching the TTL) when the draft is live.

Summary and Trade feeds should be requested 10 minutes before the scheduled start.

Top Prospects

2 seconds

Prospects populate after the NCAA Men's Basketball season ends and players declare, typically in May.

Pull on an as-needed basis.

Not applicable

Trades

2 seconds

Realtime

Pull on an as-needed basis.

Can request as fast as every 2 seconds (matching the TTL) when the draft is live.

Summary and Trade feeds should be requested 10 minutes before the scheduled start.

🏀

Important Note

Pull recommendations are based on a typical customer's needs. We suggest starting with our recommended rate and adjusting as necessary according to your needs.