Skip to main content

Async-enabled fork of edgartools with enhanced XBRL support for non-US GAAP financial statements

Project description

EdgarTools Python SEC EDGAR library logo

Async-Enabled Python Library for SEC EDGAR Data Extraction

PyPI - Version Hatch project GitHub

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

EdgarTools SEC filing data extraction demo

SEC Filing Data Extraction with Python

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

Apple's income statement in 1 line of code

balance_sheet = Company("AAPL").get_financials().balance_sheet()         

🚀 Quick Start (2-minute tutorial)

# 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()

Apple SEC Form 4 insider transaction data extraction with Python

⚡ Async API (New in edgartools-async)

Perfect for high-throughput pipelines and concurrent processing:

import asyncio
from edgar import get_company_async, 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
    from edgar._filings import load_sgmls_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())

Key Async Features:

  • get_company_async(): Non-blocking company instantiation
  • filing.sgml_async(): Async SGML file loading
  • load_sgmls_concurrently(): Batch concurrent loading with rate limiting
  • Thread-safe identity management: No stdin blocking in async contexts

🌍 Enhanced Non-US GAAP Support (New in edgartools-async)

Improved handling of international financial statements (IFRS, etc.):

Key Enhancements:

  • IFRS taxonomy support: Better detection and parsing of IFRS statements
  • Quarterly vs YTD fallback: Intelligently selects best available periods (prefers 3-month, falls back to YTD for cash flow)
  • Sparse period filtering: Removes comparison periods with incomplete data
  • Improved concept matching: Better revenue/income detection across taxonomies
  • Abstract element inference: Automatically identifies abstract/header rows
  • Revenue deduplication: Smarter handling of dimensional breakdowns vs parent totals

Example: Foreign Filer with IFRS

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

SEC Filing Analysis: Real-World Solutions

Company Financial Analysis

Problem: Need to analyze a company's financial health across multiple periods.

Microsoft SEC 10-K financial data analysis with EdgarTools

See full code

📚 Documentation

👥 Community & Support

🔮 Roadmap

  • Coming Soon: Enhanced visualization tools for financial data
  • In Development: Machine learning integrations for financial sentiment analysis
  • Planned: Interactive dashboard for filing exploration

🤝 Contributing

We welcome contributions from the community! Here's how you can help:

  • Code: Fix bugs, add features, improve documentation
  • Examples: Share interesting use cases and examples
  • Feedback: Report issues or suggest improvements
  • Spread the Word: Star the repo, share with colleagues

See our Contributing Guide for details.

❤️ Sponsors & Support

If you find EdgarTools valuable, please consider supporting its development:

Buy Me A Coffee

Your support helps maintain and improve EdgarTools for the entire community!

Key Features for SEC Data Extraction and Analysis

  • Comprehensive Filing Access: Retrieve any SEC filing (10-K, 10-Q, 8-K, 13F, S-1, Form 4, etc.) since 1994.
  • Financial Statement Extraction: Easily access Balance Sheets, Income Statements, Cash Flows, and individual line items using XBRL tags or common names.
  • SEC EDGAR API: Programmatic access to the complete SEC database.
  • Smart Data Objects: Automatic parsing of filings into structured Python objects.
  • Fund Holdings Analysis: Extract and analyze 13F holdings data for investment managers.
  • Insider Transaction Monitoring: Get structured data from Form 3, 4, 5 filings.
  • Clean Text Extraction: One-line conversion from filing HTML to clean, readable text suitable for NLP.
  • Targeted Section Extraction: Pull specific sections like Risk Factors (Item 1A) or MD&A (Item 7).
  • AI/LLM Ready: Text formatting and chunking optimized for AI pipelines.
  • Performance Optimized: Leverages libraries like lxml and potentially PyArrow for efficient data handling.
  • XBRL Support: Extract and analyze XBRL-tagged data.
  • Intuitive API: Simple, consistent interface for all data types.

EdgarTools is distributed under the MIT License.

📊 Star History

Star History Chart

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

edgartools_async-1.0.3.tar.gz (1.6 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

edgartools_async-1.0.3-py3-none-any.whl (1.7 MB view details)

Uploaded Python 3

File details

Details for the file edgartools_async-1.0.3.tar.gz.

File metadata

  • Download URL: edgartools_async-1.0.3.tar.gz
  • Upload date:
  • Size: 1.6 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.11.4

File hashes

Hashes for edgartools_async-1.0.3.tar.gz
Algorithm Hash digest
SHA256 ec7760481980428577356682ed5aded6e1e02a6b6f7f5fab5ff7101cd98e945c
MD5 b4fceb3dbedddf28e86acd76bf53d223
BLAKE2b-256 4cd4c080a5a07f583db4c1b1a51ee9819c080697013efc07801aa117ee3b26d8

See more details on using hashes here.

File details

Details for the file edgartools_async-1.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for edgartools_async-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 fe17dc4ec0b99a902883f12606509d7375a5f933af6f9054489a109168c24248
MD5 48ef0c9aab4ed307c0dbc3355d443045
BLAKE2b-256 780549e1daa89098cfefaf54a796eb3affd963366395c8354222e5cb0527c390

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page