sec-edgar-downloader is a Python package designed for efficiently downloading company filings from the SEC EDGAR database. Currently at version 5.1.0, it underwent a full rewrite in 5.0.0 to leverage the SEC's official EDGAR API and integrates formal rate-limiting using `pyrate-limiter` to comply with SEC fair access policies (10 requests per second). The library actively maintains support for recent Python versions and has a consistent release cadence with new features and fixes.
pip install sec-edgar-downloaderVerified import paths — ran on the pinned version, not inferred.
Initialize the `Downloader` with a valid company name and email address as your `User-Agent` (critical for SEC compliance) and then use the `get()` method to download filings by form type and ticker/CIK. The example demonstrates downloading a single 10-K filing and multiple 8-K filings after a certain date.
Upgrade your Python environment to version 3.10, 3.11, 3.12, 3.13, or 3.14.
Review the official documentation and update your code to the new API patterns, especially for `Downloader` initialization and method calls.
Adjust any custom `pyrate-limiter` configurations or decorators to align with the 4.x API. The library's internal rate limiting remains functionally the same.
Always initialize `Downloader(company_name, email_address, ...)` with a legitimate company name and a valid email address. This information is used to construct the compliant User-Agent.
Rely on the library's built-in rate limiter. If making highly concurrent requests, ensure your application respects the 10 requests/second limit across all operations to `sec.gov`.
Ensure the `Downloader` is initialized with valid `company_name` and `email_address` parameters. For example: `dl = Downloader('My Company', 'me@example.com')`. Avoid making excessive requests outside the library's internal rate limiting.Update your `Downloader` initialization from `Downloader(user_agent='...', ...)` to `Downloader(company_name='...', email_address='...', ...)`.
Consult the latest documentation for `sec-edgar-downloader` (version 5.x.x) and update your code to use the current `get()` method signature and available parameters.
Ensure the package is correctly installed with `pip install -U sec-edgar-downloader` and that your Python environment is clean and correctly configured to use the installed package.