Free historical stock data: a year of daily bars for every US ticker

The free tier is not a teaser table. It is the real daily files: every US stock, ETF and futures contract, split-adjusted, delisted names included, for roughly the last 365 days, current through 2026-09-16. No card, and the files are the same Parquet the paid archive uses, so code written against them keeps working.

Try it before signing up

The newest 7 days of daily files are downloadable with no account at all. One command, one file, every ticker:

> try it — free, no signup:

curl -LO https://marketparquet.com/api/data/download/stock_daily/2026-09-16.parquet

2026-09-16 close · 6,533 US stocks · download

datesymbolopenhighlowclosevolume
2026-09-16AAPL332.53335.48330.7332.4135981000.0
2026-09-16MSFT493.03495.97487.23490.316670285.0
2026-09-16NVDA214.14216.76212.5213.996563590.0
2026-09-16AMZN248.1249.26244.3245.9633488488.0
2026-09-16GOOGL347.08348.4340.64342.8718928864.0

real rows from this file · see all 50 rows →

What the free account includes

DatasetFree windowSymbols
stock dailylast ~365 daysevery US stock, delisted included
ETF dailylast ~365 daysevery US ETF
futures dailylast ~365 days~130 continuous contracts
intraday (1-min to 1-hour)Complete Archive only
daily history before the windowComplete Archive only

Each daily file holds one row per symbol with date, symbol, asset_type, open, high, low, close, volume. Prices are split-adjusted; dividends are not embedded. Delisted tickers stay in the files through their last trading day, so even the free year is survivorship-bias-free.

Download the free year in a minute

Register, create an API key on the account page, then either click through the browse pages or script it. Free dates return a download; dates outside the window return 403 so a script can simply stop there:

  export KEY=mp_live_...
  mkdir -p by_date/stock_daily && cd by_date/stock_daily
  for y in 2025 2026; do
    curl -s -H "Authorization: Bearer $KEY" \
      "https://marketparquet.com/api/v1/manifest/stock_daily?start=$y-01-01&end=$y-12-31" \
    | jq -r '(.files // [])[] | "\(.download_url) -o \(.filename)"' \
    | xargs -P8 -n3 curl -s --retry 3
  done

The manifest only lists dates your account may download, so the same loop works unchanged after an upgrade; it just returns more years.

> Create a free account

What a year of free data is good for

  • Validating a pipeline end to end: schema, joins, calendar handling, corporate actions, before paying for history.
  • Cross-sectional work that only needs recent data: screens, factor snapshots, correlation matrices across every listed name.
  • Checking another vendor: the free files are the same bars customers pay for, so a mismatch with your current source is worth investigating.
  • Teaching and notebooks, where a reproducible file beats a rate-limited API.

When the free tier is not enough

Backtests need history and, usually, intraday bars. The Complete Archive is a one-time $79 for every timeframe and the full history back to 2000 (futures from December 2007); Keep Current is an optional $15 a month for the nightly files after that. The bulk download guide shows sizes and the same one-command loop over the whole archive.

FAQ

Is a card required?

No. A free account is an email address or a Google sign-in.

Is the free data delayed or sampled?

No. It is the same nightly file the paid tier gets, complete for every symbol; only the date range is limited.

Can I use the free data commercially?

The license covers both tiers; the short version is internal research and products built on derived results are fine, redistribution of the files is not.

Which format?

Apache Parquet, readable by pandas, Polars, DuckDB, R (arrow), Spark and anything else that speaks Parquet. CSV export of a preview is available on each file's preview page.

Related

download the whole archive · yfinance limitations · symbol pages · pricing