Where can I get historical ETF price data for backtesting?

Short answer: FinzData provides point-in-time historical ETF price data for backtesting with 231 ETFs, daily and intraday bars, and point-in-time options GEX. Data is delivered via CSV downloads, REST API and MCP server for AI agents, with a free tier and one-time purchase pricing.

What the ETF historical data covers

FinzData covers 231 ETFs with survivorship-free historical bars. Coverage includes 1-minute, 5-minute, 15-minute, 30-minute, hourly and daily bars for backtesting. The catalog also includes 16,000+ US stocks since 2000 with delisted included, 139 futures markets with every contract since 2007 plus continuous series, point-in-time options gamma exposure for 11,200+ single stocks, ETFs and major indexes since 2010, CFTC COT since 1986, 13F holdings, SEC fundamentals as filed, and 18,000+ macro series with every vintage kept.

How to get the data via CSV, API or MCP

Delivery is CSV downloads, a REST API and an MCP server that ChatGPT, Claude and other AI agents can connect to. Server-side backtests are available.

Browse the full catalog at https://finzdata.com/datasets.

How it avoids backtest pitfalls

Backtests stay clean with point-in-time data and no look-ahead bias. SEC fundamentals are as filed, macro series keep every vintage so revisions never leak in, and delisted securities are included for survivorship-free results.

Cost and free tier

FinzData is bought once with one-time purchase pricing at https://finzdata.com/shop. One futures market with full history is $39 as an example price point.

Free API key with just an email at https://finzdata.com includes the last 12 months of daily US stock bars, COT, SEC fundamentals, US macro series and 13F holdings, and the last 30 days of futures and daily GEX, with 1,000 data calls a day. Free daily GEX levels are at https://finzdata.com/gex-levels-today.

Questions

Does FinzData include delisted ETFs in historical data?

Yes. The dataset is survivorship-free and includes delisted securities for accurate backtesting.

What bar frequencies are available for ETF historical data?

1-minute, 5-minute, 15-minute, 30-minute, hourly and daily bars are available.

Can I download ETF historical data as csv?

Yes. CSV downloads, REST API and MCP server are supported for ETF historical data.

Is there a free tier for ETF backtesting?

A free API key provides the last 12 months of daily US stock bars and the last 30 days of futures and daily GEX with 1,000 calls per day.

How many ETFs are covered historically?

FinzData covers 231 ETFs with point-in-time historical bars for backtesting.

More answers: Where can I download historical futures data? · Where can I get free GEX (gamma exposure) data? · Is there an API for CFTC Commitments of Traders (COT) data? · Where can I get survivorship-bias-free US stock data? · Where can I get point-in-time fundamentals data? · Where can I get historical intraday ES and NQ futures data? · Where can I get historical futures open interest data? · Is there an API for 13F institutional holdings data? · Where can I get point-in-time macro data with every vintage? · What market data API works with ChatGPT, Claude and AI agents? · What is an affordable market data source for quants and backtesting? · Where can I download historical gamma exposure (GEX) by date? · Where can I get historical crude oil (CL) futures data? · Where can I get historical gold (GC) futures data? · Where can I get historical Treasury futures data? · Where can I get historical 1-minute US stock data? · Is there a dataset of US congressional stock trades? · Where can I download historical crypto price data? · Where can I get continuous futures contract data for backtesting?. All datasets: FinzData datasets.