Prices
Current market prices for equities, ETFs, indices, and Yahoo Finance symbols. Responses are cached and safe for high-volume dashboards.
Caching model
Price requests are served through an in-process read-through cache with request coalescing. Fresh entries are returned immediately, concurrent misses for the same symbol share one Yahoo Finance request, and brief Yahoo failures can return a stale cached quote instead of failing your users. Check cachedAt, expiresAt, stale, and the Cache-Control header to decide how aggressively to cache on your side. Every response also carries X-Price-Cache: HIT when it came from cache, MISS when we fetched it for you, STALE when a refresh failed. In a batch the header reports the weakest symbol in the response.
Symbols in a batch resolve independently. One delisted or unknown ticker does not sink the other 24: it moves to the errors array while the rest return in data. You only get an error status when every symbol you asked for failed. Partial responses are sent no-store, since a symbol that failed once may resolve on your next call.
Unknown symbols are remembered for a couple of minutes so a mistyped or delisted ticker stops costing an upstream lookup on every request. One practical consequence: a symbol that has only just started trading can keep returning not_found for up to that long after it goes live. Transient upstream failures are never remembered this way, only clear “no such symbol” answers.
Prices are metered by symbol, not by request, because a 25-symbol call costs us 25 upstream lookups. Watch RateLimit-Symbols-Limit for the per-second budget and RateLimit-Symbols-Policy for the burst, which is sized to hold two full batches. Polling a 25-ticker dashboard on any normal interval stays well inside it. The budget is shared between both price endpoints, so you cannot reset it by switching URL shape.
curl "https://api.newlyfiled.com/v1/prices?symbols=AAPL,MSFT,^GSPC"Loading reference…