---
title: "Top N emitters ranked by a metric for a given year"
method: GET
path: "/api/v1/environment/co2/top"
tags: ["Environment"]
---

# Top N emitters ranked by a metric for a given year

`GET /api/v1/environment/co2/top`

Ranks entities by a metric column in descending order for one year. Answers the `who emits most` family of questions without requiring the caller to pull and sort the full panel. By default, only sovereign countries compete (ISO-coded rows); pass `include_aggregates=true` to also surface OWID aggregate entities (regions, income groups). The metric must be a column name from the codebook. Popular picks: `co2`, `co2_per_capita`, `cumulative_co2`, `methane`, `temperature_change_from_co2`. Published under CC BY 4.0 with dual attribution to Our World in Data and the primary upstream providers.

## Query parameters

- `metric` string — Metric column name from the codebook. See `/api/v1/environment/co2/codebook` for the full list.
- `year` integer, required — Year to rank by. Must be within the bundle year range (1750-present).
- `limit` integer — Maximum rows to return (1 to 50).
- `include_aggregates` boolean — When true, OWID aggregate entities (regions, income groups, sectoral aggregates) compete alongside ISO-coded countries.

## Response `200`

Ranked entities with their metric value, plus unit and attribution.

- EnvelopeCo2TopPayload
  - `data` Co2TopPayload, required — Top-N emitters by a metric for a given year.
    - `metric` string, required — Metric column used for ranking (e.g. `co2`, `co2_per_capita`, `methane`).
    - `unit` string, nullable — Unit of measure from the codebook.
    - `description` string, nullable — Column description from the codebook.
    - `upstream_source` string, nullable — Primary data provider cited by the codebook for this metric.
    - `year` integer, required — Year the ranking applies to.
    - `limit` integer, required — Maximum rows requested.
    - `include_aggregates` boolean, required — When true, OWID aggregate entities (regions, income groups, sectoral aggregates) compete in the ranking alongside countries. Default is false (countries only).
    - `ranking` Co2TopRankRow[], required — Ordered list of top emitters, rank 1 = highest value.
      - `rank` integer, required — 1-indexed rank position in the descending ordering.
      - `country` string, required — Entity name as published by OWID.
      - `iso_code` string, nullable — ISO 3166-1 alpha-3 code. Null when `include_aggregates=true` surfaces an OWID aggregate entity.
      - `value` number, nullable — Metric value for this entity in the requested year.
    - `count` integer, required — Number of rows returned (may be smaller than `limit` if fewer entities have data for the year).
    - `attribution` string, required — CC BY 4.0 attribution string.
  - `meta` SugraMeta, required — Metadata attached to every /api/v1/* response envelope.
    - `endpoint` string, required — Requested endpoint path.
    - `data_time` string, required — ISO 8601 UTC timestamp of the source data, not of the request.
    - `response_time` string, required — ISO 8601 UTC timestamp when this response was produced.
    - `provider` string, required — API name and version.
    - `source` string, nullable — Identifier of the primary upstream source used for this response.
    - `attribution` string, nullable — Human-readable attribution mandated by an upstream source (e.g. a securities regulator or self-regulatory organization). Present only on responses whose source requires the owner and source to be clearly identified. Do not remove or alter it when using the response.
    - `fallback_used` boolean, nullable — True when the primary source failed and a fallback produced the data.
    - `fallback_chain` string[], nullable — Ordered list of sources attempted, in the order they were tried.
    - `cached` boolean, nullable — True when this response was served from the internal cache.
    - `stale` boolean, nullable — True when the cached response was returned after the upstream rate-limited or errored. Clients can use this to detect degraded data.

## Other responses

- `401` — Missing or invalid `x-api-key` header.
- `422` — Validation Error
- `429` — Daily rate limit exceeded. Check `X-RateLimit-Reset` for the next window.
- `503` — Upstream source is temporarily unavailable. Retry after a short delay.

---

[API](https://skmtc.net/sugra/apis/sugra-api.md) · [All operations](https://skmtc.net/sugra/apis/sugra-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/sugra/sugra-api/versions/dcf7427e6897/schema)
