Choosing a Free Fundamental Data API
Evaluate statements, ratios, filing history, update timing, rate limits, licensing, and point-in-time quality before building a screener or research workflow.
Free fundamental data API: the short answer
A free fundamental data API is best evaluated as a research dataset, not as a collection of isolated company facts. For a screener, factor model, or historical study, the API must identify the correct security and company, align fiscal periods across issuers, preserve filing and revision dates, and make missing observations explainable. A long field list is less useful than a smaller, consistent panel that can be reproduced as of a past research date.
Expect limits on statements, ratios, filing history, company coverage, requests, or commercial usage.
A stock screener, valuation model, research agent, and audit workflow require different fields and history.
Historical research needs the values available on the decision date, including later amendments as separate versions.
Stable entity identifiers, listings, delistings, sector history, and corporate actions prevent silent survivorship and mapping errors.
What can a free fundamental data API cover?
Fundamental data can include entity reference records, company profiles, income statements, balance sheets, cash-flow statements, per-share metrics, valuation ratios, earnings events, corporate actions, and links to regulatory filings. This page focuses on assembling those components into a cross-company research dataset. If the task is only to retrieve one statement or one precomputed ratio, a narrower API can be easier to validate.
Separate the legal issuer from its listed securities. Look for stable company IDs, exchange-qualified tickers, share classes, primary listings, identifier history, listing dates, delisting dates, and merger mappings. A ticker alone is not a durable research key.
Verify annual and quarterly periods, fiscal-year mapping, units, currencies, consolidated scope, and how provider fields map to reported line items. Keep the reported value beside the standardized value so transformations remain auditable.
Determine which ratios, growth rates, per-share values, and forward estimates are calculated by the provider. Each derived field needs a formula, component period, price timestamp where relevant, estimate source, and null policy.
Check filing dates, acceptance timestamps, amendments, restatements, source-document links, and whether historical queries preserve what was known on a chosen date. A database that rewrites history with the latest value is unsuitable for unbiased backtests.
Splits, spin-offs, mergers, symbol changes, fiscal-year changes, and sector reclassifications affect longitudinal comparisons. The API should either provide those events or document how historical series have already been adjusted.
Build the historical universe before calculating factors
A cross-company dataset begins with the securities that actually existed and were investable on each research date. Starting from today's active ticker list excludes delisted, merged, bankrupt, and renamed firms. It can make a weak strategy appear stronger because companies that disappeared from the market also disappear from the test.
Worked example: survivorship bias changes the result
Suppose a 2018 research universe contained 1,200 companies, but only 1,000 remain listed today. If a backtest uses the current list, it silently removes 200 historical constituents. Assume the 1,000 survivors returned 10% on average while the omitted firms returned −30% before delisting or acquisition. The survivor-only average is 10%; the simple full-universe average is (1,000 × 10% + 200 × −30%) / 1,200 = 3.33%. The exact portfolio result depends on weighting and dates, but the direction of the bias is clear.
Align price, enterprise value, and denominator dates
Enterprise value and valuation multiples combine market observations with accounting values. If market capitalization is measured on June 30 but debt and cash come from a report that was not published until August, the factor uses future information. For a June 30 screen, use the latest debt, cash, share count, and EBITDA actually available by the cutoff; record the market timestamp and every component's filing availability time.
The denominator also needs a defined period. Trailing EBITDA, latest annual EBITDA, and forward estimated EBITDA answer different questions. Negative or near-zero denominators can make EV/EBITDA meaningless or extreme; do not rank them as ordinary positive multiples. Banks and insurers may require different valuation fields entirely because debt and operating capital play different roles.
Choose a source strategy, not just a provider name
| Route | Best fit | Main work left to you |
|---|---|---|
| SEC EDGAR and Companyfacts | US primary filings, structured facts, source-level verification, and custom point-in-time ingestion. | Entity history, taxonomy mapping, dimensions, period selection, amendments, derived factors, and non-US coverage. |
| Normalized fundamentals API | Cross-company fields, simpler JSON, ratios, multi-market coverage, and faster screener development. | Verify formulas, point-in-time guarantees, original filing links, universe history, sector exceptions, limits, and rights. |
| Capability routing through QVeris | Agents and applications that need to discover and inspect different statement, ratio, filing, or market-data tools at call time. | Maintain one research contract, expose the chosen provider, and run identical quality tests regardless of the routed source. |
Match the dataset output to the research task
Return the latest available fields, component dates, null reasons, universe status, and formula version; make stale components visible.
Freeze one cutoff date, one historical universe, comparable periods, winsorization rules, and field-availability statistics.
Use availability time rather than fiscal end date, include delisted securities, retain revisions, and delay portfolio formation realistically.
Return source, period, formula, confidence, exclusions, and the next evidence request with every derived conclusion.
Criteria that separate a demo dataset from dependable fundamentals
| Criterion | What to verify | Common free-tier trade-off | Test |
|---|---|---|---|
| Coverage | Companies, markets, fields, periods, and history. | Narrow universe or only recent periods. | Query representative, foreign, and delisted firms. |
| Identity | Company IDs, securities, share classes, listings, and identifier history. | Ticker-only records or no delisting history. | Follow one issuer through a symbol change or merger. |
| Data freshness | Filing timestamps, ingestion delay, revisions, and restatements. | Slow updates or incomplete amendments. | Compare new filings and amendments with primary sources. |
| Point-in-time quality | Availability dates, revisions, version IDs, and historical universe membership. | Only the latest restated snapshot. | Rebuild a screen using only information known on a past date. |
| Limits | Per-minute, daily, concurrent, and endpoint quotas. | Low burst capacity or hard daily caps. | Exercise 429 responses and retry headers. |
| Completeness | Null reasons, sparse fields, sector exceptions, and filing-to-field reconciliation. | Silent gaps represented as zero. | Measure field availability by market, year, and sector. |
| Rights | Commercial use, storage, attribution, and redistribution. | Personal or non-commercial use only. | Read both API terms and upstream data rights. |
A safer integration pattern for free fundamental data
Define the research universe, required fields, earliest history, reporting frequency, freshness target, acceptable null rate, and permitted use. A concrete contract prevents a generous-looking demo response from becoming the production requirement by accident.
Map provider-specific company identifiers, securities, periods, units, currencies, line items, events, and errors into an internal model. Preserve raw values and source references so analysts can trace every normalized figure.
Resolve company and security identities first, then attach statements, metrics, and events to those stable keys. Record unmapped and ambiguous identifiers instead of guessing from a ticker or company name.
Store filing dates, effective dates, amendments, provider versions, and ingestion timestamps. A current snapshot is useful for display, but reproducible screens and backtests require point-in-time versions.
A successful HTTP response does not prove that the dataset remains complete. Track company counts, field availability, stale periods, revision lag, duplicate filings, and unexplained changes in sector or country coverage.
Use QVeris to discover fundamental data capabilities
Provider lists go stale and every API describes itself differently. QVeris helps a research application discover capabilities at call time and inspect their inputs, outputs, and constraints through a more consistent interface. That shortens provider discovery, but it does not replace the dataset contract, point-in-time storage, accounting reconciliation, or licensing review owned by the research system.
- Search by the capability you need—statements, ratios, company profiles, earnings, or filings—not only by a vendor name.
- Inspect inputs, outputs, authentication, and constraints before wiring a capability into an automated workflow.
FAQ
Yes. Free plans often expose selected profiles, statements, ratios, or filings, but limit company coverage, historical depth, requests, endpoints, or commercial usage.
Test reporting periods, currencies, units, restatements, null values, filing dates, standardized line items, pagination, errors, and actual request frequency limits.
It is a versioned record of what investors could actually know on a specified date. It preserves original filings, availability timestamps, and later amendments instead of rewriting the past with the newest value.
Tickers can be reused, changed, or shared across exchanges. Research systems should use stable company and security identifiers plus effective dates for each listing relationship.
Measure field availability across the full target universe by market, sector, year, and reporting frequency. Treat missing, not applicable, not yet filed, and provider error as separate states.
Sometimes, but only if historical universe membership, delistings, original availability dates, and revisions are preserved. A current restated snapshot introduces look-ahead and survivorship bias.
