Historical Stock Data for US Equities, Back to January 2000
Clean, survivorship-free historical stock data for every NYSE and Nasdaq stock since 2000 — delisted names included. Daily, hourly, 30-minute, 5-minute and 1-minute bars, delivered as CSV, JSON or Parquet. The last 12 months are free; full per-ticker history starts at $19.
Free tier: last 12 months of daily bars, 1,000 calls/day, no card required.
What you get: historical stock price data without the gaps
Most free sources of historical stock price data quietly drop the companies that no longer exist. That is survivorship bias: testing only on companies that still exist overstates returns, because the failures are missing from the sample. If your backtest only ever sees today’s survivors, it will look better than it deserves to.
FinzData’s US stock universe is survivorship-free. It covers NYSE and Nasdaq stocks from January 2000 onward and keeps more than 8,500 delisted symbols in the history, alongside 231 ETFs. Bankruptcies, acquisitions and delistings stay in the data, so the stock market historical data you test on matches the market as it actually was.
Bars are available at five resolutions — 1-minute, 5-minute, 30-minute, hourly and daily — all over the same January 2000 to present span. Every bar is OHLCV with US Eastern timestamps, and the Python client accepts yfinance-style arguments such as auto_adjust if you want adjusted prices.
Coverage at a glance
| Dataset | Coverage | Resolution / detail | Free tier |
|---|---|---|---|
| US stock bars | NYSE + Nasdaq since Jan 2000, incl. 8,500+ delisted symbols and 231 ETFs | 1m, 5m, 30m, hourly, daily OHLCV, US Eastern timestamps | Last 12 months of daily bars |
| SEC fundamentals (point-in-time) | US listed companies | Values as first reported, usable after the filing’s acceptance time | Included |
| Valuation metrics | Per stock, daily | P/E, EV/EBITDA, P/B, P/S, dividend yield, computed from SEC filings and closing prices | — |
| 13F holdings | Every manager, every quarter since 2013 Q2 | Full holdings history per filer | Latest quarter of 13F ownership by stock |
| CFTC COT | Since 1986 | Commitments of Traders reports | Included |
| FRED / ALFRED macro | 20,000+ series | Every vintage of every series | Included |
Full dataset documentation is in the docs, and every dataset is listed on the datasets page.
Free historical stock data: the last 12 months, no card
If you want to evaluate the data or you only need recent history, the free tier is genuine free historical stock data: the last 12 months of daily US stock bars, plus COT, SEC fundamentals and US macro series, with 1,000 API calls per day and no card required. You also get the latest quarter of 13F ownership by stock.
The free tier is for personal research and backtesting. When you need more than 12 months, you have two ways to pay, both one-time rather than a subscription you can never escape:
- Per ticker, from $19. One ticker costs $19 for 5 years of history, plus $10 for each further 5 years — so 10 years of one ticker is $29. Volume discounts apply automatically: 25% off at 10 or more tickers, 50% off at 50 or more. Ten tickers for 10 years works out to $217.50 after the discount.
- Look-back bundles, from $195. The whole US universe: $195 for the first 5 years and $95 for each further 5 years, so 30 years is $670 one-time (stock history starts in January 2000, so 30 years covers all of it). Daily and hourly bars are included; the longer bundles add 1-minute and 5-minute bars. Optional updates are $19.95/month, and if you stop updates you keep the history you already bought.
Shop orders arrive by email as a download link valid for 7 days. The zip contains a folder per bar size with one CSV per ticker — OHLCV bars, US Eastern timestamps. Look-back plans add Parquet, batch downloads and one file per year.
Download historical stock data in three lines of Python
The Python client mirrors the API. Install it with pip install finzdata, then pull history for any ticker:
import finzdata as fd
# Daily bars for Apple since 2015 (delisted tickers work the same way)
aapl = fd.Ticker("AAPL").history(interval="1d", start="2015-01-01")
print(aapl.tail())
# 1-minute bars for a delisted name, across its full lifetime
ene = fd.Ticker("ENE").history(interval="1m", start="2000-01-01", end="2001-12-31")
# Batch download several tickers to CSV, one file per ticker
fd.download(["AAPL", "MSFT", "ENE"], interval="1d", start="2005-01-01", format="csv")
The same calls work through the HTTP API and the MCP endpoint for AI agents, so you can download historical stock data from a script, a notebook or an agent without changing tools. See the API docs for the full reference.
A Yahoo Finance historical data alternative that keeps the dead companies
yfinance and Yahoo Finance are where most people start, and for a quick chart of a live ticker they are fine. The problems show up when you do serious research: delisted companies disappear, so any universe you build is survivorship-biased; there is no point-in-time guarantee on fundamentals; and you are scraping an unofficial interface with no reproducibility guarantees.
FinzData is built as a Yahoo Finance historical data alternative for people who backtest. The client accepts yfinance-style arguments so migration is cheap, but underneath you get the delisted symbols, the point-in-time fundamentals (each value stored as it was known on each date, usable only after the filing’s acceptance time) and snapshot ids on every result so a query can be replayed against the same data later. We have a detailed breakdown on the FinzData vs yfinance comparison page, and a guide to survivorship-bias-free stock data if you want the deeper explanation.
Other vendors solve different problems. Databento sells exchange-licensed tick and order-book data with usage-based pricing — the right tool if you need MBO or MBP depth, which FinzData does not carry. What distinguishes FinzData is the combination of survivorship-free US history since 2000, point-in-time fundamentals, 13F, COT and macro vintages, and one-time pricing instead of a meter running forever.
Nasdaq historical data, NYSE history and delisted stocks in one place
FinzData’s equity coverage is the full US listed market: NYSE and Nasdaq historical data from January 2000 to the present, with delisted stocks kept in the universe rather than purged. That means a query for the universe “all” in 2003 returns the companies that actually traded in 2003 — including the ones that later went bankrupt, were acquired or delisted — not just the ones that survived to today.
This matters beyond backtesting. If you study delistings, distress or corporate events, the delisted stocks are the dataset. Each delisted symbol keeps its complete bar history up to its final trading day, at every resolution the plan includes, so event studies and lifetime analyses work out of the box.
Point-in-time everything, so backtests stay honest
Historical prices are only half the story. The other classic way to fool yourself is look-ahead bias: using information that was not available at the decision time, such as revised macro data, restated financials or fundamentals used before their filing date. FinzData’s non-price datasets are built to prevent exactly that:
- SEC fundamentals, point-in-time: each value is stored as first reported and becomes usable only after the filing’s acceptance time. Restatements never overwrite history.
- ALFRED macro vintages: all 20,000+ FRED/ALFRED series keep every vintage, so you can query GDP or CPI as it was known on any historical date.
- 13F holdings: every manager, every quarter since 2013 Q2, filed quarterly and stored as filed.
- CFTC COT: the full series back to 1986.
Every API and MCP result carries snapshot ids, so any answer can be cited or replayed against the same data snapshot. That is what makes a result reproducible months later.
Frequently asked questions
How far back does the historical stock data go?
US stock history starts in January 2000 and covers NYSE and Nasdaq stocks, with delisted symbols included. You can pull daily, hourly, 30-minute, 5-minute and 1-minute bars over that whole span.
Are delisted stocks included?
Yes. The universe is survivorship-free and includes more than 8,500 delisted symbols alongside 231 ETFs. Companies that failed, were acquired or were delisted stay in the history, so backtests are not distorted by only looking at survivors.
What can I get for free?
The free tier gives you the last 12 months of daily US stock bars, plus COT, SEC fundamentals and US macro series, with 1,000 API calls per day and no card required. Get a free API key and start pulling data immediately.
How do I buy history for a single ticker?
In the shop, one ticker costs $19 for 5 years of history, plus $10 for each further 5 years. There is 25% off when you buy 10 or more tickers and 50% off at 50 or more. You receive a zip with a folder per bar size and one CSV per ticker.
Which download formats are available?
Data is delivered as CSV, JSON or Parquet. Parquet, batch downloads and per-year files are available on the look-back plan, and shop orders arrive as a zip of CSV files with OHLCV bars and US Eastern timestamps.
Do you have tick or real-time data?
No. FinzData provides historical bars from 1-minute up to daily, plus point-in-time fundamentals, 13F holdings, COT and macro vintages. There is no tick, order-book or real-time streaming feed.
Related pages
- Stock API — the programmatic interface behind everything on this page.
- Market data API — bars, fundamentals, 13F, COT and macro through one API.
- Financial data API — point-in-time fundamentals and valuation metrics.
- Guide: survivorship-bias-free stock data
- Compare: FinzData vs yfinance
- All datasets · Shop · Docs