https://github.com/elijas/sec-downloader
Find and download SEC filings. Built on top of sec-edgar-downloader.
https://github.com/elijas/sec-downloader
company-data edgar edgar-api edgar-downloader filings finance financial financial-data financial-filings fintech investing mutual-funds python sec sec-edgar sec-edgar-api sec-edgar-downloader stock-market stocks
Last synced: 2 months ago
JSON representation
Find and download SEC filings. Built on top of sec-edgar-downloader.
- Host: GitHub
- URL: https://github.com/elijas/sec-downloader
- Owner: Elijas
- License: mit
- Created: 2023-10-12T01:49:45.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-02-13T01:26:59.000Z (4 months ago)
- Last Synced: 2025-03-30T11:06:29.613Z (2 months ago)
- Topics: company-data, edgar, edgar-api, edgar-downloader, filings, finance, financial, financial-data, financial-filings, fintech, investing, mutual-funds, python, sec, sec-edgar, sec-edgar-api, sec-edgar-downloader, stock-market, stocks
- Language: Jupyter Notebook
- Homepage: https://elijas.github.io/sec-downloader/
- Size: 434 KB
- Stars: 37
- Watchers: 2
- Forks: 10
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# sec-downloader
A better version of `sec-edgar-downloader`. Includes an alternative
implementation (a wrapper instead of a fork), to keep compatibility with
new `sec-edgar-downloader` releases. This library partially uses
[nbdev](https://nbdev.fast.ai/).# Features
Advantages over `sec-edgar-downloader`:
**Flexibility in Download Process**
- Tailored for choosing *what*, *where*, and *how* to download.
- Files stored in memory for faster operations and no unnecessary disk
clutter.**Separate Metadata and File Downloads**
- Easily skip unneeded files.
- Download metadata first, then selectively download files.
- Option to save metadata for better organization.**More Input Options**
- Ticker or CIK (e.g., `AAPL`, `0000320193`) for latest filings.
- Accession Number (e.g., `0000320193-23-000077`). Not supported in
`sec-edgar-downloader`.
- SEC EDGAR URL (e.g.,
`https://www.sec.gov/ix?doc=/Archives/edgar/data/0001067983/000119312523272204/d564412d8k.htm`).
Not supported in `sec-edgar-downloader`.# Install
``` sh
pip install sec-downloader
```# How to use
## Download the metadata
> **Note** The company name and email address are used to form a
> user-agent string that adheres to the SEC EDGAR’s fair access policy
> for programmatic downloading.
> [Source](https://www.sec.gov/os/webmaster-faq#code-support)``` python
from sec_downloader import Downloaderdl = Downloader("MyCompanyName", "[email protected]")
```Find a filing with an Accession Number
``` python
metadatas = dl.get_filing_metadatas("AAPL/0000320193-23-000077")
print(metadatas)
```[FilingMetadata(accession_number='0000320193-23-000077',
form_type='10-Q',
primary_doc_url='https://www.sec.gov/Archives/edgar/data/320193/000032019323000077/aapl-20230701.htm',
items='',
primary_doc_description='10-Q',
filing_date='2023-08-04',
report_date='2023-07-01',
cik='0000320193',
company_name='Apple Inc.',
tickers=[Ticker(symbol='AAPL', exchange='Nasdaq')])]Alternatively, you can also use any of these to get the same answer:
metadatas = dl.get_filing_metadatas("aapl/000032019323000077")
metadatas = dl.get_filing_metadatas("320193/000032019323000077")
metadatas = dl.get_filing_metadatas("320193/0000320193-23-000077")
metadatas = dl.get_filing_metadatas("0000320193/0000320193-23-000077")
metadatas = dl.get_filing_metadatas(CompanyAndAccessionNumber(ticker_or_cik="320193", accession_number="0000320193-23-000077"))Find the filing matching a SEC EDGAR Filing URL. Only CIK and Accession
Number are used from the URL:``` python
metadatas = dl.get_filing_metadatas(
"https://www.sec.gov/ix?doc=/Archives/edgar/data/0001067983/000119312523272204/d564412d8k.htm"
)
print(metadatas)
```[FilingMetadata(accession_number='0001193125-23-272204',
form_type='8-K',
primary_doc_url='https://www.sec.gov/Archives/edgar/data/1067983/000119312523272204/d564412d8k.htm',
items='2.02,9.01',
primary_doc_description='8-K',
filing_date='2023-11-07',
report_date='2023-11-04',
cik='0001067983',
company_name='BERKSHIRE HATHAWAY INC',
tickers=[Ticker(symbol='BRK-B', exchange='NYSE'),
Ticker(symbol='BRK-A', exchange='NYSE')])]Alternatively, you can also URLs in other formats and get the same
answer:metadatas = dl.get_filing_metadatas("https://www.sec.gov/Archives/edgar/data/1067983/000119312523272204/d564412d8k.htm")
Find latest filings by company ticker or CIK:
``` python
from sec_downloader.types import RequestedFilingsmetadatas = dl.get_filing_metadatas(
RequestedFilings(ticker_or_cik="MSFT", form_type="10-K", limit=2)
)
print(metadatas)
```[FilingMetadata(accession_number='0000950170-24-087843',
form_type='10-K',
primary_doc_url='https://www.sec.gov/Archives/edgar/data/789019/000095017024087843/msft-20240630.htm',
items='',
primary_doc_description='10-K',
filing_date='2024-07-30',
report_date='2024-06-30',
cik='0000789019',
company_name='MICROSOFT CORP',
tickers=[Ticker(symbol='MSFT', exchange='Nasdaq')]),
FilingMetadata(accession_number='0000950170-23-035122',
form_type='10-K',
primary_doc_url='https://www.sec.gov/Archives/edgar/data/789019/000095017023035122/msft-20230630.htm',
items='',
primary_doc_description='10-K',
filing_date='2023-07-27',
report_date='2023-06-30',
cik='0000789019',
company_name='MICROSOFT CORP',
tickers=[Ticker(symbol='MSFT', exchange='Nasdaq')])]Alternatively, you can also use any of these to get the same answer:
metadatas = dl.get_filing_metadatas("2/msft/10-K")
metadatas = dl.get_filing_metadatas("2/789019/10-K")
metadatas = dl.get_filing_metadatas("2/0000789019/10-K")The parameters `limit` and `form_type` are optional. If omitted, `limit`
defaults to 1, and `form_type` defaults to ‘10-Q’.``` python
metadatas = dl.get_filing_metadatas("NFLX")
print(metadatas)
```[FilingMetadata(accession_number='0001065280-24-000287',
form_type='10-Q',
primary_doc_url='https://www.sec.gov/Archives/edgar/data/1065280/000106528024000287/nflx-20240930.htm',
items='',
primary_doc_description='10-Q',
filing_date='2024-10-18',
report_date='2024-09-30',
cik='0001065280',
company_name='NETFLIX INC',
tickers=[Ticker(symbol='NFLX', exchange='Nasdaq')])]Alternatively, you can also use any of these to get the same answer:
metadatas = dl.get_filing_metadatas("nflx")
metadatas = dl.get_filing_metadatas("1/NFLX")
metadatas = dl.get_filing_metadatas("NFLX/10-Q")
metadatas = dl.get_filing_metadatas("1/NFLX/10-Q")
metadatas = dl.get_filing_metadatas(RequestedFilings(ticker_or_cik="NFLX"))
metadatas = dl.get_filing_metadatas(RequestedFilings(limit=1, ticker_or_cik="NFLX", form_type="10-Q"))## Download the HTML files
After obtaining the Primary Document URL, for example from the metadata,
you can proceed to download the HTML using this URL.``` python
for metadata in metadatas:
html = dl.download_filing(url=metadata.primary_doc_url).decode()
print(html[:50])
break # same for all filings, let's just print the first one
```"\n