Obscura

EDGAR Fundamentals

Financial-statement figures (revenue, net income, assets, liabilities and more) pulled from companies' XBRL filings.

edgar_fundamentals — the dataset name to pass to the Obscura API.

Category Regulatory Columns 10 Refresh Weekly Entity key cik Point-in-time available_date

What one row means

One core financial-statement fact from an SEC XBRL "frames" query: a single us-gaap concept value (e.g. Revenues, NetIncomeLoss, EarningsPerShareDiluted, Assets) reported by one filer for one fiscal period, in long/EAV format. Metric keys come from `FundamentalMetric::as_str` in tasks/edgar_fundamentals.rs.

One row per (cik, period_end, metric) -- one row per (filer, fiscal-period-end, financial concept).

Point-in-time availability

Every Obscura dataset carries available_date: the calendar day the publisher made the row available, day-of, with no session rounding. It is the one column a backtest filters on, and it means the same thing on every dataset in the catalog.

For edgar_fundamentals: published: available_date = the SEC dissemination date of the filing (10-Q/10-K) that reported this fact, recovered from edgar_filings via accn; NULL until the accession is captured (the frames collector re-fetches to backfill historical rows).

Refresh cadence

Obscura refreshes edgar_fundamentals weekly — the most frequent scheduled job that re-collects or re-exports it. This is Obscura's own pipeline cadence, not the upstream publisher's release schedule; when a row became public is recorded per row in available_date.

Schema — 10 columns

The full public column list for edgar_fundamentals, with the meaning of every field. The same schema is served unauthenticated at https://api.obscura.trade/v1/catalog/edgar_fundamentals.

ColumnTypeDescription
cikbigint · not nullSEC Central Index Key of the filing entity, from the XBRL frame entry's `cik`. Part of the primary key.
period_enddate · not nullReporting-period end (`end` from the frame) — the fiscal period this value is AS OF. Part of the grain — a fact is one value per company/period/metric. This is a period date, not the public availability date; see `available_date` for that.
period_startdateReporting-period START date of the fact (`start` from the frame entry). Together with `period_end` it defines the duration window (e.g. `2024-01-01 → 2024-03-31` = a 3-month figure vs a YTD/annual figure) and disambiguates off-calendar fiscal quarters (e.g. `2023-12-01 → 2024-02-29`) that `period_end` alone cannot. NULL for instant (balance-sheet) metrics, which have no start. Nullable.
metrictext · not nullThe financial concept key (e.g. revenues, net_income, eps_diluted, assets, long_term_debt) from `FundamentalMetric::as_str`, mapping to a us-gaap XBRL tag. Part of the primary key; makes this a long/EAV table.
available_datedatePUBLIC-availability date: the SEC dissemination date of the filing that reported this fact, recovered from `edgar_filings` via `accn`. NULL until the accession is captured (the frames collector re-fetches to backfill historical rows). The point-in-time column to filter/join on — never `period_end`.
accntextAccession of the source filing (from the frames API) — the join key to `edgar_filings` for the public date.
valuedouble precision · not nullThe numeric fact value in the concept's unit (USD for most metrics, USD-per-shares for eps_diluted); fractional values preserved. From the XBRL entry's `val`.
entity_nametextHuman-readable filer name from the XBRL entry's `entityName`; nullable.
frametextSource XBRL frame identifier (CCP), e.g. CY2026Q1 or CY2026Q1I for instant/balance-sheet metrics; from the frame doc's `ccp`. Identifies the calendar period bucket the fact was pulled from and drives the immutable-frame skip logic. Nullable.
loctextFiler location as an ISO-3166-2 code from the XBRL frame entry's `loc` (e.g. `US-IL`, `US-CA` for US filers; a bare country code for foreign filers). A per-filer state/country geo attribute; not derivable from any other stored field. Nullable.

Access edgar_fundamentals

Two delivery paths, one identifier. Both require an Obscura account and an active subscription; the catalog entry and the schema above are public.

import obscura

client = obscura.Client("obs_live_…")

df = client.query(
    dataset="edgar_fundamentals",
    symbols=["NVDA", "AAPL"],
    start="2024-01-01",
)

Create a free account Browse all 95 datasets

Frequently asked questions

What is in the edgar_fundamentals dataset?

Financial-statement figures (revenue, net income, assets, liabilities and more) pulled from companies' XBRL filings. One core financial-statement fact from an SEC XBRL "frames" query: a single us-gaap concept value (e.g. Revenues, NetIncomeLoss, EarningsPerShareDiluted, Assets) reported by one filer for one fiscal period, in long/EAV format. Metric keys come from `FundamentalMetric::as_str` in tasks/edgar_fundamentals.rs.

How do I avoid look-ahead bias with edgar_fundamentals?

Filter on edgar_fundamentals.available_date, the day the publisher made the row public. For this dataset that date is derived as follows — published: available_date = the SEC dissemination date of the filing (10-Q/10-K) that reported this fact, recovered from edgar_filings via accn; NULL until the accession is captured (the frames collector re-fetches to backfill historical rows). A query of the form WHERE available_date <= '<as-of date>' never sees a row before it existed.

In what formats can I get edgar_fundamentals?

As a Parquet bulk export (POST https://api.obscura.trade/v1/download) or as JSON from the typed query API (POST https://api.obscura.trade/v1/query), both with dataset="edgar_fundamentals". The column schema is public at https://api.obscura.trade/v1/catalog/edgar_fundamentals.

Can I filter edgar_fundamentals by company or symbol?

Yes. edgar_fundamentals carries cik, the column the API's symbols filter resolves against.

How often is edgar_fundamentals updated?

Obscura refreshes edgar_fundamentals on a weekly schedule — that is the most frequent scheduled job that re-collects or re-exports the table. It is Obscura's own pipeline cadence, not the upstream publisher's release schedule; when the publisher makes a row available is described by the availability rule above, and is recorded per row in available_date.

Related datasets

CFTC Commitments of TradersThe CFTC's weekly Commitments of Traders report: how commercial, non-commercial and small traders are positioned in each… ECHO Enforcement CasesEnvironmental enforcement actions and penalties from the EPA's ECHO database. ECHO FacilitiesEPA-regulated facilities and their compliance history, from ECHO. EDGAR 13F FilingsMetadata for every 13F report, the quarterly filing where large institutional managers list their U.S. equity holdings. EDGAR 13F HoldingsThe line-item positions inside each 13F: which manager held which security, and how much, each quarter. EDGAR 8-K ItemsThe item numbers reported on each 8-K (5.02 officer changes, 2.01 acquisitions, 1.01 material agreements, and so on), so… EDGAR Dilution MetricsShare-issuance headroom and overhang metrics built from companies' XBRL filings: authorized versus outstanding shares, a… EDGAR Filing TextSignals mined from the text of filings, such as mentions of distress, litigation, going-concern doubt and restructuring.