# HistoricalData.net > Downloadable historical US stock and options data in CSV. Stock products contain > daily and 1-minute bars, including covered delisted securities. Options products > contain end-of-day option chains with documented IV and Greeks calculations. > Historical archive purchases and ongoing update subscriptions are separate offers. > Sample values are reconciled with independent public records (Cboe official index > closes; public quote records for stocks and ETFs); dated results and the disagreements > found are published at https://historicaldata.net/methodology.html#reconciliation. > A fixed panel of stocks, ETFs and option chains is checked against Cboe Global Markets > quotes after every US trading session; dated results are published on the same page. ## Coverage and tools - [Stock and options coverage lookup](https://historicaldata.net/#lookup) - [Coverage API & MCP documentation](https://historicaldata.net/api.html) - [OpenAPI specification](https://historicaldata.net/openapi.json) - REST GET https://historicaldata.net/api/symbol/{symbol}?product=all accepts one ticker, underlying or option root; product can be all, stocks or options. - REST GET https://historicaldata.net/api/status returns source-dated v2 statistics. - REST GET https://historicaldata.net/api/catalog returns products, public offers, sample links and status. It does not create orders or download files. - MCP URL: https://historicaldata.net/mcp (Streamable HTTP, no authentication). Initialize with protocol 2025-06-18 (2025-03-26 remains supported), send notifications/initialized, then tools/list. Send the negotiated MCP-Protocol-Version on subsequent requests. Tools: search_symbol, search_symbols (up to 10 symbols), get_status, get_catalog, get_pricing, get_free_sample, get_dataset_schema, preview_sample. Modern results include structuredContent and outputSchema; the same JSON remains in text content. Old clients receive text content only. The service returns JSON to POST; GET returns 405 because no SSE stream is offered. Newer protocol requests do not support JSON-RPC batches. ## Interpreting results - The homepage starts with a dated AAPL example embedded in static HTML. For a fresh result for a requested symbol, use GET /api/symbol/{symbol}?product=all or the MCP search_symbol tool; retain the result's symbol, date and scope. - Stock firstDate/lastDate are the first and last dated rows in each matching daily file, not a guarantee of every trading day or the same coverage for minute files. Some rows may record corporate actions without trading. A reused ticker can identify separate listing files; confirm the security identity before joining. - Options lookup checks only the latest published session. Its row count belongs to the resolved underlying on latestDate. Root mapping applies to that session, not automatically to earlier history. found=false does not exclude older coverage. - Check unavailable before found in symbol results and available in status results. Failed queries are not evidence of missing coverage. Keep source dates and scope when citing results; options statistics can lag the latest session. - Use /api/catalog offers or get_pricing for public amounts and billing periods. Prices are USD for a single user; the response includes license multipliers. Confirm the selected product, license and final checkout total before purchase. - These public tools expose metadata and, through preview_sample, a few fixed rows of the free samples. They do not return purchased stock bars or chain rows, personal orders or download credentials; get_free_sample returns URLs rather than downloading. - On 429 honor Retry-After; on 503 retry later. MCP tools can return isError=true inside an HTTP 200 response. Inspect JSON-RPC errors as well. ## Products and samples - [Stock data](https://historicaldata.net/stocks.html): archive coverage begins October 2003; per-security coverage varies. Daily and minute fields include raw and adjusted prices and recorded corporate actions. See field definitions and coverage notes. - [Options data](https://historicaldata.net/options.html): archive coverage begins February 2002, with daily CSV files containing quotes, trading activity, IV and Greeks. Field availability and quote-timing conventions are documented on the product page; these end-of-day observations are not synchronized intraday snapshots. - [Free samples](https://historicaldata.net/samples.html): July–December 2022 extracts. Stocks: TSLA, KO, SPY, TWTR; 17 daily and 18 minute columns. Options: TSLA, KO, SPY, SPX including separate SPXW values in these sample files; 34 columns. Files use the paid archive schema. TWTR's stock history ends within the sample. ## Analyze downloaded files locally - [Local MCP setup and analysis limits](https://historicaldata.net/api.html#delivery) - Download mcp.py from the setup page. Python 3.10+, standard library only. A stdio MCP client launches it with --root pointing to a dedicated dataset folder. Tools: list_files, read_csv, summarize_csv. No network calls, writes, credentials, account login or purchase verification. Requested results reach the MCP client and may reach its AI provider; use an environment permitted by the license. - Analyze one recognized CSV at a time, with exact-case filters and date bounds. Results include the actual source SHA256 and complete-scan counts. Empty numeric cells are excluded, not zero-filled; all-empty aggregates are null. Summaries use decimal arithmetic. Do not join reused tickers or infer that data defects are fixed. - Defaults: 512 MiB per file, 30 seconds per scan, 100 rows per page, 100 groups. Scans exceeding limits fail without partial results. Pagination requires the prior file hash. Hosted OAuth access to purchased data is not currently provided. ## Delivery and refunds - All HistoricalData.net historical stock and options archive download links are valid for 21 days from purchase. Expired archive links can be replaced free on request. - Full or partial usage-based archive refund requests must be submitted within 21 days of purchase. No data downloaded means a 100% refund; after downloading, the refund follows the published usage table. Stock usage is counted by data file. An options calendar month counts only when all daily files available for that month within the purchased archive have been downloaded. A partially downloaded month counts as zero months. If no options month has been fully downloaded, the usage-based refund is 100%. - Replacing or extending a download link does not restart or extend the refund application period. Included updates and monthly subscriptions retain their own access periods; the archive deadlines do not define those periods. - Cancelling a monthly update subscription stops future billing; the month already billed is not refunded on cancellation. If purchased data cannot be made available, the independent full-refund delivery commitment applies. - REST /api/catalog returns offers.archiveDownloadDays and offers.archiveRefundRequestDays (both 21), plus offers.refundPolicyUrl and offers.refunds. MCP get_pricing returns these fields directly, without offers. - [Delivery and refund terms](https://historicaldata.net/terms.html#refund) ## Documentation and research - [Methodology](https://historicaldata.net/methodology.html): sources, adjustments, pricing models, time conventions, validation and historical coverage notes. - [Independent source reconciliation](https://historicaldata.net/methodology.html#reconciliation): reconcile.py (https://historicaldata.net/reconcile.py) compares local files with Cboe official index closes and a public secondary quote source. Dated results for the 2022 samples are listed with their populations and disagreements; agreement with a secondary source is corroboration, not an exchange-source audit. - [Daily check against Cboe quotes](https://historicaldata.net/methodology.html#reconciliation): after every US trading session, the high, low and close of a fixed panel of stocks and ETFs and the end-of-day values of a fixed panel of option chains are compared with Cboe Global Markets delayed quotes captured that evening. Dated results, including any disagreements, are published with the reconciliation table as each session is processed. - [Independent verification summary](https://historicaldata.net/about.html#verification) - [Market data reference](https://historicaldata.net/reference.html): market conventions and dated measurements. Sample findings are not universal market statistics. - [Evaluating historical market data](https://historicaldata.net/choosing.html) - [Reducing survivorship bias](https://historicaldata.net/survivorship.html) - [Preparing options data for volatility research](https://historicaldata.net/volatility.html) - [FAQ](https://historicaldata.net/faq.html) - [Terms and license](https://historicaldata.net/terms.html#license) - [Privacy](https://historicaldata.net/privacy.html) - [About and contact](https://historicaldata.net/about.html) - [Stock delivery README](https://historicaldata.net/api/docs/stocks/README.md) - [Options delivery README](https://historicaldata.net/api/docs/options/README.md)