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 as shipped: nineteen 5.x releases to October 11, three breaking-change windows from October 12, a 5.62.x hotfix, and 6.0.0 on November 9, 2026, the date set in August

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.documents now 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.exceptions instead of returning None. None now only means the filing does not have the data.
  • The public API is declared in edgar.__all__, and py.typed ships so your type checker can read our annotations.
  • httpx2 replaces httpx. Catch edgar.exceptions.TransportError rather 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.

Bar chart of nine EdgarTools XML parsers after the move from BeautifulSoup to lxml: speedups from 2.7x on Forms 3, 4 and 5 to 9.0x on EFFECT notices, median 5.7x, measured end to end on 413 filings
The nine XML parsers moved from BeautifulSoup to lxml during 5.x, measured on 413 filings with every parsed field identical. 6.0 removes BeautifulSoup from the dependency list.

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.

Stacked bar of the 220 changelog entries between EdgarTools 5.62.1 and 6.0.0: 185 fixed, 14 removed, 13 changed, 4 added, 3 security, 1 performance, so fixes are 84 percent of the release
Of the 220 changelog entries between 5.62.1 and 6.0.0, 185 are fixes. The structural work is the other 35.

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.


πŸ› οΈ
EdgarTools is free and open source. If it saved you time, star the repo on GitHub β€” it helps other developers find it.

Subscribe to EdgarTools

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
jamie@example.com
Subscribe