emission-factors-com Lookup API
The Lookup API from emission-factors-com — 3 operation(s) for lookup.
The Lookup API from emission-factors-com — 3 operation(s) for lookup.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/emission-factors-com:emission-factors-com-lookup-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: emission-factors.com Lookup API
version: 2.1.0
description: 'US electricity and fuel emission data by ZIP code: EPA eGRID Scope 2 factors (location-based) with the Green-e residual mix (market-based), Scope 1 fuel factors, EIA retail rates and hourly grid intensity, EPA CAMD plant emissions and OpenEI utility tariffs. Free, no key. Query parameters and JSON body fields not listed here are rejected with 400.'
contact:
url: https://emission-factors.com
license:
name: 'Data licenses vary by source: US government works (public domain); eGRID2024, GHG Hub 2026, OpenEI URDB and ZIP-to-utility data, and GeoNames are CC-BY-4.0; the Green-e residual mix is published by the Center for Resource Solutions. See /methodology.'
url: https://emission-factors.com/methodology
servers:
- url: https://emission-factors.com
description: Production
tags:
- name: Lookup
paths:
/api/lookup:
get:
summary: Look up emission factors for a ZIP code
operationId: lookupByZip
x-unknown-field-hint: The eGRID edition parameter is year (2023 or 2024). For latitude/longitude, use /api/lookup/by-coordinates?lat=..&lon=..
parameters:
- name: zip
in: query
required: true
schema:
type: string
example: '94105'
description: 5-digit ZIP; ZIP+4 accepted
- name: year
in: query
required: false
schema:
type: string
enum:
- '2023'
- '2024'
default: '2023'
description: 2024 = eGRID2024 from Cornerstone (EPA code, 2024 inputs; CC-BY-4.0); residual mix only with 2023
responses:
'200':
description: '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.'
content:
application/json:
schema:
$ref: '#/components/schemas/LookupResponse'
'400':
description: Malformed ZIP (not 5 digits or ZIP+4) or invalid year
'429':
description: Rate limit exceeded
tags:
- Lookup
/api/lookup/by-coordinates:
get:
summary: Look up emission factors by latitude/longitude
operationId: lookupByCoordinates
parameters:
- name: lat
in: query
required: true
schema:
type: number
example: 37.7749
- name: lon
in: query
required: true
schema:
type: number
example: -122.4194
responses:
'200':
description: Resolved ZIP and emission factors
'400':
description: Invalid coordinates
'404':
description: No ZCTA at these coordinates
'503':
description: Census Geocoder unavailable; retry
tags:
- Lookup
/api/lookup/batch:
post:
summary: Look up emission factors for up to 100 ZIP codes
operationId: lookupBatch
x-unknown-field-hint: 'Batch always uses eGRID2023; for eGRID2024 call /api/lookup?year=2024. Full records are the default (compact: false).'
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- type: array
items:
type: string
maxItems: 100
- type: object
required:
- zips
properties:
zips:
type: array
items:
type: string
maxItems: 100
description: Strings (5 digits or ZIP+4); 3-4 digit strings and JSON numbers are zero-padded (2108 -> 02108), as spreadsheets drop leading zeros
compact:
type: boolean
default: false
description: One flat row per ZIP instead of full candidates; returns {edition, *_source fields, results}
envelope:
type: boolean
default: false
description: Return {edition, *_source fields, results} with full candidates instead of a bare array
responses:
'200':
description: A bare array of lookup results (default), or {edition, *_source fields, results} with compact or envelope. Always eGRID2023; use /api/lookup?year=2024 for eGRID2024.
'400':
description: Not an array or {zips}, empty, over 100, a non-string/number entry, or an unknown field
tags:
- Lookup
components:
schemas:
Candidate:
type: object
properties:
subregion:
type: string
example: CAMX
co2e_kg_per_kwh:
type: number
example: 0.195037
co2e_lb_per_mwh:
type: number
example: 429.983
co2_kg_per_kwh:
type: number
example: 0.194348
co2_lb_per_mwh:
type: number
example: 428.464
residual_mix_co2e_kg_per_kwh:
type: number
example: 0.196958
description: 'Green-e residual mix (2023 data): market-based Scope 2 factor. Absent for ?year=2024.'
residual_mix_co2e_lb_per_mwh:
type: number
example: 434.219
residual_mix_source:
type: string
description: 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:
type: string
description: Present where Green-e's published residual mix equals its system mix, so market-based equals location-based
data_status:
type: string
enum:
- non_epa
description: Present with ?year=2024 (Cornerstone run of EPA code)
data_source:
type: string
description: Provenance of non-EPA data (?year=2024)
source_unit:
type: string
utility:
type:
- object
- 'null'
properties:
primary:
type: string
eiaid:
type: integer
ownership:
type: string
service:
type: string
enum:
- bundled
- delivery
source:
type: string
description: 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).
utility_note:
type: string
description: Present when utility is null.
utilities:
type: array
items:
type: object
description: All utilities serving the ZIP, when more than one
ch4_kg_per_kwh:
type: number
example: 1.134e-05
ch4_lb_per_mwh:
type: number
example: 0.025
n2o_kg_per_kwh:
type: number
example: 1.36e-06
n2o_lb_per_mwh:
type: number
example: 0.003
co2_nonbaseload_kg_per_kwh:
type: number
example: 0.434679
co2_nonbaseload_lb_per_mwh:
type: number
example: 958.303
nox_lb_per_mwh:
type: number
example: 0.332
description: NOx total output emission rate (lb/MWh) - air quality / Title V
nox_kg_per_kwh:
type: number
example: 0.00015059
so2_lb_per_mwh:
type: number
example: 0.02
description: SO2 total output emission rate (lb/MWh) - acid rain, air quality
so2_kg_per_kwh:
type: number
example: 9.07e-06
carbon_free_pct:
type: number
example: 54.34
description: Percent of generation from nuclear + renewables
renewable_pct:
type: number
example: 46.36
generation_mix:
type: object
properties:
coal_pct:
type: number
oil_pct:
type: number
gas_pct:
type: number
nuclear_pct:
type: number
hydro_pct:
type: number
biomass_pct:
type: number
wind_pct:
type: number
solar_pct:
type: number
geothermal_pct:
type: number
other_fossil_pct:
type: number
other_pct:
type: number
data_year:
type: string
example: eGRID2023 Rev2 (2025-06-12)
methodology:
type: string
LookupResponse:
type: object
properties:
zip:
type: string
candidates:
type: array
items:
$ref: '#/components/schemas/Candidate'
notes:
type: string
edition_note:
type: string
description: 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.