Skip to main content

Structured financial data from SEC EDGAR filings — 10-Q, 10-K, and 8-K

Project description

edgar-parser

Structured financial data from SEC EDGAR filings.

Give your Python application access to income statements, balance sheets, cash flows, and qualitative sections from 10-Q, 10-K, and 8-K filings — parsed directly from SEC EDGAR with no third-party data vendor required.

This isn't a raw EDGAR scraper. The library handles XBRL namespace resolution, fiscal period matching, current vs. prior period alignment, sign normalization, and fuzzy metric lookup — so you get clean, analysis-ready data.

What it does

Core Extraction (parse_filing)

  • Parses iXBRL facts from 10-Q and 10-K filings on SEC EDGAR
  • Resolves XBRL namespaces, units, scales, and dimensional qualifiers
  • Enriches facts with presentation roles and negated-label sign flipping

Period Matching (match_filing)

  • Aligns current and prior period values for each financial line item
  • Handles quarterly, full-year, and 4Q (derived annual) modes
  • Zip-matching with adaptive fallback to fuzzy matching for edge cases

8-K Earnings Extraction (earnings_8k) — optional, requires anthropic or openai

  • Extracts financial data from 8-K earnings press releases using Claude (primary) with OpenAI GPT-4o fallback
  • Automatic fallback when 10-Q/10-K is not yet available for a period
  • Same output schema as core extraction for seamless integration

Filing Sections (section_parser)

  • Parses qualitative sections from 10-K/10-Q filings (Risk Factors, MD&A, Business, etc.)
  • 8-K earnings release parsing via source="8k" — extracts narrative and tables from Item 2.02 exhibits
  • Summary and full-text modes with configurable word limits

High-Level Tools (tools)

  • get_financials(ticker, year, quarter) — all facts for a filing period
  • get_filings(ticker, year, quarter) — list available filings (10-Q, 10-K, 8-K)
  • get_metric(ticker, year, quarter, metric_name) — single metric lookup with fuzzy matching
  • get_filing_sections(ticker, year, quarter, source="8k") — qualitative section text (10-K/10-Q default, or 8-K earnings release)

Install

pip install edgar-parser

For 8-K earnings extraction (uses Claude API with OpenAI fallback):

pip install "edgar-parser[llm]"

Quick start

from edgar_parser.tools import get_financials, get_metric

# Get all financial facts from Apple's Q1 2025 10-Q
result = get_financials("AAPL", 2025, 1)
for fact in result["facts"][:5]:
    print(f"{fact['metric']}: {fact['current_value']}")

# Look up a single metric
revenue = get_metric("AAPL", 2025, 1, "Revenue")
print(f"Revenue: {revenue['value']} {revenue['unit']}")

Or use the lower-level API for more control:

from edgar_parser import parse_filing, match_filing

# Parse raw XBRL facts
parsed = parse_filing("AAPL", 2025, 1, full_year_mode=False)

# Match current vs. prior periods
matched = match_filing(parsed)
print(matched.head())

Key functions

Function Module Description
get_financials tools All facts for a ticker/period, with caching
get_filings tools List SEC filings (10-Q, 10-K, 8-K) for a period
get_metric tools Single metric lookup with fuzzy matching
get_filing_sections tools Qualitative section text (10-K/10-Q or 8-K with source="8k")
parse_filing pipeline Low-level XBRL fact extraction
enrich_filing pipeline Fiscal period categorization and enrichment
match_filing matching Current vs. prior period alignment
find_8k_for_period earnings_8k Find 8-K earnings release for a fiscal period

Requirements

  • Python 3.10+
  • No API key needed — data comes directly from SEC EDGAR (public)
  • Optional: ANTHROPIC_API_KEY environment variable for 8-K extraction
  • Optional: OPENAI_API_KEY environment variable for 8-K fallback when Anthropic API is unavailable

See also

  • edgar-mcp — MCP server that exposes EDGAR financial data as AI agent tools. If you're building with Claude Code or another MCP-compatible agent, use this instead.

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

edgar_parser-0.3.0.tar.gz (71.0 kB view details)

Uploaded Source

Built Distribution

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

edgar_parser-0.3.0-py3-none-any.whl (76.1 kB view details)

Uploaded Python 3

File details

Details for the file edgar_parser-0.3.0.tar.gz.

File metadata

  • Download URL: edgar_parser-0.3.0.tar.gz
  • Upload date:
  • Size: 71.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for edgar_parser-0.3.0.tar.gz
Algorithm Hash digest
SHA256 93e55112b1fa7be0204819311aa61d2d6404641af300f5c5b31c7ba70defd432
MD5 c67c280d57c1ba88ac9e6ddb9247752f
BLAKE2b-256 3210f9cb348fb5d3ad8c35b4fbe97ba20fadc9573954f81a78b317f2f7d8dc35

See more details on using hashes here.

File details

Details for the file edgar_parser-0.3.0-py3-none-any.whl.

File metadata

  • Download URL: edgar_parser-0.3.0-py3-none-any.whl
  • Upload date:
  • Size: 76.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.2

File hashes

Hashes for edgar_parser-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9a2138a3fb8cdf7dd721159b380c4d30036b6b2071ac5ab8b2e96e2a6f5eeef4
MD5 ea31de45b210a98f91df01fac671d6af
BLAKE2b-256 db5834bf0b906667bd8aa644db20ec5cf9100bd89b55ea57cddc0e705fb33124

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