Integration GuidesReference Docs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

Update Frequencies

Each NFL 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. A Standings endpoint may have a 10-minute cache, with the data updating when games conclude.

Two different numbers therefore govern how you poll a feed: how long its responses cache (the TTL) and what drives its data to change. This page carries both for every NFL API endpoint, along with a recommended pull rate for non-live and live use. These frequencies should be understood and factored into your pull rate: match your cadence to the data's rhythm, not to the TTL alone, and use this page to determine the best pull frequency for your needs.



Reading TTLs from Responses

Understanding the distinction between TTL and data updates is crucial for designing an efficient and reliable 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. Check the header on the responses you receive rather than assuming a fixed value: several feed families serve tiered TTLs that follow activity (the game feeds by game status, the schedule feeds by whether active games are present, Player Profile and League Leaders by player status and season), and the Frequency Chart below carries each feed's tiers.

TTL is an upper bound, not a guarantee. When underlying event data changes, the cached object is proactively invalidated and replaced 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 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 affect your suggested request frequency, which is why the chart pairs each feed's TTL with what drives its data to change.



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 chart below provides answers to these questions, with a breakdown of the cache and data updates for every NFL API endpoint, as well as our recommended pulling frequency for non-live and live use.


EndpointTTL / CacheData UpdatesRecommended Pull (Non-Live)Recommended Pull (Live)
Awards List4 hoursNew awards appear as they are added to the databasePull on an as-needed basisNot applicable
Current Season Schedule10 minutes when payload includes active games (games in non-closed status) 60 minutes when no active gamesHourly The endpoint returns the schedule for the season containing the next upcoming game in created status.

It transitions from Preseason → Regular Season → Postseason as the first game of each season type is moved to created. Games typically move to created status after the final injury report is released (e.g. Sunday for Monday games).
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.
Current Week Schedule10 minutes when payload includes active games (games in non-closed status) 60 minutes when no active gamesHourly The endpoint returns the schedule for the week containing the next upcoming game in created status.

It transitions to the next week when the first game of that week is moved to created. Games typically move to created status after the final injury report is released (e.g. Sunday for Monday games).
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 Change Log15 minutes for current day 1 hour for current month 4 hours for current year 12 hours for past yearsEntries 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 UTCPull every ten minutes or less, depending on your use case.Not applicable
Daily Transactions4 hoursUpdates in realtime as transactions are entered.Pull every hour or less, depending on your use case.Not applicable
Free Agents4 hoursUpdates in realtime as changes are made to rosters or player profiles.Pull every hour or less, depending on your use case.Not applicable
Game Boxscore60 seconds when a game is in scheduled status 3 seconds when a game moves to inprogress 600 seconds when a game moves to closed 4 hours when seven days have passed since closedRealtimePull 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-Play60 seconds when a game is in scheduled status 3 seconds when a game moves to inprogress 600 seconds when a game moves to closed 4 hours when seven days have passed since closedRealtimePull 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 Roster60 seconds when a game is in scheduled status 3 seconds when a game moves to inprogress 600 seconds when a game moves to closed 4 hours when seven days have passed since closedRealtimePull on an as-needed basis. Feed can be ignored until around 90 minutes before the scheduled game start, when NFL teams announce inactive players. Click here for more info on player game statuses. 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 can be requested 90 minutes before the scheduled start.
Game Statistics60 seconds when a game is in scheduled status 3 seconds when a game moves to inprogress 600 seconds when a game moves to closed 4 hours when seven days have passed since closedRealtimePull 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.
League Hierarchy4 hoursHierarchy updates appear as they are updated in the database.Pull daily or less, depending on your use case.Not applicable
League Leaders15 minutes for current season

12 hours for past seasons
League leaders update around 20 minutes after a game moves to closedPull 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 Profile15 minutes for active players

30 minutes for retired players, free agents, and players with no status
Seasonal stats update around 5 minutes after a game moves to closedPull 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 is moved to closed to receive the quickest updates
Postgame Standings10 minutesStandings update within 2 minutes of each game moving to completePull every hour or less, depending on your use case.Pull 2-5 mins after a game moves to complete to receive the quickest updates
Seasonal Awards12 hoursAward entries are added as they are announcedPull every hour or less, depending on your use case.Not applicable
Seasonal Statistics4 hoursSeasonal stats update around 5 minutes after a game moves to closedPull 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 is moved to closed to receive the quickest updates
Season Schedule10 minutes when season includes active games (games in non-closed status) 4 hours when no active gamesSchedule 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
Seasons4 hoursNew seasons appear as they are added to the database.Pull on an as-needed basis.Not applicable
Team Profile4 hoursUpdates in realtime as changes are made to rosters or player profiles.Pull every hour or less, depending on your use case.Not applicable
Team Roster4 hoursUpdates in realtime as changes are made to rosters or player profiles.Pull every hour or less, depending on your use case.Not applicable
Teams4 hoursNew teams appear as they are added to the database.Pull on an as-needed basis.Not applicable
Tournament List4 hoursEach NFL Playoff tournament entry is available shortly after the regular season schedule is released.Pull on an as-needed basis.Pull daily or less, depending on your use case.
Tournament Schedule4 hoursSchedule info updates in realtime as changes are made. The initial playoff schedule (with TBD matchups) will be 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.
Tournament Summary4 hoursSchedule info updates in realtime as changes are made. Brackets and seeds are available shortly after they are made official.Pull on an as-needed basis.Pull daily or less, depending on your use case.
Weekly Depth Charts4 hoursDepth charts update shortly before each game, but may be updated during or post game.Pull every hour or less during the current week, depending on your use case.Not applicable
Weekly Injuries4 hoursInjuries are made available depending on the day of a game. See our Weekly Data Entry section for specific timings on injury updates.Pull every hour or less during the current week, depending on your use case.Not applicable
Weekly Schedule10 minutes when week includes active games (games in non-closed status) 4 hours when no active gamesSchedule info updates in realtime as changes are made.Pull every hour or less during the current week, depending on your use case.Not applicable
Draft Endpoint Draft Summary2 secondsRealtimePull 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.
Draft Endpoint Prospects2 secondsProspects are added after the NCAA football season is complete and after declaration (March).Pull on an as-needed basis.Not applicable
Draft Endpoint Team Draft Summary2 secondsRealtimePull 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.
Draft Endpoint Top Prospects2 secondsProspects are added after the NCAA football season is complete and after declaration (March).Pull on an as-needed basis.Not applicable
Draft Endpoint Trades2 secondsRealtimePull 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.



Live Game Windows

During a game window the game feeds (Game Boxscore, Game Play-by-Play, Game Statistics, and Game Roster) update in real time, and polling is driven by game status rather than by this chart: the Tracking Live Games workflow covers kickoff to closed. Their TTL follows the game: 60 seconds while a game is in scheduled status, 3 seconds once it moves to inprogress, 600 seconds when it moves to closed, and 4 hours once seven days have passed since closed.

POLLING CADENCETTL tiers by game status
Before kickoff
scheduled
60 sTTL
Start the game feeds 10 minutes before kickoff. Game Roster from about 90 minutes before, once inactives are announced.
In play
inprogress
3 sTTL
Boxscore, Play-by-Play, Statistics, and Game Roster as fast as every 3 seconds.
Final whistle
complete
3 sTTL
The in-play TTL holds until closed. Standings and playoff rounds update within 2 minutes; pull standings 2 to 5 minutes after.
Validated
closed
600 sTTL
Seasonal statistics and profiles refresh about 5 minutes later (pull at 5 to 10), League Leaders about 20 minutes later (pull at 20 to 25).
A week later
closed
4 hoursTTL
The game feeds settle to their long TTL. Refetch only when the Daily Change Log names the game.
Schedule feeds
10 minwhile any game in the payload is not yet closed
60 minonce every game is closed: Current Season and Current Week Schedule
4 hoursonce every game is closed: Season and Weekly Schedule
The game status decides which cadence applies. Tracking Live Games covers kickoff to closed in detail.
  • Before kickoff: the Boxscore, Play-by-Play, and Statistics feeds can be ignored until 10 minutes before the scheduled start, when live requests should begin. The Game Roster can be requested from around 90 minutes before the scheduled start, when NFL teams announce inactive players; see the player game statuses FAQ for when those statuses populate
  • In play: request the game feeds as fast as every 3 seconds (matching the TTL)
  • After the game: once a game is closed its feeds serve the 600-second TTL (4 hours after seven days); use the Daily Change Log to capture data changes after a game has ended

The schedule feeds also tighten while games are active: 10 minutes when the payload includes active games (games in non-closed status), otherwise 60 minutes for the Current Season and Current Week schedules and 4 hours for the Season and Weekly schedules. Use them for schedule info prior to a game start; for the status of a live game, reference a game endpoint.

The post-game feeds settle on their own timers after the final whistle, and the chart's live column gives the fastest useful pull for each:

  • Postgame Standings update within 2 minutes of each game moving to complete; pull 2 to 5 minutes after complete to receive the quickest updates
  • Tournament Schedule: teams advance to the next round on a 2-minute timer after the previous game moves to complete
  • Seasonal Statistics and Player Profile seasonal stats update around 5 minutes after a game moves to closed; pull 5 to 10 minutes after closed
  • League Leaders update around 20 minutes after a game moves to closed; pull 20 to 25 minutes after closed


The Draft Window

The draft feeds carry a 2-second TTL. Draft Summary, Team Draft Summary, and Trades update in real time while the draft is live: request the Summary and Trade feeds 10 minutes before the scheduled start and poll as fast as every 2 seconds (matching the TTL). Prospects and Top Prospects move on a different rhythm: prospects are added after the NCAA football season is complete and after declaration (March), so pull them on an as-needed basis. The Tracking the Draft workflow covers the draft itself.



Keeping a Store in Sync

  • Every ten minutes or less: pull the Daily Change Log and refetch what it lists. Entries populate live for changes to teams, players, game statistics, schedules, and standings; the log day starts at 05:00:00 UTC and ends at 04:59:59 UTC, and the TTL is 15 minutes for the current day, 1 hour for the current month, 4 hours for the current year, and 12 hours for past years. The workflow is on the Monitoring Data Changes page
  • Every hour or less: the Current Season Schedule and Current Week Schedule (each returns the schedule for the season or week containing the next upcoming game in created status and moves on when the first game of the next season type or week is moved to created, which typically happens after the final injury report is released, e.g. Sunday for Monday games; the season feed transitions from Preseason to Regular Season to Postseason), the Season Schedule, Daily Transactions (updates in real time as transactions are entered), Free Agents, Team Profile, and Team Roster (all three update in real time as changes are made to rosters or player profiles), Postgame Standings outside game windows, and Seasonal Awards (award entries are added as they are announced)
  • Every hour or less during the current week: the Weekly Schedule, Weekly Injuries (injuries are made available depending on the day of a game; see the Weekly Data Entry section for specific timings on injury updates), and Weekly Depth Charts (depth charts update shortly before each game, but may be updated during or after a game)
  • Daily or less: League Hierarchy (hierarchy updates appear as they are made), and during the playoffs the Tournament List and Tournament Summary (each NFL Playoff tournament entry, and the initial playoff schedule with TBD matchups, are available shortly after the regular season schedule is released; brackets and seeds are available shortly after they are made official)
  • As needed: Seasons and Teams (new entries appear as they are added), Awards List (new awards appear as they are added), Seasonal Statistics, Player Profile, and League Leaders outside their post-game windows (with the Daily Change Log capturing data changes after a game has ended), and the game and draft feeds outside their live windows


Best Practices

  • Read the Cache-Control header on every response rather than hardcoding TTLs: values differ by feed and, for the game and schedule feeds, by game state
  • Factor both numbers into your pull rate: the TTL bounds how long a response may be served from cache, while the Data Updates column tells you when the data itself changes
  • Start from the recommended rate in the chart and adjust it to your product's needs
  • Use the schedule feeds for schedule info prior to a game start; for the status of a live game, reference a game endpoint
  • Pull statistics and profile feeds as needed and let the Daily Change Log capture data changes after a game has ended
  • Visit our Headers documentation to learn how to interpret and use header responses to access the freshest sports data

Did this page help you?