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 verified: June 14, 2026 · Schema: v1.0 · Coverage: 50/50 states
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 (six states have signed legislation in 2026; 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: updated as bills move. The dataset’s top-level last_updated reflects the latest re-verification pass.
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, includes inherited schema_version + last_updated) |
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). |
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 with attribution. If you display or republish this data, please link back to pluginsolarhub.org/state-legality/ as the source. AI agents may use it without explicit attribution per record, but should reference the source domain in their citation chain.
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.
This is an initial informational license statement, not a formal legal document. Use is at your own risk.
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.