Utility Rebate Change Tracker avatar

Utility Rebate Change Tracker

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Utility Rebate Change Tracker

Utility Rebate Change Tracker

Tracks changes in US utility & state energy incentive programs: rebate amount increases/decreases, new and removed programs, eligible equipment changes and date changes. Data source: DSIRE.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

Kasım Genç

Kasım Genç

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Tracks changes in US utility & state energy incentive programs and reports them as structured change records:

  • 💰 "Texas heat pump rebate went from $1,500 to $2,000"amount_increased
  • 🛠️ "This HVAC model class is no longer eligible"equipment_changed
  • 🆕 "A new solar battery rebate program opened"new_program
  • 🗑️ "Program disappeared from the database"program_removed

Data source: DSIRE (Database of State Incentives for Renewables & Efficiency, NC State University) — the authoritative database of US federal, state and utility energy incentive programs.

How it works

  1. On every run the Actor queries DSIRE for all programs matching your regions (US states) × categories (equipment/technology types).
  2. Each program is normalized into a comparable snapshot: incentive amounts (from DSIRE parameter sets), eligible equipment, dates, budget, summary/detail hashes.
  3. The snapshot is stored in a named key-value store (persists across runs). The next run diffs the fresh data against it and pushes one dataset record per changed program.
  4. The first run for a given configuration establishes the baseline. With emitBaselineRecords: true (default) it also outputs every currently-active matched program with changeType: "baseline", so you get the full picture immediately.

Schedule it (e.g. daily or weekly on the Apify platform) to get a continuous change feed. DSIRE program records are updated by analysts on weekdays, so daily is plenty.

Input

{
"regions": ["Texas", "Utah"],
"categories": ["hvac", "heat-pump", "solar", "battery"],
"sectors": ["Residential"],
"includeFederal": true,
"emitBaselineRecords": true,
"snapshotStoreName": "utility-rebate-tracker",
"maxConcurrency": 4
}
FieldTypeDescription
regions *string[]US states — full names ("Texas") or 2-letter codes ("TX").
categories *string[]Category slugs (below), raw DSIRE technology ids ("207"), or exact DSIRE technology names ("Solar Photovoltaics").
sectorsstring[]Optional sector filter: Residential, Commercial, Industrial, Agricultural, ... Empty = all.
includeFederalbooleanFederal programs apply to every state; disable to track state/utility programs only. Default true.
emitBaselineRecordsbooleanOutput all matched programs as baseline records on the first run. Default true.
snapshotStoreNamestringNamed key-value store holding snapshots between runs. Default utility-rebate-tracker.
maxConcurrencyintegerParallel DSIRE requests (1–10). Default 4.
proxyConfigurationobjectOptional Apify proxy settings.

Supported category slugs

hvac, heat-pump, solar, battery (aliases storage, energy-storage), ev, ev-charging, water-heater, appliances, lighting, insulation, building-envelope, wind, geothermal, biomass, hydro, fuel-cells, whole-building, plus the broad energy-efficiency and renewables.

Slugs are resolved against the live DSIRE technology list on every run, so newly added technologies (e.g. a new heat-pump subtype) are picked up automatically.

Output

One dataset record per changed program. Example — a rebate amount increase:

{
"program": "Renewable Energy Systems Tax Credit (Corporate)",
"programId": 248,
"url": "https://programs.dsireusa.org/system/program/detail/248",
"region": "Utah",
"state": "UT",
"sector": "Commercial",
"programType": "Corporate Tax Credit",
"administrator": "Utah Governor's Office of Energy Development",
"categoriesMatched": ["solar", "heat-pump"],
"eligibleEquipment": ["Geothermal Heat Pumps", "Solar Photovoltaics", "Solar Water Heat"],
"changeType": "amount_increased",
"oldAmount": 1100,
"newAmount": 1600,
"amountUnits": "$",
"amountQualifier": null,
"eligibleEquipmentChanged": false,
"equipmentAdded": [],
"equipmentRemoved": [],
"incentiveAmountText": "$1,600 per residential unit",
"maximumIncentiveText": "$1,600",
"effectiveDate": "2007-01-01",
"endDate": null,
"lastUpdated": "September 30, 2025",
"changes": [
{
"field": "amount",
"kind": "amount_increased",
"source": "Incentive",
"qualifier": "",
"units": "$",
"old": 1100,
"new": 1600,
"description": "Amount ($) changed from 1100 to 1600"
}
],
"detectedAt": "2026-07-10T13:21:06.608Z",
"source": "DSIRE (programs.dsireusa.org)"
}

changeType values

ValueMeaning
baselineFirst run for this configuration — current state of a program.
new_programProgram appeared that wasn't in the previous snapshot.
program_removedProgram disappeared from DSIRE results (ended/unpublished).
amount_increased / amount_decreased / amount_changedAn incentive amount changed (top-level oldAmount/newAmount/amountUnits).
amount_added / amount_removedA new incentive amount line appeared / was dropped.
equipment_changedEligible equipment list changed (see equipmentAdded/equipmentRemoved).
dates_changedProgram start/end date changed (see previousEffectiveDate).
program_renamedProgram name changed.
program_updatedOther material change (summary, budget, funding source, incentive detail text, ...).

Each record's changes array lists every field-level diff; changeType reflects the most significant one (amounts > equipment > dates > other).

A run summary is stored under the OUTPUT key of the default key-value store:

{
"isBaseline": false,
"programsTracked": 116,
"changesDetected": 5,
"byChangeType": { "amount_increased": 1, "equipment_changed": 1, "new_program": 1 }
}

Notes & limitations

  • The snapshot key is derived from the resolved configuration (states × technologies × sectors). Changing the input creates a new baseline rather than producing false program_removed records.
  • If any DSIRE request ultimately fails after retries, the run aborts without touching the stored snapshot, so a flaky run can't produce phantom changes.
  • Many programs express incentives as text tiers (e.g. "6%–30% depending on labor factors") rather than clean numbers; those changes are still caught via the Incentive Amount / Maximum Incentive detail texts (program_updated with old/new text in changes).
  • DSIRE covers the US only.

Scheduling & integrations

Create a daily or weekly Schedule on the Apify platform to turn this Actor into a continuous change feed, and use Apify integrations (webhooks, Slack, email, Zapier/Make) to get notified the moment a rebate changes.