EDGAR Schedule 13D/G
Schedule 13D and 13G filings, where an investor discloses a stake above 5% in a public company.
edgar_sc13 — the dataset name to pass to the Obscura API.
What one row means
One reporting person's beneficial-ownership stake as disclosed on a single SEC Schedule 13D/13G (or /A) filing — an activist (13D) or passive (13G) holder of >5% of a class of an issuer's stock, with percent-of-class and aggregate shares.
One row per (filename, seq) — one row per reporting person (seq = 0-based ordinal of the reporting-person block) within one EDGAR full-submission document (filename).
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_sc13: published: available_date = the filing's SEC dissemination date, recovered from edgar_filings via filename (the point-in-time anchor); occurred_on is the triggering-event date that required the statement, rehomed off available_date.
Refresh cadence
Obscura refreshes edgar_sc13 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 — 24 columns
The full public column list for edgar_sc13, with the meaning of every field. The same
schema is served unauthenticated at https://api.obscura.trade/v1/catalog/edgar_sc13.
| Column | Type | Description |
|---|---|---|
| filename | text · not null | EDGAR full-submission document path (primary-key part 1); also the join key to edgar_filings for the true public filing date. |
| seq | integer · not null | 0-based ordinal of the reporting-person block within the filing (primary-key part 2); disambiguates multiple filers on one document, not a source-meaningful id. |
| subject_cik | bigint · not null | SEC Central Index Key of the subject company (the issuer whose stock is held); NOT NULL, from the cover-page issuerCik or legacy SEC-HEADER SUBJECT COMPANY. |
| subject_name | text | Name of the subject/issuer company whose >5% class is being reported. |
| cusip | text | CUSIP of the reported security class; from cover-page issuerCusipNumber, or best-effort scraped from the body text in the legacy path. |
| class_title | text | Title of the class of securities (e.g. 'Common Stock, par value $0.001'); null on legacy filings. |
| available_date | date | The filing's SEC dissemination date — when the public could first see it. Recovered from edgar_filings via filename. The point-in-time anchor. |
| occurred_on | date | The triggering-event date that required the statement (the real-world event); filed within ~5 business days (13D) / up to 45 days (13G). |
| reporting_person | text | Name of the beneficial owner / filer (the reporting person holding the stake); from reportingPersonName or legacy SEC-HEADER FILED BY. |
| percent_of_class | double precision | Percent of the class beneficially owned by this reporting person (classPercent); null on legacy filings, updated on upsert. |
| aggregate_shares | double precision | Aggregate number of shares beneficially owned by this reporting person; null on legacy filings, updated on upsert. |
| person_type | text | SEC 'type of reporting person' code(s) (e.g. IN, OO, CO), comma-joined when a filer declares more than one; null on legacy filings. |
| form_type | text | Submission type: 'SCHEDULE 13D'/'SCHEDULE 13G' (or /A amendments), or legacy 'SC 13D'/'SC 13G'; distinguishes activist (13D) from passive (13G) stakes. |
| sole_voting_power | double precision | Shares this reporting person has SOLE power to vote / direct the vote of (reportingPersonBeneficiallyOwnedNumberOfShares/soleVotingPower); null on legacy filings. |
| shared_voting_power | double precision | Shares this reporting person SHARES the power to vote / direct the vote of (reportingPersonBeneficiallyOwnedNumberOfShares/sharedVotingPower); null on legacy filings. |
| sole_dispositive_power | double precision | Shares this reporting person has SOLE power to dispose / direct the disposition of (reportingPersonBeneficiallyOwnedNumberOfShares/soleDispositivePower); null on legacy filings. |
| shared_dispositive_power | double precision | Shares this reporting person SHARES the power to dispose / direct the disposition of (reportingPersonBeneficiallyOwnedNumberOfShares/sharedDispositivePower); null on legacy filings. |
| citizenship_or_organization | text | Per reporting-person citizenship / place-of-organization code — 'X1' (or another EDGAR country code) for a foreign person, else a US state code (citizenshipOrOrganization); a geo attribute of the reporting person. |
| member_group | text | Group-membership indicator for this reporting person (memberGroup); a short code (e.g. 'b') flagging membership in a filing group. Null on legacy filings. |
| designate_rule | text | Filing-basis rule the whole schedule is filed pursuant to (cover-page designateRulePursuantThisScheduleFiled, e.g. 'Rule 13d-1(c)'), comma-joined if several; distinguishes institutional/passive/exempt 13G filer classes. Same for every row of a filing. |
| issuer_state_or_country | text | Issuer principal-executive-office state or country code (issuerPrincipalExecutiveOfficeAddress/stateOrCountry); issuer HQ geo. Same for every row of a filing. |
| issuer_zip_code | text | Issuer principal-executive-office ZIP / postal code (issuerPrincipalExecutiveOfficeAddress/zipCode); issuer HQ geo. Same for every row of a filing. |
| class_ownership_5pct_or_less | text | Item 5 exit/threshold flag: 'Y' if the reporting persons now own ≤5% of the class (items/item5/classOwnership5PercentOrLess), else 'N'; a threshold-crossing signal. Same for every row of a filing. |
| scraped_at | timestamp with time zone · not null | Ingestion timestamp (set to Utc::now on upsert); internal provenance, excluded from exports — the platform's synced_at analog for this table. |
Access edgar_sc13
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_sc13",
start="2024-01-01",
)
Create a free account Browse all 95 datasets
Frequently asked questions
What is in the edgar_sc13 dataset?
Schedule 13D and 13G filings, where an investor discloses a stake above 5% in a public company. One reporting person's beneficial-ownership stake as disclosed on a single SEC Schedule 13D/13G (or /A) filing — an activist (13D) or passive (13G) holder of >5% of a class of an issuer's stock, with percent-of-class and aggregate shares.
How do I avoid look-ahead bias with edgar_sc13?
Filter on edgar_sc13.available_date, the day the publisher made the row public. For this dataset that date is derived as follows — published: available_date = the filing's SEC dissemination date, recovered from edgar_filings via filename (the point-in-time anchor); occurred_on is the triggering-event date that required the statement, rehomed off available_date. 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_sc13?
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_sc13". The column schema is public at https://api.obscura.trade/v1/catalog/edgar_sc13.
How often is edgar_sc13 updated?
Obscura refreshes edgar_sc13 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.