Edgartools 6.0
edgartools 6.0 is live. Planned as a housekeeping release, it turned into a data correctness release once AI-assisted contributors started finding bugs faster than we could schedule them. What changed, what it means for your numbers, and what is next.
edgartools 6.0 is live. Use uv add edgartools or pip install -U edgartools to get the latest version of the open source library for working with SEC Edgar data. Inside are technical improvements I hope will work flawlessly without you noticing - like the switch to httpx2; and some small API changes that you might. Overall I recommend upgrading but first check the release notes and the upgrade guide to see what the impact on your workflow might be.
What is in this release
When first planned in August I meant this to be a housekeeping release. This meant dropping the legacy HTML parser, polishing the APIs, and crafting better error handling. I also wanted to put the library on a dependency diet given how often it is installed and how large the wheel had grown.
Here is what was promised in August, and landed:
- The legacy HTML parser is gone.
edgar.documentsnow parses every filing, exhibit and attachment, so text reads the same way everywhere. - BeautifulSoup is gone with it. Every parser runs on lxml and is a lot faster
- Failed calls raise an exception from
edgar.exceptionsinstead of returningNone. None now only means the filing does not have the data. - The public API is declared in
edgar.__all__, andpy.typedships so your type checker can read our annotations. - httpx2 replaces httpx. Catch
edgar.exceptions.TransportErrorrather than httpx exceptions. - Four dependencies left, including
unidecode, which was GPL. - Python 3.11 or newer, and pandas 2.2.2 or newer. Python 3.10 reached end of life on October 31.
Lazy module loading, which was meant to speed up import edgar, moved to 6.x.

Data Correctness
Since August that focus shifted towards data correctness. There was a huge increase in new issues - mainly through a couple of users developing on top of edgartools using AI workflows. AI models have become really good at finding bugs and raising PRs against open source projects. This is not unique to edgartools - Postgres 19 is delayed because so many new bugs are being found. We don't have nearly the codebase of Postgres, but it is a large project touching data from every SEC registered company that operates in the United States.

So this release includes several fixes uncovered by strong AI models. I recommend this release especially to get the added accuracy in financial workflows. If you have stored values from edgartools 5.x - in a database, a spreadsheet, a model - you should recompute them. The Values that change section of the upgrade guide is organized by area, so you can check only the calls you use.
Since so many of these fixes arrived as PRs, we also revamped the contribution process to streamline how we accept PRs. There is a new AGENTS.md and modifications to our Github workflows so that contributing to edgartools with AI is more efficient.
What's Next
6.0.1 will follow shortly with the contributor PRs that landed after the cutoff. Nothing in it changes the API.
The things that did not make 6.0 are on the 6.x milestone: lazy module loading so import edgar gets faster, moving CI to uv, and a few module consolidations. Each of those moves gets a deprecation warning first and an announcement on #936 before it lands, so if you have a fork, subscribe there.
There are also more than 70 reports tagged post-6.0 that arrived too late for the window. Those are the first body of work for 6.0.x and 6.1, and the same rule applies as before - every fix leaves a test behind.
If you stay on 5.x for now, 5.62.x gets security fixes and wrong-value fixes with no workaround until about February 2027. Nothing else is backported.
If something breaks on upgrade and it is not in the guide, that is a gap in the guide, not an intended surprise. Open an issue and it gets added.