---
title: "Look up emission factors for a ZIP code"
method: GET
path: "/api/lookup"
---

# Look up emission factors for a ZIP code

`GET /api/lookup`

## Request

- Base URL: `https://emission-factors.com`
- URL: `https://emission-factors.com/api/lookup`
- Auth: none declared

## Query parameters

- `zip` string, required
- `year` '2023' | '2024'

## Response `200`

Emission factors for the ZIP code. A well-formed ZIP with no eGRID mapping (PO box, territory) returns 200 with candidates: [] and the reason in notes.

- LookupResponse
  - `zip` string
  - `candidates` Candidate[]
    - `subregion` string
    - `co2e_kg_per_kwh` number
    - `co2e_lb_per_mwh` number
    - `co2_kg_per_kwh` number
    - `co2_lb_per_mwh` number
    - `residual_mix_co2e_kg_per_kwh` number: Green-e residual mix (2023 data): market-based Scope 2 factor. Absent for ?year=2024.
    - `residual_mix_co2e_lb_per_mwh` number
    - `residual_mix_source` string: Edition, release and CO2e basis (Green-e labels the rate lb CO2/MWh; its system mix equals eGRID CO2e, so it is used as CO2e)
    - `residual_mix_note` string: Present where Green-e's published residual mix equals its system mix, so market-based equals location-based
    - `data_status` 'non_epa': Present with ?year=2024 (Cornerstone run of EPA code)
    - `data_source` string: Provenance of non-EPA data (?year=2024)
    - `source_unit` string
    - `utility` object, nullable: Utility serving this ZIP (EIA-861 via OpenEI, 2023), full-service first. null where the ZIP is missing from those lists (about 5% of ZIPs, mostly Texas retail-choice areas; see utility_note).
      - `primary` string
      - `eiaid` integer
      - `ownership` string
      - `service` 'bundled' | 'delivery'
      - `source` string
    - `utility_note` string: Present when utility is null.
    - `utilities` object[]: All utilities serving the ZIP, when more than one
    - `ch4_kg_per_kwh` number
    - `ch4_lb_per_mwh` number
    - `n2o_kg_per_kwh` number
    - `n2o_lb_per_mwh` number
    - `co2_nonbaseload_kg_per_kwh` number
    - `co2_nonbaseload_lb_per_mwh` number
    - `nox_lb_per_mwh` number: NOx total output emission rate (lb/MWh) - air quality / Title V
    - `nox_kg_per_kwh` number
    - `so2_lb_per_mwh` number: SO2 total output emission rate (lb/MWh) - acid rain, air quality
    - `so2_kg_per_kwh` number
    - `carbon_free_pct` number: Percent of generation from nuclear + renewables
    - `renewable_pct` number
    - `generation_mix` object
      - `coal_pct` number
      - `oil_pct` number
      - `gas_pct` number
      - `nuclear_pct` number
      - `hydro_pct` number
      - `biomass_pct` number
      - `wind_pct` number
      - `solar_pct` number
      - `geothermal_pct` number
      - `other_fossil_pct` number
      - `other_pct` number
    - `data_year` string
    - `methodology` string
  - `notes` string
  - `edition_note` string: Which eGRID edition was used. For the default (2023) it also gives how eGRID2024 differs and the GWP basis (eGRID CO2e uses AR5); for year=2024 it gives the provenance and that the residual mix needs 2023.

## Other responses

- `400`: Malformed ZIP (not 5 digits or ZIP+4) or invalid year
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/emission-factors/apis/emission-factors-com-api.md) · [All operations](https://skmtc.dev/emission-factors/apis/emission-factors-com-api/llms.txt) · [OpenAPI document](https://skmtc.dev/emission-factors/apis/emission-factors-com-api/revisions/6a306ef2044a?raw)
