One financial market data API instead of five vendors
Most research stacks are stitched together: one source for prices, another for fundamentals, a scraper for 13F filings, a spreadsheet for COT reports and a FRED export for macro. Each join is a place where look-ahead bias or survivorship bias can creep in. FinzData puts all of it behind a single financial market data API with consistent identifiers and a consistent notion of time.
The price history covers US stocks listed on NYSE and Nasdaq since January 2000, including more than 8,500 delisted symbols and 231 ETFs. Because delisted companies stay in the universe, backtests are not silently restricted to survivors — the classic mistake that overstates returns because failures are missing from the test set. Bars are available at 1-minute, 5-minute, 30-minute, hourly and daily resolution.
If you only need prices, the dedicated stock API and market data API pages go deeper on bar sizes and delivery. This page is about the broader picture: prices plus everything else a fundamental or macro-aware strategy needs.
Fundamentals API: SEC financial statements, point in time
The fundamentals API stores SEC financial statements point in time. Each value is kept as it was first reported and becomes usable only after the filing's acceptance time. When a company restates, the restatement is a new record; the original figure stays in the history. A backtest that asks for revenue as of a past date gets the number an investor could actually have seen that day, not the number that was later revised.
This matters more than it looks. Look-ahead bias — using information that was not available at the decision time — is one of the most common ways backtests lie. Restated financials and revised macro data are two of the biggest sources. Point-in-time storage removes both by construction: every value is stored as it was known on each date.
On top of the raw statements, FinzData computes daily point-in-time valuation metrics per stock: P/E, EV/EBITDA, P/B, P/S and dividend yield, each derived from SEC filings and closing prices. Because both inputs are point in time, the ratios are too — you can rank a universe by EV/EBITDA as of any historical date and trust that the ranking uses only what was known then.
13F data API: every manager, every quarter since 2013
The 13F data API covers every filing manager for every quarter since 2013 Q2. You can pull a manager's holdings history, or flip the direction and ask which managers owned a given stock in a given quarter. The free tier includes the latest quarter of 13F ownership by stock; full history is in the paid plans and in the shop, where a single manager's history starts at $29 and a manager style (the 200 largest holdings of the style) at $99.
Macro data API with every vintage
The macro data API exposes more than 20,000 FRED and ALFRED series with every vintage preserved. ALFRED keeps each vintage of a FRED series, so you can request GDP or CPI as it was published on a specific date rather than the fully revised modern series. For backtesting macro-sensitive strategies this is the difference between testing on what was known and testing on what was later rewritten. Money, liquidity and capital-flow series are included in the look-back bundles.
CFTC Commitments of Traders data is included back to 1986, so positioning can be joined against prices and macro in the same query layer.
Coverage table
| Dataset | Coverage | History | Point-in-time |
|---|---|---|---|
| US stock bars | NYSE & Nasdaq, incl. 8,500+ delisted symbols, 231 ETFs | Since Jan 2000 | Survivorship-free universe |
| Bar sizes | 1m, 5m, 30m, hourly, daily | Since Jan 2000 | — |
| SEC fundamentals | US filers | Full filing history | As first reported, usable after acceptance time |
| Valuation metrics | P/E, EV/EBITDA, P/B, P/S, dividend yield | Daily | Computed from filings and closes |
| 13F holdings | Every filing manager | Since 2013 Q2 | Quarterly filings |
| CFTC COT | All reportable markets | Since 1986 | As published |
| Macro (FRED/ALFRED) | 20,000+ series | Full series history | Every vintage kept |
FinzData does not provide tick, order-book or real-time streaming data. If you need exchange-licensed tick and order-book feeds, a vendor such as Databento covers that niche; FinzData is built for daily-and-intraday-bar research with fundamentals, positioning and macro in one place.
A free financial data API tier that is actually useful
The free financial data API tier includes 1,000 calls per day with no card required. It covers the last 12 months of daily US stock bars, COT, SEC fundamentals and US macro series, plus the latest quarter of 13F ownership by stock. It is enough to prototype a strategy, build a screener or evaluate the data before paying anything.
When you need depth, the look-back bundle is a one-time purchase: $195 for the first 5 years of the full US stock universe (daily and hourly bars, every ticker), $95 for each further 5 years, and $19.95 per month for updates. Ten years costs $290 one-time; 30 years costs $670 and adds 1-minute and 5-minute bars. Stopping updates keeps the history you bought. Single tickers in the shop start at $19 for 5 years, with volume discounts of 25% at 10+ tickers and 50% at 50+. Delivery is CSV, JSON or Parquet, with batch downloads and per-year files on the look-back plan.
Python: one client for prices and fundamentals
The Python client installs with pip install finzdata and follows a familiar pattern. It also accepts yfinance-style arguments such as auto_adjust on Ticker.history, so porting existing scripts is straightforward — see the yfinance comparison for where the data models differ.
import finzdata as fd
# Daily bars for one ticker, adjusted like yfinance
aapl = fd.Ticker("AAPL").history(
interval="1d",
start="2015-01-01",
auto_adjust=True,
)
# Intraday bars
aapl_1m = fd.Ticker("AAPL").history(interval="1m", start="2015-01-01")
# Batch download a watchlist
df = fd.download(["AAPL", "MSFT", "NVDA"], start="2020-01-01", interval="1d")
Full method references are in the documentation, and the datasets page lists every table with its coverage. For the bias mechanics behind the universe construction, read the guide to survivorship-bias-free stock data. If you are comparing sources, the historical stock data page covers bulk history formats.
MCP access for AI agents
FinzData exposes a remote MCP server at https://api.finzdata.com/mcp (a local server is available via pip install finzdata-mcp). The endpoint exposes exactly 11 tools: search_datasets, describe_dataset, get_universe, get_bars, get_fundamentals_pit, get_macro_vintage, get_cot, get_13f, get_events, run_backtest and compare_runs. Every tool takes an as_of parameter, so an agent can only see what was knowable at the simulated decision time — a direct guard against the look-ahead bias that research (arXiv 2601.13770) has found in LLM financial forecasting.
run_backtest executes server-side and returns a deflated Sharpe report: the annualised Sharpe, the Sharpe expected from luck alone given how many distinct specs your API key has run, and the deflated Sharpe ratio of Bailey and López de Prado (2014), which adjusts for the number of variants tried and for non-normal returns. The verdict field reads "likely real" at DSR ≥ 0.95, "inconclusive" at ≥ 0.5, and "likely overfit" below that. A blind mode hides tickers in the output so you cannot cherry-pick by name. Every result carries snapshot ids that can be cited or replayed, so responses are reproducible against the same data snapshot.
Agents get 100 data calls and 5 backtests per day free per API key; beyond that, prepaid credits apply at $0.001 per data call and $0.05 per backtest, with identical specs on the same snapshot served from cache and not charged. Keys are issued via POST https://api.finzdata.com/v1/agent/keys and emailed to the owner.
Frequently asked questions
Is there a free financial data API tier?
Yes. The free tier gives you 1,000 API calls per day covering the last 12 months of daily US stock bars, COT, SEC fundamentals and US macro series, plus the latest quarter of 13F ownership by stock. No card is required.
What does point-in-time mean for SEC fundamentals?
Each fundamental value is stored as it was first reported and becomes usable only after the filing's acceptance time. Restatements never overwrite history, so a backtest sees exactly what an investor could have seen on that date.
Does the API include real-time or tick data?
No. FinzData provides 1-minute, 5-minute, 30-minute, hourly and daily bars since January 2000. There is no tick, order-book or real-time streaming data.
Can AI agents use the API?
Yes. A remote MCP server at https://api.finzdata.com/mcp exposes 11 tools, each with an as_of parameter, plus server-side backtests with a deflated Sharpe report. Agents get 100 data calls and 5 backtests per day free per API key.
How much does full history cost?
A one-time look-back bundle starts at $195 for the first 5 years of the full US stock universe, with $95 for each further 5 years. Single tickers start at $19 in the shop. Updates are $19.95 per month, and stopping updates keeps the history you bought.
Get a free API key Buy one ticker from $19
FinzData provides historical data for research and backtesting. Nothing on this page is investment advice.