
Security News
Feross on TBPN: How North Korea Hijacked Axios
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.
edgartools-async
Advanced tools
Async-enabled fork of edgartools with enhanced XBRL support for non-US GAAP financial statements
Async fork of edgartools with enhanced XBRL support for non-US GAAP statements (IFRS, etc.). Extract financial data without blocking your event loop - perfect for high-throughput financial data pipelines.
⭐ ALL CREDIT GOES TO EDGARTOOLS ⭐ This is a temporary fork created solely to add async support for immediate production needs. ALL the heavy lifting, design, and core functionality is from the brilliant work of Dwight Gunning and the edgartools community.
Use the original edgartools for production - it's actively maintained, has extensive documentation, and a strong community. This fork exists only to add async APIs until they're merged upstream.
If you find this useful, please ⭐ star and support the original project: https://github.com/dgunning/edgartools

| With EdgarTools | Without EdgarTools |
|---|---|
| ✅ Instant access to any filing since 1994 | ❌ Hours spent navigating SEC.gov |
| ✅ Clean Python API with intuitive methods | ❌ Complex web scraping code |
| ✅ Automatic parsing into pandas DataFrames | ❌ Manual extraction of financial data |
| ✅ Specialized data objects for each form type | ❌ Custom code for each filing type |
| ✅ One-line conversion to clean, readable text | ❌ Messy HTML parsing for text extraction |
| ✅ LLM-ready text extraction for AI pipelines | ❌ Extra processing for AI/LLM compatibility |
| ✅ Automatic throttling to avoid blocks | ❌ Rate limiting headaches |
balance_sheet = Company("AAPL").get_financials().balance_sheet()
# 1. Import the library
from edgar import *
# 2. Tell the SEC who you are (required by SEC regulations)
set_identity("your.name@example.com") # Replace with your email
# 3. Find a company
company = Company("MSFT") # Microsoft
# 4. Get company filings
filings = company.get_filings()
# 5. Filter by form
insider_filings = filings.filter(form="4") # Insider transactions
# 6. Get the latest filing
insider_filing = insider_filings[0]
# 7. Convert to a data object
ownership = insider_filing.obj()

Perfect for high-throughput pipelines and concurrent processing:
import asyncio
from edgar.async_api import get_company_async, load_sgmls_concurrently
from edgar import set_identity
async def main():
# Set identity BEFORE async operations
set_identity("your.name@example.com")
# Load company data without blocking event loop
company = await get_company_async("AAPL", user_agent="your.name@example.com")
# Load SGML data asynchronously
filings = company.get_filings(form="10-K")
sgml = await filings[0].sgml_async()
# Batch load multiple filings concurrently
filings_list = list(company.get_filings(form="10-Q"))[:10]
sgmls = await load_sgmls_concurrently(filings_list, max_in_flight=32)
print(f"Loaded {len(sgmls)} filings concurrently!")
asyncio.run(main())
get_company_async(): Non-blocking company instantiationfiling.sgml_async(): Async SGML file loadingload_sgmls_concurrently(): Batch concurrent loading with rate limitingImproved handling of international financial statements (IFRS, etc.):
from edgar import Company
# Works seamlessly with non-US GAAP filers
company = Company("SAP") # German company using IFRS
financials = company.income_statement(periods=4, annual=True)
# Automatically detects and parses IFRS taxonomy
Problem: Need to analyze a company's financial health across multiple periods.

We welcome contributions from the community! Here's how you can help:
See our Contributing Guide for details.
If you find EdgarTools valuable, please consider supporting its development:
Your support helps maintain and improve EdgarTools for the entire community!
lxml and potentially PyArrow for efficient data handling.EdgarTools is distributed under the MIT License.
FAQs
Async-enabled fork of edgartools with enhanced XBRL support for non-US GAAP financial statements
We found that edgartools-async demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Socket CEO Feross Aboukhadijeh breaks down how North Korea hijacked Axios and what it means for the future of software supply chain security.

Security News
OpenSSF has issued a high-severity advisory warning open source developers of an active Slack-based campaign using impersonation to deliver malware.

Research
/Security News
Malicious packages published to npm, PyPI, Go Modules, crates.io, and Packagist impersonate developer tooling to fetch staged malware, steal credentials and wallets, and enable remote access.