Update Frequencies
This guide helps you plan polling and caching against your request quota. Each feed has a time-to-live (TTL): how long a response is cached, and a data update cadence: how often the underlying data actually changes. The two are not the same: a short TTL on slowly-changing data does not mean you should poll fast. Given your request budget and QPS limits (see API Basics), drive your polling from the Recommended pull columns, not the TTL.
Frequency Chart
The six tournament-scoped feeds share a tiered TTL that follows the tournament state, abbreviated as Live-tiered in the chart:
- 3 seconds while the tournament is live
- 60 seconds while it is scheduled
- 10 minutes once recently closed
- 4 hours once closed for more than 7 days
| Feed | TTL (cache) | Data updates | Recommended pull (non-live) | Recommended pull (live) |
|---|---|---|---|---|
| Seasons | 10 minutes | New seasons appear as added; season statuses update on the day of a status change | As needed | Not applicable |
| Tournament Schedule | Live-tiered | Schedule and metadata update as events are added or adjusted | Every 10 to 15 minutes after closing for recent tournaments; Daily Change Log for older ones | Every 10 to 30 minutes |
| Tournament Summary | Live-tiered | Field, location, and status details; also useful for detecting newly added players | Every 10 to 15 minutes after closing for recent tournaments; Daily Change Log for older ones | Every 2 to 5 minutes |
| Tournament Leaderboard | Live-tiered | Real-time leaderboard and tournament/round player stats | Every 10 to 15 minutes after closing for recent tournaments; Daily Change Log for older ones | Push preferred; REST fallback every 3 to 5 seconds |
| Scorecards Per Round | Live-tiered | Real-time per-player round scoring during active rounds | Every 10 to 15 minutes after closing for recent tournaments; Daily Change Log for older ones | Push preferred; REST fallback every 3 to 5 seconds |
| Tee Times Per Round | Live-tiered | Most changes are pre-round, with occasional same-day updates | Every 10 to 15 minutes after closing for recent tournaments; Daily Change Log for older ones | Every 1 to 5 minutes |
| Tournament Hole Statistics | Live-tiered | Hole-level tournament aggregates update during play | Every 10 to 15 minutes after closing for recent tournaments; Daily Change Log for older ones | Every 5 to 15 seconds |
| Players | 3 seconds | Season player list; new players are added as fields are finalized | Every 12 to 24 hours | Every 1 to 4 hours during tournament weeks |
| Player Profile | 4 hours | Seasonal stats update on a 5-minute timer after a tournament moves to closed | As needed; use the Daily Change Log to capture changes after a tournament ends | 5 to 10 minutes after a tournament moves to closed for the quickest update |
| Player Statistics | 3 seconds | Season player-stat feed; updates as stats are revised or published | Every 12 hours | Every 10 to 30 minutes |
| Official World Golf Ranking | 4 hours | Updates weekly on Monday (about 17:00 UTC); a tournament that finishes on a Monday moves the update to Tuesday | Every 12 to 24 hours | Every 4 hours |
| Daily Change Log | 3 seconds | Entries populate live for changes to players, tournaments, schedules, pairings, and statistics | Every 4 hours or so, depending on your use case | Not applicable |
TTL Is a Cache Floor, Not a Polling TargetSeveral slow-moving feeds (Players, Player Statistics, Daily Change Log) carry a 3-second TTL even though their data changes on the order of hours, days, or weekly validation cycles. The TTL only tells you how fresh a response can be; polling those feeds every few seconds burns quota for no benefit. Always size your polling from the Recommended pull columns, and treat anything faster as wasted requests.
The Daily Change Log Window
The Daily Change Log reports changes for a "golf day" that runs from 04:00:00 UTC to 03:59:59 UTC the following day, not midnight to midnight. A captured PGA change log for 2024-04-14 returns:
{
"alias": "pga",
"name": "PGA Tour",
"start_time": "2024-04-14T04:00:00+00:00",
"end_time": "2024-04-15T03:59:59+00:00"
}This boundary lines up with the end of US (East Coast) play, so a full day of results and revisions falls inside one window rather than being split across two calendar dates. Entries populate live throughout the window; a pull every 4 hours or so is enough for most use cases. See Monitoring Data Changes for how to consume it.
Live Update Cadence
Golf scoring updates hole by hole: a player's score for a hole becomes available once that hole is completed and recorded. Size your live polling (or Push consumption) to that cadence; pulling faster than scores can change will not surface them any sooner.
Reading TTL from Responses
Response headers carry caching information you can use to avoid requesting data that has not changed; each response carries standard HTTP caching headers. To detect those updates as they land, see Monitoring Data Changes.
Best Practices
- Drive polling from the Recommended pull columns; never poll faster than a feed's TTL, and rarely as fast.
- Use the live columns only while a tournament is live; once it closes, drop to the non-live cadence and let the Daily Change Log trigger refreshes for older events.
- Prefer Push for Tournament Leaderboard and Scorecards Per Round so you are not polling at 3-to-5-second rates.
- For the fastest post-event stats, pull Player Profile 5 to 10 minutes after a tournament moves to
closed; seasonal stats refresh on a 5-minute timer from that transition. - Treat Players, Player Statistics, and Official World Golf Ranking as slow feeds (hours, not seconds), whatever their TTL says.
Updated 7 days ago
