Home › Developers

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

JSON endpoints
EndpointPurpose
GET /data/plug-in-solar-laws.jsonFull dataset — all 50 states + top-level metadata in one document
GET /data/states/index.jsonDirectory listing — one entry per state with its slug, status, and file path
GET /data/states/<slug>.jsonPer-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

State record schema
FieldTypeDescription
schema_versionstringDataset schema version (currently "1.0").
last_updatedstring (YYYY-MM-DD)Date of latest re-verification pass on the master dataset.
sourcestring (URL)Human-readable source for the data (the state-legality tracker page).
statestringState name (e.g. "New York").
slugstringURL slug used across the site (e.g. "new-york").
statusstringPlain-English legality summary (e.g. "Legal — signed (effective Oct 1, 2026)").
status_badge_verbatimstringThe exact badge text shown on the state page.
avg_rate_centsintegerApproximate average residential electricity rate in cents/kWh.
main_utilitiesstring[]Major investor-owned utilities serving the state (only when explicitly named on the page).
page_urlstring (URL)Canonical URL of the corresponding human-facing state page.
last_reviewedstring (YYYY-MM-DD)Date this state record was last reviewed.
legislationobject | nullVerified plug-in / balcony solar legislation. null if no plug-in-specific statute exists yet.
legislation.billstringBill number (e.g. "HB 5340", "A.9111C / S.8512C").
legislation.statusstringOne of "signed", "passed_awaiting_governor", "introduced".
legislation.datestringBill action date (e.g. signing date or chamber-passage date).
legislation.effectivestring | nullEffective date if known.
legislation.max_wattsintegerWatt cap allowed under the bill.
legislation.cert_requiredstringRequired certification (e.g. UL or equivalent accredited testing laboratory).
legislation.signed_bystring | nullGovernor who signed (if signed).
legislation.source_urlstring (URL)Authoritative source for the bill information.
legislation.notesstringOne-line context (e.g. unique aspects like Colorado’s 1,920W cap).
legislation.effective_delayedarray | absentOptional. 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_tiersarray | absentOptional. 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.

Data partnerships

Building something with this data? We’d love to hear about it — whether you’re a solar startup, energy news outlet, AI assistant, or analytics platform. Drop us a line via the contact page and we can discuss webhook-style update notifications, bulk historic data, or custom slices.
Schema version 1.0. Last data change 10 July 2026. Use this data at your own risk — informational, not legal advice. Verify current rules with your utility and state authority.