Refresh cadence
Signals don’t all refresh on the same schedule. The schema page labels each column with its cadence; this page is the broad shape.
The cadence buckets
Cadence is per-signal, not global. These are the buckets the table below counts.
- Live (1 min, market hours): most price-, volume-, and indicator-based signals. For US equities that means 4 AM–8 PM ET weekdays, pre-market and after-hours included. Crypto runs on the same 1-minute clock 24/7; FX runs it 24/5, closing Friday 5 PM ET and reopening Sunday 5 PM ET.
- Every 15 min: the
recent_*analyst-action flags. - Hourly: analyst-rating columns (
analyst_count_*, targets), 24/7. - Once per business day (rates): the
R:series are not tick data — they are published once a day by their source, so that is how often they can change. The Fed reference rates land in the morning and the Treasury par-yield curve in the afternoon, each for the preceding session. Polling faster returns the same number. - Daily: the IPO-calendar columns (
pending_ipo,ipo_date). - Daily, post-close: fundamentals like
market_cap, daily cross flags (golden_cross), 52-week extremes. Financial-statement fields (pe_ratio,eps) refresh here too; their values change when issuers file, roughly quarterly. - Nightly (ETF X-ray): ETF holdings and sector weights (
/v2/tickers/{t}/holdings,/sectors, and theetf_holderscolumn) come from a nightly post-close vendor refresh — expect them to be up to a day behind.
How to tell which is which
The schema page has the per-column answer.
Every row in the schema is tagged with its cadence. If you’re building a UI that shows freshness, pull that column and label the source field accordingly.
Signals per cadence
Straight from the spec: how many advertised signals update on each cadence.
| Cadence | Signals | Examples |
|---|---|---|
| Live (1 min, market hours) | 215 | price, volume_today, session_open, session_high |
| Every 15 min | 10 | recent_upgrade, recent_downgrade, recent_initiation, recent_target_raise |
| Hourly | 16 | analyst_count_total, analyst_count_with_target, analyst_count_strong_buy, analyst_count_buy |
| Daily | 3 | pending_ipo, ipo_date, ipo_in_7d |
| Daily, post-close | 450 | breaking_above_20d_high, breaking_below_20d_low, ticker, total_employees |
The as_of timestamp
Every response tells you when it was assembled.
Every payload carries a top-level as_of ISO timestamp. For live endpoints it’s the server time at which the response was assembled. For as-of-history endpoints (/tickers/{t}?asof=, POST /v2/scan with asof) it’s the moment you asked about: the date (that day’s close) or the ISO timestamp you passed. Older as_of values are proportionally stale.