View as markdown
Endpoints · Tickers

As-of ticker

GEThttps://api.tickerbot.io/v2/tickers/{ticker}?asof=

Add ?asof= to any ticker read and you get the whole wide row as it stood at that past moment — boolean flags, technical indicators, and the most-recent fundamentals known then. The point-in-time sibling of [As-of scan](/docs/endpoints/scan/asof) and [As-of matches](/docs/endpoints/signals/asof): the same staleness rule and the same plan window everywhere.

For a ticker's values *over time*, use [Ticker history](/docs/endpoints/tickers/history-series) instead — asof answers "what did the row look like at t", history answers "how did it evolve".

(A second spelling, GET /v2/tickers/{ticker}/history?asof=, returns the identical response — use whichever reads better in your code.)

stringrequired

Ticker symbol.

stringrequired

Target moment as `YYYY-MM-DD` or full ISO timestamp `YYYY-MM-DDTHH:MM:SSZ`. A date returns the row at the close of that day; a timestamp returns the row at that moment — minute-level where available; `_meta.resolution` reports the granularity served. The response returns the most-recent snapshot within the staleness window (14 days for daily) — the SAME rule as `/v2/scan?asof=` and `/v2/signals/{signal}?asof=`, unified 2026-07-27: asof means "the state AT that instant" everywhere. A ticker with no fresh-enough state (delisted, data gap) 404s with `last_available` and a pointer at the series endpoint for "last known state". Plan window: Free reaches back 30 days; every paid plan is unlimited (`403 asof_tier_required` beyond the window).

200
Wide row at the requested date under data. _meta.frozen_fields lists fields that are not historized (sector, industry, etc.; JOIN to /tickers/{t} for current values).
400
bad_requestasof missing or not YYYY-MM-DD / YYYY-MM-DDTHH:MM:SSZ.
401
Missing or invalid API key.
404
not_found — the ticker has no historical state at or before the requested date.
  • Replayable history on every plan. A missing or malformed asof returns 400 bad_request; a date with no fresh-enough state returns 404 not_found with last_available — the row must be within the staleness window (14 days for daily), the same rule as every other asof surface (unified 2026-07-27).
  • The returned data.date may be earlier than the requested asof (weekend/holiday/gap) — it is the latest daily state within the window on or before that date. See the example: asof=2026-03-01 (a Sunday) returns the 2026-02-27 row.
  • frozen_fields are not historized; they're snapshots of the *current* value. The other fields are correct as of the requested date.