What's in the datasets
Two datasets, one catalog: financial fundamentals (Free tier and up) and the smart-money dataset — insider and institutional ownership filings, on the Institutional tier. Browse every queryable field, its SEC XBRL tag, and how the tables relate.
Schema Browser
How the catalog tables relate
entity is the hub; every fact ties back to it and to the SEC filing it came from. Hover or focus a table to highlight its joins.
Relationships (text)
securityreferencesentityviaentity_id → cik(many → 1)filingreferencesentityviaentity_id → cik(many → 1)factreferencesentityviaentity_id → cik(many → 1)factreferencesfilingviaaccession_id(many → 1)factreferencesstandard_conceptviastandard_concept(many → 1)standard_conceptreferencestaxonomy_guideviastandard_concept(many → 1)ratioreferencesentityviaentity_id → cik(many → 1)referencesreferencesentityviacik(many → 1)index_membershipreferencesreferencesviacik = cik(many → 1)
Field reference
| Field Name | Type | Table | Description | SEC Tag |
|---|---|---|---|---|
cik | VARCHAR | references | SEC Central Index Key — 10-digit unique company identifier (from entity) | dei:EntityCentralIndexKey |
name | VARCHAR | references | Legal registered company name (from entity) | dei:EntityRegistrantName |
sector | VARCHAR | references | Broad market sector (from entity) | — |
industry | VARCHAR | references | Industry classification description (from entity) | — |
sic_code | VARCHAR | references | Standard Industrial Classification code 4-digit (from entity) | dei:EntitySICCode |
status | VARCHAR | references | Entity status: ACTIVE, INACTIVE, or DELISTED (from entity) | — |
entity_type | VARCHAR | references | SEC-defined filer category (from entity) | — |
security_id | INTEGER | references | Surrogate PK of the security record (from security) | — |
symbol | VARCHAR | references | Exchange ticker symbol (from security) | dei:TradingSymbol |
exchange | VARCHAR | references | Stock exchange name e.g. NASDAQ, NYSE (from security) | — |
mic | VARCHAR | references | Market Identification Code ISO 10383 (from security) | — |
valid_from | DATE | references | SCD Type 2 start date — when this ticker became active (from security) | — |
valid_to | DATE | references | SCD Type 2 end date — NULL means currently active (from security) | — |
is_active | BOOLEAN | references | TRUE when valid_to IS NULL — use to filter current tickers only (from security). For index membership, JOIN index_membership ON references.cik = index_membership.cik — there is no is_sp500 flag (dropped 2026-05-02 because it was snapshot-only and single-index). | — |
figi | VARCHAR | references | Financial Instrument Global Identifier share-class level (from security) | — |
composite_figi | VARCHAR | references | Composite FIGI at the exchange level (from security) | — |
share_class_figi | VARCHAR | references | Share class FIGI (from security) | — |
cik | VARCHAR | entity | SEC Central Index Key — 10-digit unique company identifier | dei:EntityCentralIndexKey |
name | VARCHAR | entity | Legal registered company name | dei:EntityRegistrantName |
lei | VARCHAR | entity | Legal Entity Identifier (ISO 17442 20-character code) | — |
industry | VARCHAR | entity | Industry classification description | — |
sector | VARCHAR | entity | Broad market sector, SIC-derived with GICS-style labels (e.g. Information Technology, Health Care, Financials) | — |
sic_code | VARCHAR | entity | Standard Industrial Classification code (4-digit) | dei:EntitySICCode |
sic_description | VARCHAR | entity | Full SEC SIC industry label (e.g. 'Electronic Computers'). Companion to sic_code — use this when a human-readable string is more useful than the raw 4-digit code. | — |
fiscal_year_end | VARCHAR | entity | Fiscal year end as MMDD (e.g. 1231 = December 31) | — |
Showing 25 of 374 fields
Standard Concepts
The canonical standard_concept dictionary — 291 normalized financial concepts that the raw XBRL tags map onto. Filter fact.standard_concept by any of these for clean, comparable cross-company queries.
| Concept | Name | Statement | Definition |
|---|---|---|---|
AntidilutiveShares | Antidilutive Shares | Income Statement | Shares excluded from diluted EPS as antidilutive. |
ClaimsAndBenefits | Claims And Benefits | Income Statement | Insurance claims and policyholder benefits incurred. |
ClinicalTrialCosts | Clinical Trial Costs | Income Statement | Costs incurred running clinical trials. Not always disclosed as a separate line — often embedded in R&D. When broken out, reveals development-stage focus. |
CostOfRevenue | Cost Of Revenue | Income Statement | Direct costs attributable to revenue generation (COGS + COS). |
CurrentIncomeTaxExpense | Current Income Tax Expense | Income Statement | Aggregated current-period income tax expense (federal + state + foreign). Distinct from the deferred-tax component, which moves through DeferredTaxExpense. Companies that report only an aggregated figure surface here; per-jurisdiction filers expose CurrentTaxFederal / CurrentTaxState / CurrentTaxForeign. |
CurrentTaxFederal | Current Tax Federal | Income Statement | Federal/national current income tax. |
CurrentTaxForeign | Current Tax Foreign | Income Statement | Foreign jurisdiction current income tax. |
CurrentTaxState | Current Tax State | Income Statement | State and local current income tax. |
DeferredTaxExpense | Deferred Tax Expense | Income Statement | Deferred income tax provision from timing differences. |
DepletionExpense | Depletion Expense | Income Statement | Period write-down of natural-resource asset basis based on units extracted. Energy/mining specific cousin of depreciation. |
DepreciationAndAmortization | Depreciation And Amortization | Income Statement | D&A expense from income statement or supplemental disclosure. |
DiscontinuedOpsIncome | Discontinued Ops Income | Income Statement | Net income from discontinued business segments. |
DividendPerShare | Dividend Per Share | Income Statement | Cash dividends declared per common share. |
EPSBasic | EPS Basic | Income Statement | Basic earnings per share (US-GAAP + IFRS). |
EPSBasicAndDiluted | EPS Basic And Diluted | Income Statement | Combined basic and diluted EPS (equal when no dilutive securities). |
EPSContinuingOpsBasic | EPS Continuing Ops Basic | Income Statement | Basic EPS from continuing operations. |
EPSContinuingOpsDiluted | EPS Continuing Ops Diluted | Income Statement | Diluted EPS from continuing operations. |
EPSDiluted | EPS Diluted | Income Statement | Diluted earnings per share — most conservative, standard for valuation. |
EPSDiscontinuedOps | EPS Discontinued Ops | Income Statement | EPS from discontinued operations. |
EffectiveTaxRate | Effective Tax Rate | Income Statement | Effective income tax rate. |
EquityMethodIncome | Equity Method Income | Income Statement | Share of income from unconsolidated affiliates (20-50% ownership). |
ExplorationCosts | Exploration Costs | Income Statement | Cost of exploring for new oil/gas/mineral reserves. Often written off in the period (successful efforts vs full cost accounting choice matters here). |
ExplorationExpense | Exploration Expense | Income Statement | Exploration costs for extractive industries (oil/gas, mining). |
FederalIncomeTax | Federal Income Tax | Income Statement | US Federal income tax expense/benefit (current + deferred). |
FeesAndCommissions | Fees And Commissions | Income Statement | Fee and commission income for financial institutions. |
Showing 25 of 291 concepts
Example Queries
Copy-ready SQL that runs unchanged in the Python SDK's client.run_query(), or in plain DuckDB once each table is a view (see the SQL cookbook).
Annual Revenue Trend for AAPL
Annual revenue per fiscal year with the filing it came from. A 10-K repeats earlier years, so QUALIFY keeps the latest-filed value per period.
SELECT f.period_end, f.numeric_value / 1e9 AS revenue_billions, fi.form_type, fi.filing_date, f.accepted_atFROM fact fJOIN "references" r ON r.cik = f.entity_idJOIN filing fi ON fi.accession_id = f.accession_idWHERE r.symbol = 'AAPL' AND r.is_active AND f.standard_concept = 'TotalRevenue' AND f.fiscal_period = 'FY'QUALIFY ROW_NUMBER() OVER ( PARTITION BY f.period_end ORDER BY f.accepted_at DESC) = 1ORDER BY f.period_end DESCLIMIT 10;Debt-to-Equity — S&P 500 Information Technology
Leverage across the sector from each company's latest annual values. Index membership comes from index_membership; one row per company from is_primary_ticker.
WITH members AS ( SELECT r.cik, r.symbol, r.name FROM "references" r JOIN index_membership im ON im.cik = r.cik WHERE im.index_name = 'SP500' AND im.removal_date IS NULL AND r.is_active AND r.is_primary_ticker AND r.sector = 'Information Technology'),latest AS ( -- Latest annual value of each concept, latest-filed vintage. SELECT f.entity_id, f.standard_concept, f.numeric_value FROM fact f JOIN members m ON m.cik = f.entity_id WHERE f.fiscal_period = 'FY' AND f.standard_concept IN ('LongTermDebt', 'StockholdersEquity') QUALIFY ROW_NUMBER() OVER ( PARTITION BY f.entity_id, f.standard_concept ORDER BY f.period_end DESC, f.accepted_at DESC ) = 1)SELECT m.symbol, m.name, MAX(CASE WHEN l.standard_concept = 'LongTermDebt' THEN l.numeric_value END) / 1e9 AS long_term_debt_billions, MAX(CASE WHEN l.standard_concept = 'StockholdersEquity' THEN l.numeric_value END) / 1e9 AS equity_billions, long_term_debt_billions / NULLIF(equity_billions, 0) AS debt_to_equityFROM latest lJOIN members m ON m.cik = l.entity_idGROUP BY m.symbol, m.nameORDER BY debt_to_equity DESC NULLS LAST;Free Cash Flow — Latest Quarter (S&P 500)
Quarter-only operating cash flow minus capex. derived_quarterly_value turns year-to-date 10-Q figures into single quarters, and the FY row carries Q4.
WITH members AS ( SELECT r.cik, r.symbol, r.name, r.sector FROM "references" r JOIN index_membership im ON im.cik = r.cik WHERE im.index_name = 'SP500' AND im.removal_date IS NULL AND r.is_active AND r.is_primary_ticker),quarters AS ( -- Quarter-only cash flow: Q2/Q3 are filed year-to-date and the FY row -- carries Q4, so read derived_quarterly_value first. SELECT f.entity_id, f.period_end, f.standard_concept, COALESCE(f.derived_quarterly_value, f.numeric_value) AS quarter_value FROM fact f WHERE f.standard_concept IN ('OperatingCashFlow', 'CAPEX') AND f.fiscal_period IN ('Q1', 'Q2', 'Q3', 'FY') AND (f.fiscal_period <> 'FY' OR f.derived_quarterly_value IS NOT NULL) -- FY only for its Q4 QUALIFY ROW_NUMBER() OVER ( PARTITION BY f.entity_id, f.standard_concept, f.period_end ORDER BY f.accepted_at DESC ) = 1),latest AS ( SELECT entity_id, period_end, MAX(CASE WHEN standard_concept = 'OperatingCashFlow' THEN quarter_value END) AS ocf, MAX(CASE WHEN standard_concept = 'CAPEX' THEN quarter_value END) AS capex FROM quarters GROUP BY entity_id, period_end HAVING ocf IS NOT NULL AND capex IS NOT NULL QUALIFY ROW_NUMBER() OVER (PARTITION BY entity_id ORDER BY period_end DESC) = 1)SELECT m.symbol, m.name, m.sector, l.period_end AS quarter_end, l.ocf / 1e6 AS ocf_millions, ABS(l.capex) / 1e6 AS capex_millions, (l.ocf - ABS(l.capex)) / 1e6 AS fcf_millionsFROM latest lJOIN members m ON m.cik = l.entity_idORDER BY fcf_millions DESC NULLS LASTLIMIT 20;Ready to query 120.5M+ facts?
Get a free API key and start querying in 60 seconds.