Download Stock Data CSV
Download Stock Data CSV
Download stock data CSV fast with FinzData. Use REST with format=csv or the Python client that mirrors yfinance to get pandas DataFrames and write CSV files. Coverage is 16,000+ US stocks back to January 2000 including delisted names, with daily, hourly, 5-minute and 1-minute bars and adjustable splits and dividends.
REST CSV download
FinzData REST returns JSON or CSV. To download stock data CSV directly from the API, add format=csv to a prices request. The API base is https://api.finzdata.com. The free tier includes last 12 months of every dataset, 1,000 API calls/day, no card. Paid look-back bundles extend history beyond the free window. See /pricing and Docs for parameters.
A typical download stock data CSV request includes symbol, interval, start, end and adjust. The response is a CSV file with a header row and one row per bar. You can save the response body to disk as .csv without post-processing.
- GET /v1/prices?symbol=AAPL&interval=1d&start=2020-01-01&end=2020-12-31&adjust=all&format=csv
- Response columns: Date, Open, High, Low, Close, Adj Close, Volume
- Intraday intervals return timestamp columns with the same price fields
Python client to CSV
import finzdata as yf
import pandas as pd
# yfinance-compatible client
ticker = yf.Ticker("AAPL")
df = ticker.history(start="2020-01-01", end="2020-12-31", interval="1d", auto_adjust=False)
# adjust on read: 'none' | 'splits' | 'all'
df.to_csv("AAPL_2020.csv", index=True)
print(df.head())Client with adjust options
Prices are stored as traded with splits and dividends published and applied on read. Use adjust='none' for raw traded prices, adjust='splits' for split-adjusted prices, adjust='all' for splits and dividends applied. This makes backtests and comparisons consistent across time.
The Python client mirrors yfinance. Install with pip install finzdata then import finzdata as yf. DataFrames are returned for history, download and Ticker methods. The DataFrame index is datetime and columns are Open, High, Low, Close, Adj Close, Volume. Write the DataFrame to CSV with pandas to_csv for local storage or sharing.
Adjustments are applied on read, not stored permanently. This preserves the original traded values while giving you flexible views for analysis.
REST client example
import finzdata as yf
c = yf.Client()
# daily prices with dividend adjustment
df = c.prices(sym="AAPL", interval="1d", start="2020-01-01", end="2020-12-31", adjust="all")
df.to_csv("AAPL_prices_adjusted.csv")
# hourly bars
df_h = c.prices(sym="AAPL", interval="1h", start="2024-01-01", end="2024-01-02", adjust="splits")
df_h.to_csv("AAPL_hourly.csv")
# multiple symbols
symbols = ["AAPL", "MSFT", "NVDA"]
for s in symbols:
d = c.prices(sym=s, interval="1d", start="2023-01-01", end="2023-12-31", adjust="all")
d.to_csv(f"{s}_2023.csv")CSV file layout
A typical download stock data CSV file layout from FinzData uses a header row followed by daily or intraday bars. The layout is stable across symbols and intervals, which simplifies ingestion into pandas, Excel or databases.
| Column | Description |
|---|---|
| Date | Trading date in YYYY-MM-DD for daily, timestamp for intraday |
| Open | Open price for the bar |
| High | High price for the bar |
| Low | Low price for the bar |
| Close | Close price for the bar |
| Adj Close | Adjusted close per adjust parameter |
| Volume | Share volume for the bar |
When you download stock data CSV via REST with format=csv, the file is ready to open in spreadsheet tools. When you use pandas to_csv, you control index, quoting and encoding.
Free samples and explore
Free 10-row samples are available at https://finzdata.com/samples. Live charts are at https://finzdata.com/explore. The free tier provides last 12 months of every dataset with 1,000 API calls/day and no card required.
Coverage includes 16,000+ US stocks going back more than 26 years, history starts January 2000 including delisted names survivorship-free, 231 ETFs, daily, hourly, 5-minute and 1-minute bars. Prices are stored as traded with splits and dividends published and applied on read.
Samples help you validate column names, date formats and adjustment behavior before running a full download stock data CSV job for your universe.
Batch download tips
For multiple symbols, loop over tickers and write one CSV per symbol or concat to a single file. Use to_csv with mode='a' for append and header=False after the first write. Respect rate limits on the free tier and consider paid look-back bundles for longer history.
Paid look-back bundles: $195 for the first 5 years, $95 for each further 5 years, plus $19.95/month for daily updates. Institutional: $975 once plus $59.95/month. The free tier remains last 12 months.
When you download stock data CSV for backtesting, keep adjust consistent across symbols and periods. Store raw and adjusted versions separately if you need both views. Document the interval, adjust mode and as-of date in the filename for reproducibility.
Frequently asked questions
How do I download stock data CSV with FinzData?
Use REST with format=csv or the Python client. With REST, add format=csv to /v1/prices. With Python, import finzdata as yf, call Ticker.history or Client.prices, then df.to_csv('file.csv').
What columns are in the CSV?
Date, Open, High, Low, Close, Adj Close, Volume. Intraday intervals use timestamp and the same price columns. The layout is consistent across symbols.
How do adjustments work?
Prices are stored as traded. On read use adjust='none' for raw, adjust='splits' for split-adjusted, adjust='all' for splits and dividends. Adjustments are applied on read.
Can I get delisted stocks as CSV?
Yes. Coverage is survivorship-free with 16,000+ US stocks back to January 2000 including delisted names. You can download stock data CSV for delisted tickers via REST or Python client.
Is there a free sample CSV?
Yes. Free 10-row samples are at https://finzdata.com/samples. Free tier includes last 12 months, 1,000 API calls/day, no card. Docs are at https://finzdata.com/docs.
How far back can I download?
Free tier: last 12 months. Paid look-back bundles extend history. Institutional plan is $975 once plus $59.95/month. Pricing details are at /pricing.