Update Frequencies
Two different numbers govern how you poll a feed: how often its data changes, and how long its responses cache. This page carries both: the cache TTL each feed serves, what actually drives its data to change, and a recommended pull cadence. Match your cadence to the data's rhythm, not to the TTL.
Reading TTLs from Responses
Every response carries a cache-control header with the TTL in seconds:
cache-control: public, max-age=601Check the header on the responses you receive; several feed families serve tiered TTLs that follow game activity, and the chart below carries each feed's tiers. The frequency model is shared with the NFL API, so an NFL integration's polling plan carries over directly.
Frequency Chart
| Feed | TTL (cache) | Data updates | Recommended pull |
|---|---|---|---|
| League Hierarchy | 4 hours | Hierarchy updates appear as they are made | Daily |
| Seasons | 4 hours | New seasons appear as they are added | Daily |
| Teams | 4 hours | New teams appear as they are added | Daily |
| Season Schedule | 10 minutes with active games; 4 hours with none | Schedule edits in real time; scores at complete | Hourly in season; a few times per day otherwise |
| Current Season / Current Week Schedule | 10 minutes with active games; 60 minutes with none | The window rolls forward as the next game reaches created | Hourly; every few minutes on game days |
| Weekly Schedule | 10 minutes with active games; 4 hours with none | Schedule edits in real time, plus deleted_games | With each schedule pass |
| Postgame Standings | 10 minutes | Within 2 minutes of each game reaching complete | After each game day; 2 to 5 minutes after complete for the fastest updates |
| Seasonal Statistics | 4 hours | About 5 minutes after a game reaches closed | 5 to 10 minutes after closed on game days |
| Player Profile | 4 hours | Seasonal stats land about 5 minutes after closed; roster activity as it happens | On change-log signal |
| Weekly Injuries | 4 hours | Made available by day of game | Daily in game weeks |
| Weekly Depth Charts | 4 hours | Shortly before each game; can update during and after | Daily in game weeks |
| Game Boxscore / Play-by-Play / Statistics / Roster | 60 seconds at scheduled; 3 seconds in play; 600 seconds at closed; 4 hours seven days after closed | Real time while in play; validation at closed | As fast as every 3 seconds in play, starting 10 minutes before kickoff; one final pull at closed |
| Daily Transactions | 4 hours | In real time as transactions are entered | Daily, plus intraday in active periods |
| Daily Change Log | 15 minutes for the current league day; up to 12 hours for past periods | Entries populate live; the league day rolls at 04:00:00Z | Daily after 04:00:00Z, plus intraday in active periods |
| Tournament List / Schedule / Summary | 4 hours | Entries appear shortly after the regular-season schedule releases; teams advance about 2 minutes after the feeding game reaches complete; brackets and seeds when official | Daily; after each playoff game |
The recommended-pull column is guidance to start from, not a limit; scale it to the freshness your product needs.
The TTL Is a Cache FloorA feed's TTL is the fastest its responses can change, not a request to poll that fast. For example, the weekly report feeds' data moves on a weekly rhythm regardless of the cache window; match your cadence to the report cycle.
Live Game Windows
During a game window the game feeds update in real time as games are played, and polling is driven by game status rather than by this chart: the Tracking Live Games workflow poll cycle covers kickoff to closed. The game feeds' TTL drops to 3 seconds in play, so live polling can run as fast as every 3 seconds. Once a game is closed its feeds serve a 600-second TTL (4 hours after seven days), and one final pull captures the validated record.
Keeping a Store in Sync
- Daily: pull the Daily Change Log for the league day and refetch what it lists; honor
deleted_gamesin the weekly schedules - Game days: refresh schedules and standings as games reach
completeandclosed - Weekly: pick up the new week's injuries and depth charts in game weeks
- Seasonally: re-pull Hierarchy, Teams, and Seasons ahead of a new season for structure and identity changes
Best Practices
- Respect
cache-control: requesting inside the TTL returns the same payload and spends quota - Distribute non-urgent pulls across the hour rather than bunching them at the top
- On
429, slow your request rate and retry, increasing the wait between attempts - Build cadences per feed family rather than one global timer
Updated 11 days ago
