Financials are live in beta
Financials are now live in beta. Standardized statements, canonical line items, precomputed ratios, and a 90-factor quant library, all point-in-time and source-traceable back to the filing. This is the dataset 3spread was built around, and it is available today on every tier, free for the Community.
Here is what is included and how it works.
Standardized statements
Every 10-K and 10-Q carries three statements: balance sheet, income, and cash flow. Companies file them in their own language, their own ordering, their own level of detail. 3spread extracts the raw XBRL from the SEC submission and maps every line into a canonical grid whose shape is shared across all filers with the same spine. That means statements are directly comparable across companies and across periods, without you writing a single mapping rule.
The grid is served as statement_json on /v1/financials/statements, one row
per validated statement block. Each line carries its value, a source flag
(reported, backfilled, or absent), and the exact XBRL facts behind it. You
can inspect the provenance of any number down to the source tag.
Four spines cover the universe: commercial and industrial, interest spread (banks), insurance, and investment company. The spine is chosen per statement, not per filer, so a bank's balance sheet and income statement can land on different spines when that is the right call.
Canonical line items: 177 metric categories
/v1/financials/metrics serves one entity's line items as a time-series: one
row per non-null line per period. The vocabulary is 177 taxonomy-defined
categories, from total_revenue to operating_income to total_assets. A
missing metric means the company did not report it, never zero. Values are raw
as-filed magnitudes in the filer's currency, not scaled to thousands or
millions.
Precomputed ratios: 31 keys
/v1/financials/ratios serves 31 precomputed ratios as a per-entity
time-series: roe_pct, roa_pct, debt_to_equity, current_ratio,
net_interest_margin_pct, combined_ratio_pct, and more. Which ratios exist
for a company depends on its spine. Banks get net_interest_margin_pct;
insurers get combined_ratio_pct; every spine gets the common profitability,
leverage, and cash-flow set.
A null ratio means "not computable," not zero. The missing_inputs field names
what was absent, so you always know why a number is missing.
The Factor Library: 90 factors with screening
/v1/financials/factors is the quant Factor Library: 90 factors spanning
profitability, growth, cash flow, efficiency, leverage, and composite scores
(Altman Z, Piotroski F, Beneish M). It runs in two modes:
- Per-entity series: pass a
cikortickerand get that company's factors as a version-selected time-series, with precomputed percentile ranks. - Cross-company screen: omit identity, pass a
factor_nameand period, and rank the entire universe by any factor. The percentile rank is precomputed within each sector and period cohort, so a screen is a single bounded call.
/v1/financials/factors/percentile goes deeper: a dynamic point-in-time
percentile that freezes the cohort at a caller-supplied as-of date, so a
backtest sees exactly the rank that was knowable on that day.
Point-in-time, always
Every fiscal period has multiple versions: the original filing, any amendment,
and the comparative column of each later filing that restates it. All are
preserved. The version parameter on /statements, /metrics, and /ratios
lets you select latest, original, or as_of:YYYY-MM-DD. Use as_of for
backtests to avoid look-ahead bias from restatements that arrived later.
Quality scored, not just stored
Every statement block carries a composite quality score and a detailed breakdown: footing (do the lines add up), identities (Assets = Liabilities + Equity, cash flow rolls forward), standardization (how cleanly the filer's lines mapped), and completeness (leaf-value retention above 99.9%). The score is part of the data, so you can filter on confidence rather than guessing.
Null-faithful throughout
If a company does not report a line item, the API says so. A null with a reason flag, not a fabricated zero. This matters everywhere, but especially when a number feeds a ratio, a screen, or a backtest.
What is available today
/v1/financials- List validated filings for a company or date range./v1/financials/statements- Statement grid, one row per validated block./v1/financials/statements/{block_id}- Point read of a single statement block./v1/financials/{filing_id}- Filing detail with every block it reported./v1/financials/metrics- Line-item time-series (177 categories)./v1/financials/categories- Metric category vocabulary./v1/financials/ratios- Ratio time-series (31 ratios)./v1/financials/ratios/names- Ratio name vocabulary./v1/financials/factors- Factor sheet (90 factors, per-entity or cross-company)./v1/financials/factors/names- Factor name vocabulary./v1/financials/factors/percentile- Dynamic point-in-time percentile rank.
All 11 endpoints are wrapped in py3spread
v0.3.0 as client.financials, with typed method signatures and automatic
pagination. pip install py3spread and you are one import away from every
endpoint above.
What is coming next
This is a beta release. The coverage and quality are strong across the bulk of the filing universe, and we are actively improving our internal financial modeling systems to push accuracy and coverage higher on the long tail of less standardized filings. Over the coming months, expect iterative improvements to statement standardization, factor coverage, and ratio computation as those upgrades roll out. We will post updates here as they land.
Getting started
- Install py3spread with
pip install py3spread. Version 0.3.0 adds theclient.financialsresource, wrapping all 11 endpoints with typed method signatures and automatic pagination. See the client documentation and the financials example script. - Read the docs at 3spread.com/docs for the endpoint reference and example queries.
- Try the Python guides: Pull standardized financial statements and Screen companies by factor scores.
- Sign up for a free account and provision an API key at 3spread.com/auth/signup.
- Join the community on Discord and tell us what you want from the next iteration.
Every dataset, free for individuals.