Portfolio

Portfolio is the easiest way to interact with SEC data.

from datamule import Portfolio

# Create a Portfolio object
portfolio = Portfolio('output_dir') # can be an existing directory or a new one

# Download submissions
portfolio.download_submissions(
   filing_date=('2023-01-01','2023-01-03'),
   submission_type=['10-K']
)

# Iterate through documents by document type
for ten_k in portfolio.document_type('10-K'):
   ten_k.parse()
   print(ten_k.data['document']['part2']['item7'])

# Iterate through documents by what strings they contain
for document in portfolio.contains_string('United States'):
   print(document.path)

# You can also use regex patterns
for document in portfolio.contains_string(r'(?i)covid-19'):
   print(document.type)

# For faster operations, you can take advantage of built in threading with callback function
def callback(submission):
   print(submission.path)

submission_results = portfolio.process_submissions(callback)