API · Companies

Get revenue by country and region

Where the company's revenue comes from — ISO alpha-2 country codes + region rollups.

GET/api/v1/data/companies/{company}/revenue-geography

Returns the company's revenue split by country and region for one fiscal year. Mappable country rows come back with ISO alpha-2 codes so you can colour a world map directly.

When to use this

  • "Where does Apple sell?"
  • Building a revenue heatmap on a company page.
  • Quantifying geographic exposure ahead of a market-shift event.

Path

FieldTypeDescription
companyrequiredstringName, ticker, ISIN, or CIK. Examples: "Apple", "AAPL", "0000320193", "Neste".

Query

FieldTypeDescription
yearintegerFiscal year to query. Default: most recent available annual filing.

Example

bash
curl "https://api.clarifo.com/api/v1/data/companies/Apple/revenue-geography?year=2025" \
  -H "Authorization: Bearer $CLARIFO_API_KEY"

Response

json
{
  "company_name": "Apple Inc.",
  "company_id": "aapl",
  "market": "us",
  "year": 2025,
  "quarter": null,
  "period_type": "annual",
  "currency": "USD",
  "unit": "milj_usd",
  "total_revenue": 416161.0,
  "total_revenue_mappable": 216167.0,
  "additive_layer": "country+other",
  "overlap_warning": "Regions and countries overlap; total_revenue uses the country+other rows only. Do not sum all rows across categories.",
  "total_revenue_reconciliation": {
    "group_revenue": 416161.0,
    "group_revenue_source": "esef",
    "coverage_of_group_revenue": 1.0
  },
  "countries": [
    {"name": "United States", "name_native": null, "iso_alpha2": "US",
     "revenue": 151790.0, "page_id": "0000320193-25-000079"}
  ],
  "regions": [
    {"name": "Asia Pacific", "name_native": null, "entity_type": "multi_region",
     "revenue": 67680.0, "page_id": "…"}
  ],
  "other": [
    {"name": "Other countries (US filing)", "name_native": null,
     "entity_type": "other", "revenue": 199994.0,
     "page_id": "0000320193-25-000079"}
  ]
}

Top-level fields

FieldDescription
quarterQuarter number (1--4) for quarterly data, null for annual.
period_type"annual" or "quarterly".
additive_layerWhich layer total_revenue sums: "country", "country+other", "region", "region+other", or "other".
overlap_warningHow the layers overlap, plus any rows excluded from the total (per-segment, parent-company, or duplicate extractions).
total_revenue_reconciliationCross-check against consolidated group revenue for the same period. Omitted when no group revenue figure is available.

Each country, region, and other entry includes name_native (the name in the original filing language, e.g. "Yhdysvallat" for Finland or null when the filing is in English).

Country vs. region vs. other

The response is split into three buckets -- and they are not strictly additive. The additive_layer field tells you which bucket can be safely summed to match total_revenue.

BucketSourceNotes
countriesCountry-level disclosures with ISO codesSafe to sum when additive_layer starts with "country".
regionsMulti-country rollups ("EMEA", "Asia Pacific")Do not sum with countries -- some filers report both.
other"Other countries" catch-allCan be large (40 %+) for filers that disclose only top markets.

total_revenue is always one layer, never the sum of all rows. Filers disclose geography at several granularities at once and those layers overlap by construction: a "Europe" row and a "Finland" row describe the same euros. The chosen layer is reconciled against consolidated group revenue for the same period -- a layer whose sum exceeds group revenue is provably overlapping and is rejected in favour of the largest layer that does not.

Use total_revenue_reconciliation.coverage_of_group_revenue to see how much of the company's revenue the breakdown actually accounts for. A value below 1.0 is normal and expected; most filers break out only their largest markets.

Coverage

  • Nordic: all filers tracked by Clarifo's PDF pipeline.
  • US: ~1,450 filers with country-level XBRL disclosures (2020–2026). Smaller and segment-only filers may be absent.