emission-factors-com Lookup API

The Lookup API from emission-factors-com — 3 operation(s) for lookup.

Operations 3

GET /api/lookup Look up emission factors for a ZIP code #
GET /api/lookup/by-coordinates Look up emission factors by latitude/longitude #
POST /api/lookup/batch Look up emission factors for up to 100 ZIP codes #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/emission-factors-com:emission-factors-com-lookup-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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 Specification

emission-factors-com-lookup-api-openapi.yml Raw ↑
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.