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
- OpenAPI (JSON): https://wattgap.com/openapi.json
- OpenAPI (YAML): https://wattgap.com/api/openapi.yaml
- MCP server: WattGap for Agents -- POST https://wattgap.com/api/mcp
- MCP registry: https://wattgap.com/server.json
- MCP server card: https://wattgap.com/mcp/server-card
- AI catalog: https://wattgap.com/.well-known/ai-catalog.json
- RFC 9727 API catalog: https://wattgap.com/.well-known/api-catalog
- Agent index: https://wattgap.com/llms.txt
- API catalog: GET https://wattgap.com/api
- Versioning and deprecation: https://wattgap.com/api-versioning
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
https://wattgap.com/api/rebatesParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
zip | string | Yes | 5-digit US ZIP code |
ami | string | No | AMI bracket: under_80_ami, under_150_ami |
project | string | No | Filter 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
idandsource_record_refare the same response-scoped reference. They are not a durable upstream program ID.source_record_indexis 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
nullwhen 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 onsource_record_ref, never on this field. - program_count, distinct_program_count, incentive_variant_count
program_countanddistinct_program_countcount normalized program groups.incentive_variant_countcounts returned source rows. Source variants remain separate and are not assumed to stack.- amount_usd, representative_amount_usd, maximum_amount_usd, amount_rate
amount_usdis the source catalog dollar amount only for a flat dollar record.representative_amount_usdis a representative estimate, andmaximum_amount_usdis a cap.amount_rateis a fraction or per-unit rate that still requires household inputs. Anullamount 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_typeretains the upstream type, whileamount_typeis WattGap's normalized type.amount_basissays which usable value determined the representation.amount_unitis a validated official unit and isnullwhen there is no usable per-unit rate.- eligibility.ami_requirement, eligibility.owner_status
ami_requirementis alwaysnullon 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 theamiquery parameter only scopes the upstream catalog lookup. For a household AMI determination with provenance, use/api/calculate-incentives.owner_statusis reported only when the source row carries one.- catalog_retrieved_at, response_generated_at, last_verified_at
catalog_retrieved_atrecords the successful upstream retrieval.response_generated_atrecords when this response was created. Neither timestamp is a verification date. Unverified catalog rows therefore havelast_verified_at: null.
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.
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 accessOr email us directly: [email protected]