SEC Standardized Text

Parsed using doc2struct.

Daily datasets are combined at 06:00 UTC Tuesday–Saturday. For daily downloads, we recommend pulling after 09:00 UTC.

Data

accessionNumber + sequence identifies a document. id identifies the order of elements within a document.

Table (16 rows)
ColumnMeaningExample
accessionNumberFiling accession number`110465923015159
sequenceDocument order in the filing23
filingDatefiling date2026-01-02
filenamefilenamefilename2.txt
documentTypeSEC document typeLETTER
idSequential output row number, starting at 03
levelNesting depth within the document2
typetitle, text, textsmall, table, image, list, or redundant"table"
textText content; image alt text for images; associated title for tables. null for lists"Consolidated Balance Sheets"
matrixTables: rows of cell strings. Lists: [relative_depth, item_text] pairs, both strings. null otherwise[["Year", "Revenue"], ["2025", "100"]]
cleanedTable cleanup changes and unresolved issues, represented as a list of strings. null for other types["removed_empty_rows", "merged_header_rows"]
preambleTable rows only: associated text before the table, or null"Amounts in millions."
footnotesTable rows only: list of [id, text] pairs, or null[["(1)", "Includes discontinued operations."]]
postambleTable rows only: associated text following the table’s footnotes, or null"See accompanying notes to the financial statements."
classClassification assigned by the SEC rules"item"
standardizedTitleNormalized identifier for a recognized heading; otherwise null"item1a"

Download Dataset

Download a filing year, including newly processed filings:

from datamulehub import datasets

datasets.download(
    "standardized_text",
    year=2026,
    filename="standardized_text_2026.parquet",
)

Use from_storage="daily" for the published yearly snapshot, or "delta" for recent per-filing outputs only.

Download all parsed documents from one filing:

datasets.download(
    "standardized_text",
    accession=["0000320193-24-000123"],
    filename="filing_text.parquet",
)

Query Database

Athena exposes column names in lowercase: standardizedTitle in Parquet is standardizedtitle in SQL.

Find risk-factor headings in 10-K documents:

from datamulehub import databases

rows = databases.read_query(
    """
    SELECT *
    FROM standardized_text
    WHERE documenttype = '10-K'
      AND type = 'table'
      AND filingdate >= '2024-01-01'
      AND filingdate < '2025-01-01'
    LIMIT 10
    """
)

print(rows)

Use databases.query(sql, output_dir="results") to save query results as Parquet files instead.