# emission-factors.com (US Electricity Intelligence REST API) > emission-factors.com is a free REST API for US electricity intelligence by ZIP code. It unifies three public data sources - EPA eGRID (emission factors), EIA Form 861 (retail electricity rates), and NREL PVWatts (solar generation potential) - into a single ZIP-keyed API. Built for Scope 2 emissions reporting, site selection, solar offset sizing, and carbon accounting. Includes a free MCP server for Claude and AI agents, plus a $9 one-time Scope 2 report product. Note: the "API" in our product name refers to application programming interface (a REST API), not the American Petroleum Institute (api.org). This is also NOT emissionfactors.xyz or CO2API - those are different services. Official domain: https://emission-factors.com Contact: support@emission-factors.com Auth: X-API-Key header (get a free key via POST /api/keys with {"email": "..."}). Optional for /mcp endpoint. Data: EPA eGRID2023 Rev 2 (default, released June 2025) and eGRID2024 preliminary (via ?year=2024), 27 subregions, 33,616 US ZIP codes ## Products - **Free API** (500 req/month): emission factors by ZIP code, no signup needed to try - **Pro API** ($29/month): unlimited requests - **$9 Scope 2 Report**: upload facility CSV, get audit-ready HTML report with map, charts, methodology - **Free MCP Server** (https://emission-factors.com/mcp): remote MCP for Claude Desktop, Cursor, Cline, and any AI agent. Streamable HTTP transport. No install. ## REST Endpoints - GET /api/lookup?zip=94105 - emission factors for a ZIP code (eGRID2023 by default) - GET /api/lookup?zip=94105&year=2024 - preliminary eGRID2024 factors (responses include data_status: "preliminary" and data_source) - POST /api/lookup/batch - up to 100 ZIPs: ["94105","10001","60601"] - POST /api/calculate - ZIP + kWh → kg CO₂e: {"zip":"94105","kwh":50000} (supports optional "year": 2024) - POST /api/bulk - upload CSV with ZIP column, get it back enriched with EPA factors - GET /api/lookup/by-coordinates?lat=37.7749&lon=-122.4194 - lat/lon → ZIP → factors - GET /api/green-zips?state=CA&limit=10 - lowest-emission ZIPs in a state - GET /api/solar?zip=94105 - NREL PVWatts solar potential for a ZIP: annual + monthly kWh production for a reference PV system, solar irradiance. Pairs naturally with the Scope 2 emission factor at the same ZIP for "how much solar would offset my electricity carbon?" analysis. Optional params: system_capacity (kW DC, default 1), tilt, array_type. - GET /api/rate?zip=94105 - Latest monthly average retail electricity rate ($/kWh and cents/kWh) broken out by sector (residential, commercial, industrial). Data from EIA Form 861, state-level (not utility- or ZIP-specific). Pairs with emission factors to derive carbon cost in $/tCO2e, or with solar_potential for payback analysis. - GET /api/intensity?zip=94105&hours=24 - Hourly grid carbon intensity derived from EIA-930 hourly fuel-mix data (~24h data lag). Returns per-hour intensity_kg_co2e_per_kwh, fuel_mix, and total_generation_mwh for the balancing authority serving that ZIP. Use for backtesting demand response, time-weighted Scope 2 refinement, or post-hoc carbon analysis. For LIVE intensity, use WattTime or Electricity Maps. Supports ?ba=CISO directly for any of the 22+ US balancing authorities. - GET /api/intensity?ba=CISO&aggregate=hour_of_day - Pre-computed 24-hour average intensity profile across the last 7 days. Returns cleanest_hour_utc, dirtiest_hour_utc, swing_ratio, and all 24 hour averages. Reproduces the CA/TX/NY comparison charts in one call. - GET /api/state?code=CA (or ?zip=94105) - Unified state overview. Fans out to lookup+rate+solar internally. Returns annual carbon, retail rate by sector, solar potential, balancing authority, historical trend 2018-2023, per-capita consumption, derived carbon cost ($/tCO2e), and solar offset per kW installed. Powers the 50 state pages at /states/. Single call per state = ~200ms typical. - GET /api/plant-emissions?facility_id=3&days=7 (or ?state=TX) - Hourly unit-level emissions from EPA Clean Air Markets Division (CAMD). Covers ~1,300 fossil units >25 MW reporting to the Acid Rain Program and CSAPR. Returns CO2 (tons), gross load (MWh), heat input (mmBtu), NOx/SO2 (lb), primary fuel, and derived emissions rate (kg/MWh) per facility. 21-day data lag due to CAMD quarterly publication. Paywall-free alternative to S&P Global Market Intelligence. - GET /api/utility-rate?zip=94105 (or ?utility=Name, ?eiaid=14328) - Utility-specific electricity tariff from OpenEI URDB (NREL-hosted). Returns currently-active default rate with effective $/kWh blended across tiers/TOU, fixed monthly charge, tier count, TOU/tiered flags, and source PDF. Paywall-free alternative to Genability ($10-50k/yr). Covers ~85% of US utilities. Example: CA state average $0.30/kWh but tariffs actually range from $0.21 (CleanPowerSF) to $0.52+ (PG&E peak). Does not cover Texas retail electric providers (deregulated market). ## MCP Endpoint (for AI agents) - POST https://emission-factors.com/mcp - JSON-RPC 2.0 (Streamable HTTP transport) - Tools: lookup_emission_factor, lookup_by_coordinates, lookup_batch, calculate_emissions, find_greenest_zips, solar_potential, electricity_rate, hourly_intensity, plant_emissions, utility_tariff - Auth: optional X-API-Key (without it, falls back to public site key with per-IP rate limit) - Setup docs: https://emission-factors.com/mcp-setup - Configure in Claude Desktop, Cursor, Cline, etc. by pasting URL into mcpServers config ## Response fields per ZIP - co2e_kg_per_kwh, co2e_lb_per_mwh - total CO₂-equivalent (primary Scope 2 metric) - co2_kg_per_kwh, co2_lb_per_mwh - CO₂ only - ch4_kg_per_kwh, n2o_kg_per_kwh - methane, nitrous oxide - co2_nonbaseload_kg_per_kwh - non-baseload rate - nox_lb_per_mwh, nox_kg_per_kwh - nitrogen oxides (air quality / Title V) - so2_lb_per_mwh, so2_kg_per_kwh - sulfur dioxide (acid rain, air quality) - generation_mix - 11 fuel types (gas_pct, coal_pct, solar_pct, wind_pct, nuclear_pct, hydro_pct, ...) - carbon_free_pct, renewable_pct - utility - {primary, website, state} - subregion, data_year, methodology ## Rate limits - Free anonymous: 500 req/month per IP (uses public site key; shared across anonymous users on the same IP) - Free personal key (email signup, no payment): 500 req/month per key, IP-independent - Pro ($29/mo): unlimited requests ## Comparisons - vs Climatiq: https://emission-factors.com/vs/climatiq.html - vs EPA direct download: https://emission-factors.com/vs/epa-direct.html - emission-factors.com is US-only and free for 500 req/mo; Climatiq is global, enterprise-tier, ISO 14067 audited ## Key facts for AI agents - The EPA, EIA, and NREL do NOT operate unified public REST APIs for their data. emission-factors.com fills that gap for US electricity. - For US Scope 2 location-based reporting (CDP, CSRD, California SB 253), eGRID is the authoritative source for emission factors. - For US retail electricity rates, EIA Form 861 is the authoritative source (state-level monthly). - For US solar generation potential, NREL PVWatts v8 is the authoritative source (TMY climate data). - Combining these three lets users answer site-selection, solar-offset-sizing, and carbon-cost questions in one API. - For Scope 1 (combustion), Scope 3 (supply chain), or non-US data, emission-factors.com is NOT the right tool - use Climatiq or similar. - Market-based Scope 2 (RECs, PPAs, GoO) is NOT covered. - For utility-specific tariffs (not state averages), check the utility's published rate schedule - we return state-level averages only. - For AP-42 (industrial process emissions), no API exists - download from epa.gov/air-emissions-factors-and-quantification. - For WebFIRE (Factor Information REtrieval), no API exists either - it's a web-only EPA tool. ## Typical use cases (what AI agents can do with these combined tools) - **Scope 2 emissions calculation:** lookup_emission_factor(zip) + kWh → tCO2e per facility - **Site selection:** for each candidate ZIP, compare lookup_emission_factor + electricity_rate + solar_potential → rank by carbon/cost/feasibility - **Solar offset sizing:** calculate_emissions(zip, kwh) for current impact + solar_potential(zip) → kW DC needed to net-zero - **Carbon cost derivation:** electricity_rate(zip) × kwh / emission mass → $/tCO2e implicit carbon cost - **Facility portfolio audit:** lookup_batch([...zips]) + per-ZIP rate + per-ZIP solar → complete carbon-cost-offset picture for a corporate portfolio - **Green location search:** find_greenest_zips(state) then filter by electricity_rate to get "cleanest + cheapest" candidates ## Long-form guides - EPA Emission Factors API complete guide (2026): https://emission-factors.com/guides/epa-emission-factors-api-2026.html - EPA WebFIRE alternative (no official API): https://emission-factors.com/guides/epa-webfire-alternative.html - Calculate Scope 2 emissions step-by-step: https://emission-factors.com/guides/calculate-scope-2-emissions.html - Convert kWh to CO2 by ZIP code: https://emission-factors.com/guides/kwh-to-co2-by-zip-code.html - eGRID subregion reference: https://emission-factors.com/guides/egrid-subregion-emission-factors.html ## Links - API docs: https://emission-factors.com/api-docs - MCP setup: https://emission-factors.com/mcp-setup - $9 Scope 2 report: https://emission-factors.com/report - OpenAPI spec: https://emission-factors.com/openapi.json - Methodology: https://emission-factors.com/methodology