# MarketParquet > Historical OHLCV (open, high, low, close, volume) market data for US stocks, ETFs, and futures, delivered as Apache Parquet files. Split-adjusted (dividends are not embedded in prices), survivorship-bias-free (delisted tickers included), multiple timeframes, 2000-present. Buy the archive once -- no subscription. MarketParquet sells ready-to-use historical price data for quantitative research and backtesting. Data ships as date-partitioned Parquet files (one file per trading day containing every symbol), so it loads directly into pandas, polars, DuckDB, or Spark with no parsing or cleanup. Site: https://marketparquet.com ## For AI agents - Need one thing, not the whole file? GET https://marketparquet.com/llms?query= returns only the matching sections of this document as plain text (JSON: /llms/json?query=). Examples: ?query=pricing, ?query=parquet schema, ?query=delisted, ?query=futures. - The full text (this index plus FAQ, comparisons and a Python quick start) is https://marketparquet.com/llms-full.txt. - No account needed to try the data: the newest daily file (https://marketparquet.com/api/data/download/stock_daily/latest.parquet, every US stock) and the intraday sample pack (https://marketparquet.com/api/data/sample/intraday_sample.zip: one fixed week, 30 flagship symbols, 1-min to 1-hour, same layout as the archive; per-asset zips and the symbol list in /api/data/sample/manifest.json). ## Pricing - Free Sample -- $0: daily (EOD) bars for the last 365 days, unlimited downloads, API at 60 requests/min, plus a fixed intraday sample pack (1 week, 30 symbols). - Complete Archive -- $79 one-time: full history on all timeframes including intraday (1-min, 5-min, 30-min, 1-hour) and daily (EOD) back to 2000, all asset classes, perpetual access. - Keep Current -- $15/month (optional add-on): each new trading day's bars going forward after purchase, plus the MCP server for AI coding agents (see below). There is no subscription for the historical archive; you buy once and keep the data forever. ## Data coverage - US Stocks: 16,000+ tickers (8,500 of them delisted, stored under a -DELISTED suffix; NYSE, NASDAQ, AMEX), daily history from January 2000. - US ETFs: 5,000+ tickers including delisted funds (sector, leveraged, bond, and more), from January 2000. - Futures: ~130 of the most active contracts (ES, NQ, CL, GC, ZN, ...), continuous ratio-adjusted, from December 2007. The source rolls before expiry when volume migrates and does not publish roll dates; every roll observed is published with its ratio in meta/futures_rolls.parquet and the source's contract-by-day calendar in meta/futures_contract_calendar.parquet. All published history sits on one ratio-adjusted basis (see https://marketparquet.com/data-quality). - 21,000+ symbols in total; recent files hold ~6,800 stocks, ~4,300 ETFs and ~130 futures. - Timeframes: 1-minute, 5-minute, 30-minute, 1-hour, and daily (EOD). - Stocks and ETFs are split-adjusted; cash dividends are not embedded in prices. The source's split factors also cover stock dividends and, case by case, a large spin-off (DD/Qnity 2025-11-03); see https://marketparquet.com/data-quality. Delisted securities are included (no survivorship bias). - New data is added the same night after every trading session, typically by midnight ET. - Corporate actions: every split adjustment applied to the archive and every newly delisted ticker is listed with its date on https://marketparquet.com/changelog. Files are rewritten when a split is applied; the signed download response carries an ETag equal to the file's MD5 and a Last-Modified header, so a client can detect a new version. ## Parquet schema - Intraday files (1min/5min/30min/1hour) columns: timestamp (TIMESTAMP[us], US/Eastern bar open time), symbol (STRING), asset_type (STRING), open, high, low, close, volume (all FLOAT64). - Daily files: a date (DATE) column in place of timestamp, then symbol, asset_type, open, high, low, close, volume. (Daily files dated before 2026-03-27 use a legacy timestamp (TIMESTAMP[us]) column instead of date; normalize with union_by_name + COALESCE when spanning the boundary.) - File path convention: by_date/{asset}_{timeframe}/YYYY-MM-DD.parquet (snappy-compressed), e.g. by_date/stock_1min/2024-01-15.parquet. ## Key pages - [Historical US stock data](https://marketparquet.com/data/stocks): 16,000+ tickers incl. delisted, 1-min to daily, 2000-present. - [Historical US ETF data](https://marketparquet.com/data/etfs): 5,000+ tickers incl. delisted, 1-min to daily, 2000-present. - [Historical futures data](https://marketparquet.com/data/futures): ~130 contracts, continuous ratio-adjusted, Dec 2007-present. - [Delisted stock data](https://marketparquet.com/data/stocks/delisted): survivorship-bias-free stock history with delisted tickers included. - [Intraday stock data](https://marketparquet.com/data/stocks/intraday): US stock 1-minute, 5-minute, 30-minute, and 1-hour bars. - [Continuous futures data](https://marketparquet.com/data/futures/continuous): ratio-adjusted futures history from Dec 2007-present. - [Data quality](https://marketparquet.com/data-quality): gap detection, duplicate screening, price validation, and volume-consistency checks. - [Changelog](https://marketparquet.com/changelog): dated record of split adjustments applied and delisted tickers added, listed by ticker with ratio and effective date. - [Guide: yfinance limitations for backtesting](https://marketparquet.com/guides/yfinance-limitations-backtesting): when a reproducible Parquet archive is a better yfinance alternative. - [Guide: DuckDB stock data Parquet](https://marketparquet.com/guides/duckdb-stock-data-parquet): query OHLCV Parquet files directly with SQL. - [Guide: Polars market data Parquet](https://marketparquet.com/guides/polars-market-data-parquet): lazy-load market data with Polars. - [Guide: build a local market data lake](https://marketparquet.com/guides/build-local-market-data-lake): organize stock, ETF, and futures files by date locally. - [Guide: backtrader with Parquet data](https://marketparquet.com/guides/backtrader-parquet-data): daily and 5-minute PandasData feeds from per-day Parquet files. - [Guide: vectorbt with Parquet data](https://marketparquet.com/guides/vectorbt-parquet-data): build the symbols-by-dates close matrix and run a portfolio backtest. - [Guide: download all historical US stock data](https://marketparquet.com/guides/download-all-historical-stock-data): archive sizes per timeframe and the one-command manifest loop. - [Guide: free historical stock data](https://marketparquet.com/guides/free-historical-stock-data): the free tier is about a year of daily files for every US ticker, no card. - [All guides](https://marketparquet.com/guides): index of every guide. - [Symbol pages](https://marketparquet.com/data/symbols): per-ticker data pages (SPY, QQQ, TLT, ES, NQ, CL, GC, AAPL, NVDA, TSLA, ...) with coverage dates, live sample bars, splits applied and loading code, e.g. https://marketparquet.com/data/etfs/spy and https://marketparquet.com/data/futures/es. - [Pricing](https://marketparquet.com/pricing): Free Sample, Complete Archive ($79 one-time), and optional Keep Current ($15/month). - [FAQ](https://marketparquet.com/faq): data quality, adjustments, format, timezones, pricing, coverage. - [Documentation](https://marketparquet.com/documentation): file format and Python (pandas/polars/DuckDB) + API usage. - [About](https://marketparquet.com/about): what MarketParquet is and what's included. - [MCP server](https://marketparquet.com/mcp): remote Model Context Protocol server for AI coding agents (Claude Code, Codex, Cursor, opencode): search symbols, fetch bars, run DuckDB SQL server-side, get bulk download URLs. Data tools are included with Keep Current. ## Comparisons Honest side-by-side comparisons of MarketParquet vs other market data providers (full index: https://marketparquet.com/vs): - [MarketParquet vs Massive (formerly Polygon.io)](https://marketparquet.com/vs/polygon): bulk Parquet archive vs real-time market-data API; also explains the October 2025 Polygon.io -> Massive rebrand. - [MarketParquet vs Databento](https://marketparquet.com/vs/databento): flat-fee bulk Parquet vs usage-priced, exchange-direct HFT data (US-equity tick history from 2018). - [MarketParquet vs FirstRate Data](https://marketparquet.com/vs/firstrate): two bulk historical-file vendors compared -- Parquet and $79 vs zipped CSV with broader assets and tick data. - [MarketParquet vs Kibot](https://marketparquet.com/vs/kibot): Parquet plus complete delisted coverage vs very deep, cheap CSV history (daily back to 1962). - [MarketParquet vs Norgate Data](https://marketparquet.com/vs/norgate): intraday Parquet at a one-time price vs an end-of-day-only subscription for AmiBroker/RealTest. - [MarketParquet vs Tiingo](https://marketparquet.com/vs/tiingo): bulk Parquet vs API-first EOD + news data. - [MarketParquet vs EODHD](https://marketparquet.com/vs/eodhd): bulk US Parquet vs a global EOD + fundamentals API subscription. - [MarketParquet vs Alpha Vantage](https://marketparquet.com/vs/alpha-vantage): bulk download vs rate-limited free API. - [MarketParquet vs Finnhub](https://marketparquet.com/vs/finnhub): bulk OHLCV vs an API that moved US stock candles behind a paywall (~2025); Finnhub is strong on fundamentals and alternative data. - [MarketParquet vs Twelve Data](https://marketparquet.com/vs/twelve-data): bulk Parquet with deep intraday vs a credit-metered multi-asset API (intraday only from ~2022). - [MarketParquet vs Financial Modeling Prep (FMP)](https://marketparquet.com/vs/fmp): bulk price Parquet vs a fundamentals-first API (30-year history on paid tiers). - [MarketParquet vs Intrinio](https://marketparquet.com/vs/intrinio): one-time bulk Parquet vs a premium API platform (SEC-sourced fundamentals; was IEX Cloud's referral partner). - [MarketParquet vs Alpaca](https://marketparquet.com/vs/alpaca): bulk backtesting archive (history from 2000) vs a live-trading market-data API (from 2016). - [MarketParquet vs Yahoo Finance / yfinance](https://marketparquet.com/vs/yahoo-finance): reliable archive vs free unofficial scraper. - [MarketParquet vs Nasdaq Data Link (formerly Quandl)](https://marketparquet.com/vs/quandl): a live, daily-updated Parquet archive vs a dataset marketplace whose free WIKI feed froze in 2018. - [MarketParquet vs IEX Cloud](https://marketparquet.com/vs/iex-cloud): a historical-data replacement for IEX Cloud, which shut down on August 31, 2024. ## API - Start here (no auth): GET https://marketparquet.com/api/v1/ returns a JSON map of every endpoint, the auth header and the asset type names; GET https://marketparquet.com/api/v1/openapi.json is the OpenAPI 3 document for the public routes. - Base URL: https://marketparquet.com/api/v1 - Auth: HTTP header `Authorization: Bearer bt_YOUR_KEY` (create a key at https://marketparquet.com/account; keys start with bt_). A 401 means the header is missing or the key was pasted wrong. - Creating a key without a browser (agents acting for a user): POST https://marketparquet.com/auth/register or POST https://marketparquet.com/auth/login with JSON `{"email": ..., "password": ...}` -- a 200 sets the `access_token` cookie; then POST https://marketparquet.com/auth/api-keys with that cookie and JSON `{"name": "my script"}` -> `{"key": "bt_..."}`. The key is returned once; store it. There is no /api/v1/keys route. - Rate limits: 60 requests/min (free), 600 requests/min (paid). Over the limit: HTTP 429 with a Retry-After header. - Asset type names: stock_1min, stock_5min, stock_30min, stock_1hour, stock_daily, etf_1min, etf_5min, etf_30min, etf_1hour, etf_daily, futures_1min, futures_5min, futures_30min, futures_1hour, futures_daily. - Endpoints: GET /api/v1/assets (every dataset with file counts, date range and your plan's access window -- call this first), GET /api/v1/dates/{asset_type}?page=1 (available dates, 100 per page, newest first), GET /api/v1/download/{asset_type}/{YYYY-MM-DD} (302 to a 60-second presigned URL for that day's Parquet file), GET /api/v1/manifest/{asset_type}?start=YYYY-MM-DD&end=YYYY-MM-DD (presigned URLs for every file in the range, valid 60 minutes, up to 400 files per call -- the way to fetch many files; one calendar year fits one call, so loop the years for full history). - Bulk download, whole archive of one dataset (bash + jq): for y in $(seq 2000 2026); do curl -s -H "Authorization: Bearer bt_YOUR_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 - Per-symbol files (free account, any plan): GET https://marketparquet.com/api/data/symbol/{etfs|futures|stocks}/{symbol}/daily.parquet -> 302 to one Parquet file with that symbol's daily bars for the last 365 days (the free window), rebuilt nightly, for the symbols with pages at https://marketparquet.com/data/symbols (e.g. /api/data/symbol/futures/nq/daily.parquet). Browser session or `Authorization: Bearer bt_...`. - Free accounts can call every endpoint; the date ranges returned are clamped to the plan (free = last 365 days of daily bars; intraday is in the Complete Archive, see the sample pack above for the format). ## MCP server (AI coding agents) - Endpoint: https://marketparquet.com/mcp (MCP Streamable HTTP, protocol 2025-06-18), header `Authorization: Bearer bt_YOUR_KEY`. Setup snippets for Claude Code, Codex CLI, Cursor, opencode and Kimi: https://marketparquet.com/mcp - Tools: list_datasets (any key), list_symbols, get_bars, query_sql (read-only DuckDB SQL server-side over a `bars` view: 320 daily or 8 intraday files per query, 200 rows, 90 s), get_download_url, get_download_urls (400 daily / 25 intraday presigned files per call). - The data tools are included with the Keep Current plan ($15/mo); any valid API key can connect and call list_datasets. Intended loop: research a signal with query_sql, bulk-download the range with get_download_urls, run the backtest locally. ## Support - Email support@marketparquet.com (replies to any MarketParquet email also reach it). Refund policy: https://marketparquet.com/refund-policy. License: https://marketparquet.com/license.