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 (e.g. Technology, Healthcare, 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 344 fields
Standard Concepts
The canonical standard_concept dictionary — 291 normalized financial concepts that 11,966 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 to get started. Works with DuckDB, Postgres, and the Python SDK.
10-Year Revenue Trend for AAPL
Fetch annual revenue for the past 10 years, point-in-time accurate.
SELECT f.filing_date, f.report_date, fa.numeric_value / 1e9 AS revenue_billionsFROM filing fJOIN references r ON f.entity_id = r.cikJOIN fact fa ON fa.accession_id = f.accession_idWHERE r.symbol = 'AAPL' AND r.is_active = TRUE AND fa.standard_concept = 'Revenues' AND f.form_type = '10-K'ORDER BY f.filing_date DESCLIMIT 10;Debt-to-Equity Ratio — S&P500 Tech
Screen for leverage across the technology sector using the latest annual filing. Index membership comes from the index_membership table.
SELECT r.symbol, r.name AS company_name, r.sector, f.filing_date AS annual_filing_date, debt.numeric_value / 1e9 AS long_term_debt_billions, equity.numeric_value / 1e9 AS equity_billions, debt.numeric_value / NULLIF(equity.numeric_value, 0) AS debt_to_equityFROM references rJOIN index_membership im ON im.cik = r.cikJOIN LATERAL ( SELECT accession_id, filing_date FROM filing WHERE entity_id = r.cik AND form_type = '10-K' ORDER BY filing_date DESC LIMIT 1) f ON trueJOIN fact debt ON debt.accession_id = f.accession_id AND debt.standard_concept = 'LongTermDebt'JOIN fact equity ON equity.accession_id = f.accession_id AND equity.standard_concept = 'StockholdersEquity'WHERE im.index_name = 'SP500' AND im.removal_date IS NULL AND r.is_active = TRUE AND r.sector ILIKE '%technology%'ORDER BY debt_to_equity DESC NULLS LAST;Free Cash Flow — Latest Quarter (S&P500)
Calculate FCF (operating cash flow minus capex) across the S&P500.
SELECT r.symbol, r.name AS company_name, r.sector, f.filing_date AS latest_quarter, COALESCE(ocf.derived_quarterly_value, ocf.numeric_value) / 1e6 AS ocf_millions, ABS(COALESCE(capex.derived_quarterly_value, capex.numeric_value)) / 1e6 AS capex_millions, (COALESCE(ocf.derived_quarterly_value, ocf.numeric_value) - ABS(COALESCE(capex.derived_quarterly_value, capex.numeric_value))) / 1e6 AS fcf_millionsFROM references rJOIN index_membership im ON im.cik = r.cikJOIN LATERAL ( SELECT accession_id, filing_date FROM filing WHERE entity_id = r.cik AND form_type = '10-Q' ORDER BY filing_date DESC LIMIT 1) f ON trueJOIN fact ocf ON ocf.accession_id = f.accession_id AND ocf.standard_concept = 'NetCashProvidedByUsedInOperatingActivities'JOIN fact capex ON capex.accession_id = f.accession_id AND capex.standard_concept = 'PaymentsToAcquirePropertyPlantAndEquipment'WHERE im.index_name = 'SP500' AND im.removal_date IS NULL AND r.is_active = TRUEORDER BY fcf_millions DESC NULLS LASTLIMIT 20;Intrinsic Value Screen — S&P500
Screen S&P500 companies by DCF intrinsic value vs current price (margin of safety).
SELECT r.symbol, r.name AS company_name, r.sector, v.valuation_date, v.model_type, v.per_share_value, v.current_price, v.margin_of_safety, v.valuation_labelFROM valuation vJOIN references r ON v.entity_id = r.cikJOIN index_membership im ON im.cik = r.cikWHERE im.index_name = 'SP500' AND im.removal_date IS NULL AND r.is_active = TRUE AND v.model_type = 'dcf' AND v.valuation_date = ( SELECT MAX(valuation_date) FROM valuation WHERE entity_id = v.entity_id ) AND v.per_share_value IS NOT NULLORDER BY v.margin_of_safety DESC NULLS LASTLIMIT 20;Ready to query 111M+ facts?
Get a free API key and start querying in 60 seconds.