Returns daily end-of-day closing-price history for one US-listed ticker (stocks, ETFs, mutual funds — including delisted tickers, so historical analysis is survivorship-bias-free)
Returns daily end-of-day closing-price history for one US-listed ticker (stocks, ETFs, mutual funds — including delisted tickers, so historical analysis is survivorship-bias-free). Coverage extends back as far as 1962 for the oldest names, subject to plan history limits. PAID PLANS ONLY. Each row: date, close (as-traded), adj_close (split+dividend adjusted — use THIS for charts and return calculations), div_cash (dividend with that ex-date), split_factor (e.g. 4 = 4:1 split that session). include_ohlc=true adds the session's open / high / low / volume and their adjusted variants — the day's RANGE, which is what a stop or a target is actually tested against. On weekly/monthly these are aggregated over the period (first open, highest high, lowest low, summed volume), not the last session's values. Omit the flag and the response is unchanged. At most 5,000 rows per call (5,000 daily rows is about 20 years). When the window holds more, the response says truncated=true. Without since, you get the NEWEST 5,000 and prev_until: call again with until=prev_until for the page before. With since, you get the 5,000 from since onward and next_since: call again with since=next_since for the page after. Rows are never dropped silently. For multi-year ranges prefer frequency='weekly' or 'monthly' (last bar per period; dividends summed, split factors compounded), which never page: 10 years daily ≈ 2,500 rows vs ~120 monthly. One call = one ticker. Compare securities with multiple calls. Close Prices from Tiingo.com.
Request
- Base URL: https://api.keyvex.com
- URL: https://api.keyvex.com/v1/daily-prices
- Auth: API key in header x-api-key
Query parameters
Ticker symbol, e.g. 'AAPL', 'SPY', 'BRK-B' (hyphen for share classes).
ISO date YYYY-MM-DD inclusive. Default: earliest your plan allows. Setting since pages FORWARD from it: to read the next page of a long window, pass the previous response's next_since.
ISO date YYYY-MM-DD inclusive. Default: latest available. Without since a long window returns its newest 5,000 rows; to read the page before, pass the previous response's prev_until here.
Downsampling. Default daily. Use weekly/monthly for multi-year charts.
Add open/high/low/volume (+ adjusted variants) to each row. Default false. Aggregated per period on weekly/monthly.
Response
JSON envelope: { results: [...], count, has_more }.
Changes
No recorded changes to this operation across all 1 revision of this API.