Obscura

EDGAR Filing Text

Signals mined from the text of filings, such as mentions of distress, litigation, going-concern doubt and restructuring.

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

Category Regulatory Columns 28 Refresh Every 6 hours Entity key cik Point-in-time available_date

What one row means

Text-derived keyword/size metrics extracted from the full prose of one EDGAR filing document (10-K/10-Q/8-K and their /A amendments): character count plus non-overlapping case-insensitive counts of distress/risk/macro signal phrases (going concern, material weakness, litigation, tariff, etc.).

One row per (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_filing_text: published: available_date = edgar_filings.event_date, joined by filename -> edgar_filings.filename — the SEC EDGAR filing/acceptance date, the day the filing became publicly retrievable.

Refresh cadence

Obscura refreshes edgar_filing_text every 6 hours — 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 — 28 columns

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

ColumnTypeDescription
filenametext · not nullPrimary key. EDGAR filing document path/accession; foreign-key join to edgar_filings.filename and the source reference for the scraped submission.
cikbigintSEC Central Index Key of the filer, copied from the joined edgar_filings row; nullable when the meta lookup misses.
form_typetextSEC form type of the filing (10-K, 10-K/A, 10-Q, 10-Q/A, 8-K, 8-K/A), copied from the joined edgar_filings row; nullable when meta lookup misses.
available_datedatePUBLIC-availability date, sourced via filename->edgar_filings join = edgar_filings.event_date (the SEC EDGAR filing/acceptance date). Nullable when the meta lookup returns None.
char_countbigint · not nullLength in characters of the markup-stripped, whitespace-collapsed prose extracted from the full submission.
risk_factor_mentionsinteger · not nullCount of the phrase "risk factor" (proxy for risk-section size).
going_concerninteger · not nullCount of "going concern" occurrences (distress signal).
material_weaknessinteger · not nullCount of "material weakness" occurrences (internal-controls distress signal).
restatementinteger · not nullCount of "restatement" occurrences.
litigationinteger · not nullCombined count of "litigation" + "lawsuit" occurrences.
cybersecurityinteger · not nullCombined count of "cybersecurity" + "data breach" + "cyberattack" occurrences.
layoff_restructuringinteger · not nullCombined count of "layoff" + "restructuring" + "workforce reduction" occurrences.
inflationinteger · not nullCount of "inflation" occurrences (macro signal).
tariffinteger · not nullSubstring count of "tariff" (also matches "tariffs"); macro/trade signal.
supply_chaininteger · not nullCount of "supply chain" occurrences (macro/operations signal).
sic_codeintegerFiler SIC industry code, parsed from the bracketed integer in the `STANDARD INDUSTRIAL CLASSIFICATION` header line (e.g. `3571` from `ELECTRONIC COMPUTERS [3571]`). None when absent/0.
sic_descriptiontextFiler SIC industry label, the text before the bracket in the `STANDARD INDUSTRIAL CLASSIFICATION` header line (e.g. `ELECTRONIC COMPUTERS`).
state_of_incorporationtextLegal state/country of incorporation (domicile), raw `STATE OF INCORPORATION` header line (e.g. `CA`). Jurisdiction attribute, distinct from the HQ location.
eintextFiler federal Employer Identification Number, raw `IRS NUMBER` header line (e.g. `942404110`); entity identifier for cross-dataset joins. Kept as text to preserve leading zeros/format.
period_of_reportdateFiscal period-end the filing covers, raw `CONFORMED PERIOD OF REPORT` header line (YYYYMMDD → date). A natural/as-of date, NOT a public-availability date (never event_date, per the look-ahead rule).
accepted_attimestamp with time zoneExact SEC acceptance timestamp, raw `<ACCEPTANCE-DATETIME>` header tag (YYYYMMDDHHMMSS, US-Eastern wall clock stored as-is). Sub-day event_time precision vs the day-grain available_date.
public_document_countintegerNumber of documents/exhibits bundled in the filing, raw `PUBLIC DOCUMENT COUNT` header line (e.g. `103`); a complexity/size proxy independent of char_count.
sec_file_numbertextSEC file/registration number for the filer, raw `SEC FILE NUMBER` header line (e.g. `001-36743`); regulatory identifier.
fiscal_year_endtextFiler fiscal-year-end MMDD, raw `FISCAL YEAR END` header line (e.g. `0928`); kept as text to preserve the leading zero. Useful for period alignment.
business_citytextFiler HQ city, raw `CITY` line inside the `BUSINESS ADDRESS` header block (e.g. `CUPERTINO`).
business_statetextFiler HQ state/province code, raw `STATE` line inside the `BUSINESS ADDRESS` header block (e.g. `CA`).
business_ziptextFiler HQ postal code, raw `ZIP` line inside the `BUSINESS ADDRESS` header block (e.g. `95014`). Kept as text to preserve leading zeros.
scraped_attimestamp with time zone · not nullInternal ingestion timestamp (Utc::now() at upsert; DB default current_timestamp). This dataset's synced_at analogue; excluded from exports.

Access edgar_filing_text

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

Create a free account Browse all 95 datasets

Frequently asked questions

What is in the edgar_filing_text dataset?

Signals mined from the text of filings, such as mentions of distress, litigation, going-concern doubt and restructuring. Text-derived keyword/size metrics extracted from the full prose of one EDGAR filing document (10-K/10-Q/8-K and their /A amendments): character count plus non-overlapping case-insensitive counts of distress/risk/macro signal phrases (going concern, material weakness, litigation, tariff, etc.).

How do I avoid look-ahead bias with edgar_filing_text?

Filter on edgar_filing_text.available_date, the day the publisher made the row public. For this dataset that date is derived as follows — published: available_date = edgar_filings.event_date, joined by filename -> edgar_filings.filename — the SEC EDGAR filing/acceptance date, the day the filing became publicly retrievable. 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_filing_text?

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

Can I filter edgar_filing_text by company or symbol?

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

How often is edgar_filing_text updated?

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