Obscura

EDGAR 13F Filings

Metadata for every 13F report, the quarterly filing where large institutional managers list their U.S. equity holdings.

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

Category Regulatory Columns 17 Refresh Every weekday Entity key cik Point-in-time available_date

What one row means

A 13F-HR cover-page summary for one institutional investment manager's quarterly report of Section 13(f) securities holdings — the manager, the reporting period, the aggregate portfolio totals, and the count of positions (the individual positions themselves live in the child table `edgar_13f_holdings`, keyed by the same `filename`).

One row per one row per 13F submission document (EDGAR accession `filename`); original 13F-HR filings and their 13F-HR/A amendments are distinct rows, no dedup to one row per (manager, quarter).

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_13f_filings: published: available_date is recovered via filename -> edgar_filings.event_date, the EDGAR filing/acceptance date (the true public-availability anchor); period_end is the periodOfReport quarter-end, filed up to ~45 days later — never the availability anchor.

Refresh cadence

Obscura refreshes edgar_13f_filings every weekday — 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 — 17 columns

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

ColumnTypeDescription
filenametext · not nullEDGAR accession/document path (e.g. edgar/data/CIK/accession.txt); primary key of the row and the join key to `edgar_filings` and the child `edgar_13f_holdings` table.
cikbigint · not nullSEC Central Index Key of the institutional manager that filed the 13F, parsed from the `<cik>` tag in the cover.
manager_nametextName of the filing institutional manager, from `<filingManager><name>`; nullable.
available_datedatePublic availability date: the 13F's SEC filing/dissemination date — when the public could first see it. Recovered from `edgar_filings` via `filename`. The point-in-time anchor.
period_enddateReporting-period end (`periodOfReport`) — the quarter the holdings are AS OF. Filed up to ~45 days later, so NEVER the availability date.
report_typetextReport classification from the cover page `<reportType>`: `13F HOLDINGS REPORT` / `13F NOTICE` / `13F COMBINATION REPORT`. A NOTICE carries no holdings of its own, so 0 positions is expected — this distinguishes it from a parse failure.
submission_typetextSEC form type of the submission (`13F-HR` original vs `13F-HR/A` amendment), from the cover `<submissionType>` / SGML `CONFORMED SUBMISSION TYPE`. The grain keeps amendments as distinct rows; this is the only column that says which.
is_confidential_omittedbooleanWhether the manager omitted confidential holdings under delayed-disclosure relief (summary page `<isConfidentialOmitted>`); true means the reported portfolio is incomplete.
other_included_managers_countbigintCount of other managers whose holdings are aggregated into this combined filing (summary page `<otherIncludedManagersCount>`; 14 for Berkshire); nullable.
form_13f_file_numbertextThe filing manager's 13F file number (cover `<form13FFileNumber>`, e.g. `028-04545`); a stable per-manager identifier for the 13F series.
manager_statetextState or country code of the filing manager's address (`<filingManager><address><stateOrCountry>`, e.g. `NE`); nullable.
manager_ziptextZIP/postal code of the filing manager's address (`<filingManager><address><zipCode>`); nullable.
acceptance_datetimetimestamp with time zoneExact SGML `<ACCEPTANCE-DATETIME>` acceptance moment (e.g. `20260515160605` = 16:06 ET), finer than `available_date`'s day granularity; nullable.
table_entry_totalbigintManager-reported count of holdings entries from the summary page `<tableEntryTotal>`; nullable, source-declared (may differ from the parsed `positions`).
table_value_totaldouble precisionManager-reported aggregate market value of all reported holdings from `<tableValueTotal>` (in the form's units, typically dollars or thousands); nullable.
positionsinteger · not nullActual number of `<infoTable>` position rows parsed and written to `edgar_13f_holdings` for this filing; NOT NULL, default 0.
scraped_attimestamp with time zone · not nullIngestion timestamp (`Utc::now()` at upsert); internal provenance, excluded from exports. Not the filing or public date.

Access edgar_13f_filings

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_13f_filings",
    symbols=["NVDA", "AAPL"],
    start="2024-01-01",
)

Create a free account Browse all 95 datasets

Frequently asked questions

What is in the edgar_13f_filings dataset?

Metadata for every 13F report, the quarterly filing where large institutional managers list their U.S. equity holdings. A 13F-HR cover-page summary for one institutional investment manager's quarterly report of Section 13(f) securities holdings — the manager, the reporting period, the aggregate portfolio totals, and the count of positions (the individual positions themselves live in the child table `edgar_13f_holdings`, keyed by the same `filename`).

How do I avoid look-ahead bias with edgar_13f_filings?

Filter on edgar_13f_filings.available_date, the day the publisher made the row public. For this dataset that date is derived as follows — published: available_date is recovered via filename -> edgar_filings.event_date, the EDGAR filing/acceptance date (the true public-availability anchor); period_end is the periodOfReport quarter-end, filed up to ~45 days later — never the availability anchor. 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_13f_filings?

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_13f_filings". The column schema is public at https://api.obscura.trade/v1/catalog/edgar_13f_filings.

Can I filter edgar_13f_filings by company or symbol?

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

How often is edgar_13f_filings updated?

Obscura refreshes edgar_13f_filings on a every weekday 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 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. EDGAR FilingsThe master index of SEC EDGAR: every filing, with its form type, filer and date.