Back to WattGap
API Documentation

WattGap Rebate Data API

Machine-readable rebate intelligence for every US ZIP code.

The WattGap API provides structured rebate program data by ZIP code. Built for AI agents, chatbots, home improvement platforms, and applications that need source-attributed catalog records. Production catalog rows are not independently verified by WattGap and do not prove household eligibility. No API key required during public beta.

WattGap developer resources

WattGap API versioning and deprecation

WattGap versions public REST APIs in the URL path. The current Energy Intelligence API is /api/v1. Breaking changes require a new major version path. Additive changes may land in the current major version.

When a version is deprecated, responses include RFC 9745 Deprecation and Sunset headers. No current WattGap API version is deprecated. Errors use RFC 9457 application/problem+json with a machine-readable code and a human-readable detail. Rate-limit conventions: IETF RateLimit and RateLimit-Policy headers, plus Retry-After on HTTP 429.

Machine-readable policy: /api-versioning

WattGap CLI

The WattGap CLI queries the public API from a terminal so agents and developers can script ZIP lookups without writing an HTTP client. The package name is wattgap and it is published on the npm registry. Use the pinned release commands below; contributors can also run it directly from a WattGap source checkout.

npm install --global [email protected]
wattgap help
wattgap health
wattgap rebates 80205
wattgap profile 80205
wattgap openapi

npx --yes [email protected] help
npx --yes [email protected] rebates 80205

pnpm --filter wattgap wattgap help
pnpm --filter wattgap wattgap health
pnpm --filter wattgap wattgap rebates 80205
pnpm --filter wattgap wattgap profile 80205
pnpm --filter wattgap wattgap openapi

pnpm --filter wattgap build
node lib/wattgap-cli/dist/cli.js help
node lib/wattgap-cli/dist/cli.js rebates 80205
node lib/wattgap-cli/dist/cli.js --version

Endpoint

GEThttps://wattgap.com/api/rebates

Parameters

ParameterTypeRequiredDescription
zipstringYes5-digit US ZIP code
amistringNoAMI bracket: under_80_ami, under_150_ami
projectstringNoFilter by project type: heat_pump, water_heater, etc.

Example request

GET https://wattgap.com/api/rebates?zip=10001&ami=under_80_ami

Example response

Rewiring America catalog records preserve the source amount structure. A catalog amount does not prove household eligibility, does not prove that programs stack, and is not independently verified by WattGap. For that reason, the production catalog aggregate is withheld.

{
  "zip": "10001",
  "state": "NY",
  "data_source": "Rewiring America API",
  "total_available_usd": null,
  "total_available_usd_status": "withheld_non_additive_catalog_variants",
  "total_available_usd_reason": "The source catalog does not prove household eligibility, stacking compatibility, or additivity across incentive records.",
  "program_count": 1,
  "distinct_program_count": 1,
  "incentive_variant_count": 1,
  "programs": [
    {
      "id": "ra:08215dc11d0e79f26bba18e6e8f0af335201f761f564c180e5d0268e2838a536:0",
      "source_record_ref": "ra:08215dc11d0e79f26bba18e6e8f0af335201f761f564c180e5d0268e2838a536:0",
      "source_record_index": 0,
      "program_group_key": "ra-program:utility|example%20utility|heat%20pump%20rebate|https%3A%2F%2Fhomes.rewiringamerica.org%2Fcalculator",
      "name": "Example Utility -- Heat Pump Rebate",
      "authority": "Example Utility",
      "authority_type": "utility",
      "program_url": "https://homes.rewiringamerica.org/calculator",
      "amount_type": "percent",
      "source_amount_type": "percent",
      "amount_basis": "representative_estimate",
      "amount_usd": null,
      "representative_amount_usd": 2400,
      "maximum_amount_usd": 4000,
      "amount_rate": 0.3,
      "amount_unit": null,
      "payment_type": "rebate",
      "equipment": ["heat_pump"],
      "eligibility": {
        "ami_requirement": null,
        "owner_status": "homeowner",
        "geographic_restriction": null
      },
      "notes": "Thirty percent of eligible cost",
      "active": true,
      "start_date": null,
      "end_date": null,
      "last_verified_at": null,
      "confidence_tier": "unverified_passthrough",
      "confidence_note": "This record appears in the Rewiring America catalog. WattGap has not independently verified its current terms, availability, or household eligibility.",
      "source": "Rewiring America",
      "upstream_incentive_id": "ra-example-heat-pump-rebate",
      "is_urgent": false
    }
  ],
  "meta": {
    "currency": "USD",
    "catalog_retrieved_at": "2026-07-28T12:00:00.000Z",
    "response_generated_at": "2026-07-28T12:00:00.123Z",
    "data_source_url": "https://api.rewiringamerica.org",
    "ra_items_dropped": 0
  }
}

How to read the response

id, source_record_ref, source_record_index
id and source_record_ref are the same response-scoped reference. They are not a durable upstream program ID. source_record_index is the record's original position in the upstream response before WattGap filters rows.
upstream_incentive_id
The id Rewiring America carries on that source row, or null when the row has none. It is published so you can correlate a record with the upstream catalog and with WattGap support logs. It is not a primary key and not durable: the upstream catalog reuses and retires these values, and two returned rows can share one. Key your records on source_record_ref, never on this field.
program_count, distinct_program_count, incentive_variant_count
program_count and distinct_program_count count normalized program groups. incentive_variant_count counts returned source rows. Source variants remain separate and are not assumed to stack.
amount_usd, representative_amount_usd, maximum_amount_usd, amount_rate
amount_usd is the source catalog dollar amount only for a flat dollar record. representative_amount_usd is a representative estimate, and maximum_amount_usd is a cap. amount_rate is a fraction or per-unit rate that still requires household inputs. A null amount means the source did not supply a usable value for that field, not zero dollars.
amount_type, source_amount_type, amount_basis, amount_unit
source_amount_type retains the upstream type, while amount_type is WattGap's normalized type. amount_basis says which usable value determined the representation. amount_unit is a validated official unit and is null when there is no usable per-unit rate.
eligibility.ami_requirement, eligibility.owner_status
ami_requirement is always null on catalog records. The source catalog publishes no per-program AMI rule, so a program's AMI condition is genuinely unknown here rather than unrestricted. The upstream household AMI flags describe the household in the request, not a program's requirement, and the ami query parameter only scopes the upstream catalog lookup. For a household AMI determination with provenance, use /api/calculate-incentives. owner_status is reported only when the source row carries one.
catalog_retrieved_at, response_generated_at, last_verified_at
catalog_retrieved_at records the successful upstream retrieval. response_generated_at records when this response was created. Neither timestamp is a verification date. Unverified catalog rows therefore have last_verified_at: null.
Rate limit

Public API: 60 requests per minute per IP. No API key required during beta.

Use cases

AI Assistant Integration

Give your Perplexity plugin, ChatGPT action, or custom AI agent access to source-attributed rebate catalog records by ZIP code, with amount and verification limits encoded in the response.

Home Improvement Platforms

Use source-reported program structures as an input to your own household-specific eligibility flow. Catalog rows alone are not an approved net-cost calculation.

Contractor CRMs

Surface catalog programs and their caveats in your workflow while keeping rates, representative estimates, and source dollar amounts distinct.

Utility Portals

Help customers discover administering sources beyond the utility. The catalog does not assert that separate programs stack for a household.

Coming Soon

API Keys and Higher Rate Limits

Apply for early access to authenticated API access with higher rate limits and webhook support. Webhooks will push rebate program updates to your endpoint as programs are added or changed.

Apply for early access

Or email us directly: [email protected]