| name | edgartools |
| description | Python library for accessing, analyzing, and extracting data from SEC EDGAR filings. Use when working with SEC filings, financial statements (income statement, balance sheet, cash flow), XBRL financial data, insider trading (Form 4), institutional holdings (13F), company financials, annual/quarterly reports (10-K, 10-Q), proxy statements (DEF 14A), 8-K current events, company screening by ticker/CIK/industry, multi-period financial analysis, or any SEC regulatory filings. |
| license | MIT |
| metadata | {"skill-author":"K-Dense Inc."} |
edgartools — SEC EDGAR Data
Python library for accessing all SEC filings since 1994 with structured data extraction.
Authentication (Required)
The SEC requires identification for API access. Always set identity before any operations:
from edgar import set_identity
set_identity("Your Name your.email@example.com")
Set via environment variable to avoid hardcoding: EDGAR_IDENTITY="Your Name your@email.com".
Installation
uv pip install edgartools
uv pip install "edgartools[ai]"
Core Workflow
Find a Company
from edgar import Company, find
company = Company("AAPL")
company = Company(320193)
results = find("Apple")
Get Filings
filings = company.get_filings(form="10-K")
filing = filings.latest()
from edgar import get_filings
filings = get_filings(2024, 1, form="10-K")
from edgar import get_by_accession_number
filing = get_by_accession_number("0000320193-23-000106")
Extract Structured Data
tenk = filing.obj()
financials = company.get_financials()
financials = company.get_quarterly_financials()
income = financials.income_statement()
balance = financials.balance_sheet()
cashflow = financials.cashflow_statement()
xbrl = filing.xbrl()
income = xbrl.statements.income_statement()
Access Filing Content
text = filing.text()
html = filing.html()
md = filing.markdown()
filing.open()
Key Company Properties
company.name
company.cik
company.ticker
company.industry
company.sic
company.shares_outstanding
company.public_float
company.fiscal_year_end
company.exchange
Form → Object Mapping
| Form | Object | Key Properties |
|---|
| 10-K | TenK | financials, income_statement, balance_sheet |
| 10-Q | TenQ | financials, income_statement, balance_sheet |
| 8-K | EightK | items, press_releases |
| Form 4 | Form4 | reporting_owner, transactions |
| 13F-HR | ThirteenF | infotable, total_value |
| DEF 14A | ProxyStatement | executive_compensation, proposals |
| SC 13D/G | Schedule13 | total_shares, items |
| Form D | FormD | offering, recipients |
Important: filing.financials does NOT exist. Use filing.obj().financials.
Common Pitfalls
filing.financials → AttributeError; use filing.obj().financials
get_filings() has no limit param; use .head(n) or .latest(n)
- Prefer
amendments=False for multi-period analysis (amended filings may be incomplete)
- Always check for
None before accessing optional data
Reference Files
Load these when you need detailed information:
- companies.md — Finding companies, screening, batch lookups, Company API
- filings.md — Working with filings, attachments, exhibits, Filings collection API
- financial-data.md — Financial statements, convenience methods, DataFrame export, multi-period analysis
- xbrl.md — XBRL parsing, fact querying, multi-period stitching, standardization
- data-objects.md — All supported form types and their structured objects
- entity-facts.md — EntityFacts API, FactQuery, FinancialStatement, FinancialFact
- ai-integration.md — MCP server setup, Skills installation,
.docs and .to_context() properties