{"id":24567,"library":"sec-downloader","title":"SEC Downloader","description":"sec-downloader is a Python library that provides useful extensions for sec-edgar-downloader, including the ability to download SEC filings asynchronously, cache filings, and handle concurrent rate limits. The current version is 0.12.2, compatible with Python >=3.7. It is actively maintained with periodic releases.","status":"active","version":"0.12.2","language":"python","source_language":"en","source_url":"https://github.com/Elijas/sec-downloader","tags":["sec","edgar","async","downloader"],"install":[{"cmd":"pip install sec-downloader","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Core dependency for SEC EDGAR download functionality","package":"sec-edgar-downloader","optional":false},{"reason":"Async HTTP requests","package":"aiohttp","optional":false}],"imports":[{"note":"The correct import is directly from sec_downloader.","wrong":"from sec_downloader.downloader import AsyncEdgarDownloader","symbol":"AsyncEdgarDownloader","correct":"from sec_downloader import AsyncEdgarDownloader"},{"note":"DownloadDetails is exported from the top-level module.","wrong":"from sec_downloader.models import DownloadDetails","symbol":"DownloadDetails","correct":"from sec_downloader import DownloadDetails"}],"quickstart":{"code":"import asyncio\nfrom sec_downloader import AsyncEdgarDownloader\n\nasync def main():\n    async with AsyncEdgarDownloader() as downloader:\n        details = await downloader.get_filing_details('AAPL', '10-K', limit=1)\n        for d in details:\n            print(d.filing_url)\n\nasyncio.run(main())","lang":"python","description":"Async download of a 10-K filing for Apple using the default rate limiter."},"warnings":[{"fix":"Update your code to use `get_filing_details` and handle `DownloadDetails` objects instead of raw strings.","message":"In version 0.12.0, the method `download_filing` was renamed to `get_filing_details` and its return type changed from string to a list of `DownloadDetails` objects.","severity":"breaking","affected_versions":"<0.12.0"},{"fix":"Always use `async with AsyncEdgarDownloader() as edgar:` to ensure proper session lifecycle.","message":"AsyncEdgarDownloader uses aiohttp.ClientSession internally. Do not reuse the same session after closing the context manager; create a new instance for each connection.","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run `pip install sec-downloader` in your current environment or activate the correct virtual environment.","cause":"The package is not installed or installed in a different Python environment.","error":"ModuleNotFoundError: No module named 'sec_downloader'"},{"fix":"Ensure your requests are spaced out. The async downloader handles this automatically, but if you see this error, reduce concurrency or increase delay between requests.","cause":"The SEC EDGAR server enforces a rate limit of 10 requests per second. The library's built-in rate limiter is being triggered.","error":"sec_downloader.exceptions.RateLimitExceeded: SEC EDGAR rate limit reached. Please wait before making more requests."}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}