Integration GuidesReference Docs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

Update Frequencies

Every response carries a cache-control: max-age header: the feed's TTL, meaning how long that payload may be served from cache before a fresh copy is available. A TTL is a cache floor, not a polling recommendation: poll at the cadence your product needs, and read the header on the responses you actually receive.



Frequency Chart

Several feeds are state-dependent, with the tiers shown. The recommended-pull columns are recommendations, not limits.

FeedTTL (cache)Data updatesRecommended pull (non-live)Recommended pull (live)
Daily Change Log15 minutes (current day); 1 hour (current month); 4 hours (current year); 12 hours (past years)As entities change during the dayEvery hour or less, depending on your use caseNot applicable
Daily Schedule10 minutesAs that date's games change and completeEvery hour or less during the current day, depending on your use caseNot applicable
Daily Transfers2 hoursAs transactions postEvery hour or less, depending on your use caseNot applicable
Free Agents4 hoursOn player movementEvery hour or less, depending on your use caseNot applicable
Game Boxscore1 minute (scheduled); 2 seconds (in progress); 10 minutes (recently closed); 4 hours (more than seven days after closing)Continuously during playAs needed; the feed can be ignored until 10 minutes before the scheduled start, with the daily change log capturing post-game changesAs fast as the response TTL allows while a game is live; begin requesting 10 minutes before the scheduled start
Game Play-by-Play1 minute (scheduled); 2 seconds (in progress); 10 minutes (recently closed); 4 hours (more than seven days after closing)Continuously during playAs needed; the feed can be ignored until 10 minutes before the scheduled start, with the daily change log capturing post-game changesAs fast as the response TTL allows while a game is live; begin requesting 10 minutes before the scheduled start
Game Summary1 minute (scheduled); 2 seconds (in progress); 10 minutes (recently closed); 4 hours (more than seven days after closing)Continuously during playAs needed; the feed can be ignored until 10 minutes before the scheduled start, with the daily change log capturing post-game changesAs fast as the response TTL allows while a game is live; begin requesting 10 minutes before the scheduled start
Injuries2 hoursInjury reporting is not included in G League coverageNot applicableNot applicable
League Hierarchy4 hoursOn league structure changesDaily or less, depending on your use caseNot applicable
League Leaders15 minutesAfter games closeAs needed; the daily change log captures post-game changes20 to 25 minutes after a game closes
Player Profile15 minutes (active players); 12 hours (retired players)On player changes; statistics after games closeAs needed; the daily change log captures post-game changes5 to 10 minutes after a game closes
Rankings15 minutesAfter games closeAs needed30 to 90 minutes after the day's final game closes
Schedule10 minutesAs games are scheduled, moved, or completedEvery hour or less, depending on your use case; use the game feeds for live statusNot applicable
Seasonal Statistics15 minutesAfter games closeAs needed; the daily change log captures post-game changes5 to 10 minutes after a game closes
Seasons4 hoursWhen seasons are added or datedAs neededNot applicable
Series Schedule5 minutes (series with active games); 12 hours (otherwise)As series are created and decidedAs neededEvery hour or less; use the game feeds for live status
Series Statistics4 hoursAfter series games closeAs needed; the daily change log captures post-game changes5 to 10 minutes after a game closes
Standings10 minutesAfter games closeEvery hour or less, depending on your use case2 to 5 minutes after a game closes
Team Profile4 hoursOn roster or staff changesEvery hour or less, depending on your use caseNot applicable
Teams4 hoursOn team changesAs neededNot applicable
⏱️

TTLs Are Cache Floors

A 10-minute TTL on Standings means a fresh table can be available every 10 minutes, not that you need one that often: a standings page refreshed after each game day is fully current. Conversely, the 2-second in-progress TTL on the game feeds is a ceiling on freshness, not a mandate to poll that fast; poll live games at the cadence your product needs and let the header on each response guide you.



Reading TTL from Responses

Every response states its own TTL:

HTTP/1.1 200 OK
cache-control: public, max-age=601

The value is in seconds (601 is the 10-minute tier). The header on each response is definitive for that feed.



The Change-Log Window

The Daily Change Log and Daily Transfers cover one US Eastern day each (see G League API Basics for the exact window boundaries), and past dates remain queryable. A daily pull of the change log, plus targeted refetches of what it lists, keeps a store current without re-crawling; the workflow is on the Monitoring Data Changes page.



Best Practices

  • Read cache-control on every response rather than hardcoding TTLs; values differ by feed and can differ by game state
  • Poll standings-family feeds after game days, not on a timer during idle hours
  • During live games, poll the game-scoped feeds for the games you track rather than the full Daily Schedule
  • Use the Daily Change Log as the trigger for off-cycle refreshes of profiles, results, and standings

Did this page help you?