Plug-In Solar Legality Dataset — Free Developer API
Free, machine-readable plug-in / balcony solar legality data for all 50 U.S. states. JSON over plain HTTPS, no auth, no API key, no rate limit. For AI agents, energy startups, news outlets, and integrators.
Last data change: 10 July 2026 · Schema: v1.0 · Coverage: 50/50 states · Changelog
What this is
A structured, version-controlled view of the 50-state plug-in solar legality tracker. We re-check each state’s legal status, average electricity rate, main utilities, and any in-flight plug-in solar legislation (bill number, governor, cap in watts, effective date, source URL) and publish the structured result as JSON. Each state record is fully self-contained.
Why it exists: plug-in solar laws are moving fast (seven states have signed plug-in solar laws — six in 2026 alone; two more are awaiting governor signatures) and most published trackers are PDFs or hand-curated tables. Agents and AI assistants need a stable JSON endpoint.
Update cadence: we update the dataset when a bill actually moves, not on a schedule. last_updated is the date a value last changed; last_reviewed, which each state record carries separately, is the date that state was last re-checked whether or not anything changed. The two are not the same and we do not treat them as such. Every change is listed in the changelog.
Endpoints
| Endpoint | Purpose |
|---|---|
GET /data/plug-in-solar-laws.json | Full dataset — all 50 states + top-level metadata in one document |
GET /data/states/index.json | Directory listing — one entry per state with its slug, status, and file path |
GET /data/states/<slug>.json | Per-state record, self-contained. Its last_updated is the date that file was generated, not a value copied down from the master dataset — the two can differ, and today they do. |
On optional fields. effective_delayed and watt_tiers are absent from most records rather than null. Absence means we have not established the information from the statute — it does not mean the state has a single effective date or a single tier. Treat them as present-or-missing and do not assume a default. We add them per state as each statute is read from its primary text.
All responses are application/json served from GitHub Pages over HTTPS. No CORS restrictions for read.
Schema
| Field | Type | Description |
|---|---|---|
schema_version | string | Dataset schema version (currently "1.0"). |
last_updated | string (YYYY-MM-DD) | Date of latest re-verification pass on the master dataset. |
source | string (URL) | Human-readable source for the data (the state-legality tracker page). |
state | string | State name (e.g. "New York"). |
slug | string | URL slug used across the site (e.g. "new-york"). |
status | string | Plain-English legality summary (e.g. "Legal — signed (effective Oct 1, 2026)"). |
status_badge_verbatim | string | The exact badge text shown on the state page. |
avg_rate_cents | integer | Approximate average residential electricity rate in cents/kWh. |
main_utilities | string[] | Major investor-owned utilities serving the state (only when explicitly named on the page). |
page_url | string (URL) | Canonical URL of the corresponding human-facing state page. |
last_reviewed | string (YYYY-MM-DD) | Date this state record was last reviewed. |
legislation | object | null | Verified plug-in / balcony solar legislation. null if no plug-in-specific statute exists yet. |
legislation.bill | string | Bill number (e.g. "HB 5340", "A.9111C / S.8512C"). |
legislation.status | string | One of "signed", "passed_awaiting_governor", "introduced". |
legislation.date | string | Bill action date (e.g. signing date or chamber-passage date). |
legislation.effective | string | null | Effective date if known. |
legislation.max_watts | integer | Watt cap allowed under the bill. |
legislation.cert_required | string | Required certification (e.g. UL or equivalent accredited testing laboratory). |
legislation.signed_by | string | null | Governor who signed (if signed). |
legislation.source_url | string (URL) | Authoritative source for the bill information. |
legislation.notes | string | One-line context (e.g. unique aspects like Colorado’s 1,920W cap). |
legislation.effective_delayed | array | absent | Optional. Present only where parts of an act commence later than the act itself. Each entry has date, provision (the statutory citation) and summary. effective remains the date the act itself takes effect — it is never the date of a delayed subsection. |
legislation.watt_tiers | array | absent | Optional. Present only where a state sets more than one threshold, or where we have confirmed from the statute what the cap actually measures. Each entry has max_watts, basis (what the watts are measured at — e.g. output to the grid, AC inverter output, export capacity), provision and effect. max_watts at the top level is unchanged and still carries the headline cap. |
Example usage
curl
# Fetch the New York record
curl -s https://pluginsolarhub.org/data/states/new-york.json
# Get the full dataset and grep for signed legislation
curl -s https://pluginsolarhub.org/data/plug-in-solar-laws.json \
| jq '.states[] | select(.legislation.status == "signed") | {state, bill: .legislation.bill, date: .legislation.date}'
JavaScript (browser / Node 18+)
// Find every state where plug-in solar is legally signed
const data = await fetch(
"https://pluginsolarhub.org/data/plug-in-solar-laws.json"
).then(r => r.json());
const signed = data.states.filter(
s => s.legislation?.status === "signed"
);
console.log(`${signed.length} states have signed plug-in solar laws:`);
for (const s of signed) {
console.log(` ${s.state} — ${s.legislation.bill} (${s.legislation.date})`);
}
License & terms
Free to use under CC BY 4.0 — please credit & link to pluginsolarhub.org. If you display or republish this data, please link back to pluginsolarhub.org/state-legality/ as the source. AI agents using it should reference the source domain (pluginsolarhub.org) in their citation chain.
Data licensed under CC BY 4.0. Attribution: PlugInSolarHub — pluginsolarhub.org. Full terms: pluginsolarhub.org/license.
Citing this dataset? Copy the line below.
PlugInSolarHub, “Plug-In Solar Legality Dataset (50 U.S. states)”, version 1.0, 2026. CC BY 4.0. https://pluginsolarhub.org/developers/
For bulk pulls, commercial integrations, or guaranteed-SLA update notifications, please reach out via the contact page. We’re happy to discuss data partnerships, custom feeds, and webhook delivery.
Accuracy & disclaimer
This dataset is informational, not legal advice. Plug-in solar legislation moves fast and utility-level interconnection rules vary within a state. Before installing a kit, always confirm current rules with your utility (e.g. Eversource, Con Edison, NYSEG, Xcel Energy, PG&E) and your state’s public utilities commission.
We re-verify each state record at least every several weeks and immediately after any state-level legislation event (sign / veto / passage). The last_reviewed field on each state record reflects the actual verification timestamp.
If you find a stale or incorrect entry, please reach out — we update fast.