edgar-geo-revenue

Extract geographic revenue breakdowns from SEC EDGAR 10-K filings — the revenue-by-country split a company actually disclosed, resolved to ISO country codes.

import edgar_geo_revenue as egr
egr.set_user_agent("Your Name your@email.com")
egr.fetch_geo_revenue("AAPL")
# {'fiscal_year': 2025, 'total_revenue_usd': 416161000000,
#  'segments': [['US', 36.47], ['CN', 15.47]],
#  'region_segments': [['INTL', 48.06]], 'pct_coverage': 100.0}

Source on GitHub · MIT licensed

Why geographic revenue is hard to extract

The filing is easy to fetch. The difficulty is that revenue-by-geography has no standard location, table shape, or label vocabulary in EDGAR:

Rules here survived a production audit of 463 SEC filers, of which 262 had a usable geographic disclosure. Much of the remainder genuinely do not disclose one.

What it deliberately refuses to do

Each of these is a plausible heuristic that was tried in production, produced wrong numbers, and was removed:

Combined place labels are resolved on the set of places, not the label text, so {EUROPE, MEA} is recognised as EMEA and {US, CA} as North America across every punctuation variant.

Returned fields

Field Meaning
fiscal_year Fiscal year from the filing’s own period metadata
total_revenue_usd Total revenue for that year, USD
segments [[ISO2, percent], …] country-level rows
region_segments [[REGION, percent], …] genuinely region-level rows
pct_coverage Share of total revenue the rows account for

None means no geographic disclosure was found — a normal result, not an error.

SEC EDGAR fair-access compliance

This library fetches only public filings from SEC EDGAR, and it is built to stay inside the SEC’s fair-access policy for automated tools:

Filing content is public domain as a US government work. This library is MIT licensed and is not affiliated with or endorsed by the SEC.


Built from the extraction layer behind MetricsHour, which publishes geographic revenue exposure for listed companies alongside macro and trade data. For the parsed dataset with country pages and screening, see metricshour.com/screener.