edgartools
Python library to access and analyze SEC Edgar filings, XBRL financial statements, 10-K, 10-Q, and 8-K reports
What it is and what it does
EdgarTools is a Python library that fetches SEC EDGAR filings and converts them into typed Python objects and pandas DataFrames, eliminating the need to parse raw XBRL or HTML yourself. It wraps the free SEC EDGAR API and handles the messy work of standardizing financial statements, insider trades, fund holdings, proxy statements, and other forms into a consistent, queryable format. You identify yourself with an email, then call methods to get clean, structured data in a few lines.
The library is built for production use: it includes configurable rate limiting, smart caching, type hints throughout, and an MCP server for AI integration. It has 21 runtime dependencies (httpx, pandas, pydantic, lxml, beautifulsoup4, and others) that handle HTTP requests, data manipulation, parsing, and text processing. The dependency footprint is moderate but standard for a data-extraction tool of this scope. It supports Python 3.10 through 3.14 and is actively maintained.
Use it for:
- Extract standardized income statements, balance sheets, and cash flow from 10-K and 10-Q filings for cross-company financial analysis.
- Query insider trading transactions from Form 4 filings as a DataFrame to track executive buy/sell activity.
- Retrieve 13F institutional holdings to analyze hedge fund and mutual fund portfolios over time.
- Parse 8-K current reports to identify corporate events programmatically.
- Build time-series datasets of financial metrics across companies using the Company Facts API.
- Feed SEC filing text and structured data into RAG pipelines or AI systems via the built-in MCP server.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
EdgarTools parses SEC EDGAR filings into typed Python objects and pandas DataFrames, extracting financial statements, insider trades, fund holdings, and other filing types with a consistent API.
Yes. EdgarTools is actively maintained, has low install friction, carries no security vulnerabilities, and solves a real problem—turning free but messy SEC data into usable Python objects. The MIT license is permissive. The 21 dependencies are all standard and well-maintained. Use it if you need to work with SEC filings programmatically. The main gotcha is that you must provide an email to the SEC with every request, but that is a documented requirement.
Install
edgartools on PyPI
pip
pip install edgartoolsuv
uv add edgartoolspoetry
poetry add edgartoolsInstalling edgartools
Before you install
Low friction: pure Python wheel with no compiled dependencies. Active maintenance—last commit 2026-08-14, 2586 GitHub stars. Supports Python 3.10 through 3.14. 21 runtime dependencies are all well-established, adding moderate but manageable footprint.
License in practice
MIT license (permissive): you can use, modify, and distribute EdgarTools freely in commercial and private projects with minimal restrictions. No copyleft obligations.
Quickstart
pip install edgartools
from edgartools import Company, set_identity
set_identity("your.name@example.com")
Company("AAPL").get_financials().income_statement()
SEC EDGAR requires an email address (set via set_identity) with every request; no API key or signup needed, but the email is mandatory.
Verify before relying
- Exact count of supported form types beyond the examples listed in the description.
- Performance characteristics when querying large date ranges or many companies in sequence.
- Whether the built-in rate limiting and caching are sufficient for high-volume pipelines without tuning.
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 21 — beautifulsoup4, httpx, httpxthrottlecache, humanize, jinja2, lxml, nest-asyncio, orjson, pandas, pyarrow, pydantic, pyrate-limiter, rank-bm25, rapidfuzz, rich, stamina, tabulate, textdistance, tqdm, truststore, unidecode |
| Maintenance | actively maintained — 2 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 941,567/month — #4,677 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: edgartools-5.48.0-py3-none-any.whl
Keywords: 10-K, 10-Q, 13F, 8-K, annual report, company filings, edgar, edgar api, edgar filings, filings, finance, financial data, financial statements, form 4, insider trading, institutional holdings, python, quarterly report, sec, sec api, sec filings, stock filings, xbrl
Tags
More Information Analysis packages
A drop-in replacement for Python's standard…
permissive · top 100 on PyPI
pyarrowpyarrow provides Python bindings to Apache…
permissive · top 100 on PyPI
networkxNetworkX provides data structures and…
permissive · top 1,000 on PyPI
snowflake-connector-pythonConnects Python applications to Snowflake data…
permissive · top 1,000 on PyPI
contourpyContourPy calculates contours of 2D…
permissive · top 1,000 on PyPI
snowflake-snowpark-pythonSnowpark Python provides APIs to query and…
permissive · top 1,000 on PyPI
arelle-releaseArelle is an end-to-end XBRL processor that…
permissive · top 15,000 on PyPI
sec-apiA Python client for the SEC-API.io service that…
permissive · top 15,000 on PyPI
sec-edgar-downloaderDownloads SEC EDGAR company filings by ticker…
permissive · top 15,000 on PyPI
openbb-secIntegrates SEC EDGAR data into the OpenBB…
agpl · top 15,000 on PyPI
yahooqueryRetrieves financial data from Yahoo Finance…
permissive · top 15,000 on PyPI
finvizfinanceScrapes financial data from FinViz website,…
permissive · top 15,000 on PyPI
ofxparseParses Open Financial Exchange (.ofx) format…
permissive · top 15,000 on PyPI
tradingeconomicsProvides Python access to over 300,000 economic…
permissive · top 15,000 on PyPI
pandas-taProvides over 150 technical analysis indicators…
unclear · top 5,000 on PyPI
vnstockVnstock fetches Vietnamese stock market…
noncommercial · top 15,000 on PyPI