Filing

Parse and write SEC filings (8-K, 10-Q, 10-K, 13F-HR-INFORMATIONTABLE) to JSON or CSV formats.

Filing(filepath, filing_type)
Parameters:
  • filepath (str) – Path to the filing file

  • filing_type (str) – Filing type (‘8-K’, ‘10-Q’, ‘10-K’, ‘13F-HR-INFORMATIONTABLE’)

Note that a filing’s tabular data can be accessed directly.

from datamule import Filing
import pandas as pd

pd.DataFrame(filing)

Data Structure

  • 10-K/10-Q/8-K: Nested document structure
    • Contains hierarchical sections (document -> item1 -> subitem1a, etc.)

    • CSV output flattens hierarchy with section paths (e.g., “document_item1_subitem1a”)

    • Text content preserved in nested format for JSON output

  • 13F-HR-INFORMATIONTABLE: Tabular structure
    • Each row represents a holding

    • Direct mapping to CSV columns

    • No nested flattening required

Methods

parse_filing()

Parse the filing based on its type (nested or tabular).

Returns:

Parsed filing data (dict)

write_json(output_filename=None)

Write data to JSON. Preserves nested structure for 10-K/10-Q/8-K filings.

write_csv(output_filename=None, accession_number=None)

Write data to CSV. Flattens nested documents or writes tabular data directly. If opening in Excel make sure to use From Text/CSV option otherwise the columns will not be separated correctly.

Examples

from datamule import Downloader, Filing
from pathlib import Path
import pandas as pd
downloader = Downloader()
downloader.download(form='4',output_dir='4',date=('2021-01-07','2021-01-07'))
dfs = []
for file in Path('4').iterdir():
   filing = Filing(str(file), '4')
   dfs.append(pd.DataFrame(filing))

df = pd.concat(dfs)
df.to_csv('4.csv', index=False)
filing = Filing("myfile.txt", "13F-HR-INFORMATIONTABLE")
filing.parse_filing()
filing.write_csv("output.csv")

Notes

  • Document filings (10-K/10-Q/8-K) create section/text columns in CSV

  • Information table (13F-HR-INFORMATIONTABLE) preserves original columns

  • Optional accession number added as extra column in CSV output