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.
https://wattgap.com/api/rebates| 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. |
GET https://wattgap.com/api/rebates?zip=10001&ami=under_80_ami
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
}
}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.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 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 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.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.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 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.Public API: 60 requests per minute per IP. No API key required during beta.
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.
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.
Surface catalog programs and their caveats in your workflow while keeping rates, representative estimates, and source dollar amounts distinct.
Help customers discover administering sources beyond the utility. The catalog does not assert that separate programs stack for a household.
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]