Daily Stock Prices (EOD)
Daily end-of-day closing-price history for US-listed stocks, ETFs, and mutual funds, including delisted tickers, so historical analysis is survivorship-bias-free. Coverage reaches back as far as 1962 for the oldest names. Each row carries the as-traded close, the split- and dividend-adjusted close (chart this one), the dividend paid with that ex-date, and the split factor. One call returns up to 5,000 daily rows, the newest 5,000 by default, with a cursor to page back further; weekly/monthly downsampling keeps multi-year charts compact. Paid plans only. Close Prices from Tiingo.com.
GET /v1/daily-pricesLive from the data
Loading the latest numbers…
What it returns
One call = one ticker. Use adj_close for charts and return calculations (as-traded close has artificial cliffs at splits). frequency=weekly|monthly returns the last bar per period with dividends summed and split factors compounded. History depth follows your plan: Basic = 5 years, Pro and Business = full history. Unlike KeyVex's public-record datasets, this is licensed third-party market data, no bulk export, attribution required (Close Prices from Tiingo.com). See the live example below for the full field set.
Filters
| ticker | Ticker symbol, e.g. 'AAPL', 'SPY', 'BRK-B' (hyphen for share classes). |
| since | 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. |
| until | 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. |
| frequency | Downsampling: daily, weekly or monthly. Default daily. Use weekly or monthly for multi-year charts. |
| include_ohlc | Add open/high/low/volume (+ adjusted variants) to each row. Default false. Aggregated per period on weekly/monthly. |
Example request
curl "https://api.keyvex.com/v1/daily-prices?ticker=AAPL&since=2026-10-06&until=2026-10-09" \
-H "x-api-key: YOUR_KEY"
Response
{
"ticker": "AAPL",
"price_ticker": "AAPL",
"results": [
{ "date": "2026-10-06", "close": 333.63, "adj_close": 333.63, "div_cash": 0, "split_factor": 1 },
{ "date": "2026-10-07", "close": 336.67, "adj_close": 336.67, "div_cash": 0, "split_factor": 1 },
{ "date": "2026-10-08", "close": 340.42, "adj_close": 340.42, "div_cash": 0, "split_factor": 1 },
{ "date": "2026-10-09", "close": 336.64, "adj_close": 336.64, "div_cash": 0, "split_factor": 1 }
],
"first_available": "1980-12-12",
"last_available": "2026-10-12",
"is_active": true,
"attribution": "Close Prices from Tiingo.com",
"count": 4,
"query": { "ticker": "AAPL", "since": "2026-10-06", "until": "2026-10-09" },
"freshness": {
"checked_at": "2026-10-13T22:20:27.328Z",
"datasets": [
{
"dataset": "Tiingo EOD prices sync",
"last_updated": "2026-10-13T01:25:23.077Z",
"age_hours": 20.9,
"data_last_added": "2026-10-13T01:25:23.077Z",
"data_age_hours": 20.9,
"expected_cadence": "daily (9:05 PM ET)",
"status": "current"
}
]
}
}
Rows run oldest to newest. A window holding more than 5,000 rows is cut, never silently: without since you get the newest 5,000 with truncated: true and prev_until (call again with until=prev_until for the page before); with since you get the 5,000 from that date with next_since. On the Basic plan the response also carries history_floor and history_note, the start of your 5-year window.
Example questions you can answer
- AAPL's daily closes for the last 90 days.
- 10-year monthly price series for charting INTC vs the S&P.
- What did a delisted ticker trade at before it went away?
- Dividend and split history embedded right in the price series.
Related datasets
Hand any AI your key + the OpenAPI spec and it can pull this dataset directly. Paid plans only (Basic and up): a free key does not include market-price data.
See plans OpenAPI spec → REST docs →Not investment advice. KeyVex is a data publisher: nothing on this site or in API responses is investment, legal, tax, or compliance advice (Terms §8).