Storm Blackout and Restoration
All datasets · API reference · Dataset page on heimdallresearch.com
How long each county stayed dark after FEMA-declared hurricanes, tropical storms and winter storms in the United States, Puerto Rico and the U.S. Virgin Islands since 2012, and how quickly its night light returned, measured from NASA Black Marble daily satellite light readings.
Status: In preparation. Version 1.0 is estimated for October 2026, with storms from 2012 to 2017 first.
| Themes | weather, energy |
| Coverage | FEMA-declared hurricanes, tropical storms and major winter storms; contiguous U.S., Puerto Rico, U.S. Virgin Islands |
| Period | 2012 to present |
| Resolution | County by day |
| Free updates | Each new storm, four to six weeks after landfall |
| Paid updates | Within days of landfall, for a named storm or every storm in your region |
| License | CC-BY-4.0 |
| Free | Every declared storm at county level, as files and through the API and MCP server with a free key. |
| Paid | A report for a named storm and area within days of landfall, or a regional subscription. See plans and prices. |
| Intended use | Comparing how quickly places recovered after major storms, studying which communities waited longest, and giving resilience, insurance and emergency-management research a consistent record across storms and years. |
| Not intended for | Counting customers without power, judging a single address or neighborhood, real-time response, or insurance claims on a single property. |
Tables
Section titled “Tables”| Table | One row per | Fields |
|---|---|---|
| storms | event_id |
6 |
| county_summary | event_id, geoid |
15 |
| county_daily | event_id, geoid, date |
8 |
Access
Section titled “Access”API: GET /v1/storms, GET /v1/storms/{event_id}, GET /v1/storms/{event_id}/counties/{fips}, GET /v1/storms/{event_id}/files. See the API reference.
MCP tools: get_storm, get_download_link. See Use it in your AI assistant.
Files: CSV and Parquet on Zenodo and Hugging Face, with datapackage.json, a Croissant file and SHA256SUMS, from the first release.
How values are produced
Section titled “How values are produced”Each county in a storm’s declared area is compared night by night with its own normal light. The baseline is the median of clear, snow-free nights before the storm, leaving out nights affected by an earlier storm; when too few remain, the same weeks one year earlier are used and the row says so. After landfall each clear night is compared with the baseline, and recovery is counted from when light stays at or above half and nine-tenths of normal for three observed nights. Observation continues for up to 180 days.
Pixels flagged for cloud, poor quality or snow are excluded, and the number of usable nights travels with every value. Results are never reported below county level.
Table storms
Section titled “Table storms”File storms.csv. One row per storm event.
One row per event_id.
| Field | Type | Unit | Description |
|---|---|---|---|
event_id |
string | NHC storm identifier or FEMA declaration number. | |
name |
string | Storm name or declaration title. | |
kind |
string | tropical, winter_storm, severe_ice_storm or snowstorm. | |
landfall |
date | Landfall or incident start date. | |
states |
string | Declared states, space separated. May be empty. | |
source |
string | HURDAT2, NHC-ATCF-operational or OpenFEMA. |
Table county-summary
Section titled “Table county-summary”File county_summary.csv. One row per storm and county.
One row per event_id, geoid.
| Field | Type | Unit | Description |
|---|---|---|---|
event_id |
string | Storm event. | |
geoid |
string | County FIPS code. | |
county |
string | County name. | |
state |
string | State or territory. | |
baseline_radiance |
number | nW/cm²/sr | Median pre-storm radiance. |
baseline_nights |
integer | Clear nights in the baseline. | |
baseline_source |
string | event_window or prior_year. | |
post_obs_nights |
integer | Clear nights observed after landfall. | |
median_valid_pixel_share |
number | Median share of usable pixels after landfall. | |
days_to_50 |
integer | days | Days until light stayed at or above 50% of baseline. May be empty. |
days_to_90 |
integer | days | Days until light stayed at or above 90% of baseline. May be empty. |
censored |
boolean | True if 90% recovery was not reached in the window. | |
censored_50 |
boolean | True if 50% recovery was not reached in the window. | |
min_light_ratio |
number | Lowest light ratio after landfall. | |
post_days_window |
integer | days | Length of the observation window. |
Table county-daily
Section titled “Table county-daily”File county_daily.csv. One row per storm, county and clear night.
One row per event_id, geoid, date.
| Field | Type | Unit | Description |
|---|---|---|---|
event_id |
string | Storm event. | |
date |
date | Night of observation. | |
geoid |
string | County FIPS code. | |
days_from_landfall |
integer | days | Days since landfall (negative before). |
radiance_nw_cm2_sr |
number | nW/cm²/sr | County median radiance that night; empty when no usable pixels. May be empty. |
valid_pixel_share |
number | Share of usable pixels. | |
snow_excluded_share |
number | Share of pixels excluded for snow. | |
light_ratio |
number | Radiance divided by the county baseline; empty when not observed. May be empty. |
Limits
Section titled “Limits”- Night light is related to electricity service but is not the same thing. Generators can restore light before the grid does, and damaged or empty buildings can stay dark after power returns.
- Clouds and snow hide the ground. Counties with few clear nights carry a low observation count and a quality flag.
- Moonlight, seasonal lighting and changes in how people use light shift readings. The product is corrected for moonlight, and each value is compared with the county’s own baseline.
- Days to recovery are left blank and marked censored when recovery did not happen within the observation window.
Sources
Section titled “Sources”| Source | Role | Terms |
|---|---|---|
| NASA Black Marble VNP46A2 v2 (VIIRS on Suomi NPP), DOI 10.5067/VIIRS/VNP46A2.002 | Measured night light, 2012 onward | NASA open data; acknowledge and cite |
| NASA Black Marble VJ146A2 v2 (VIIRS on NOAA-20) | Measured night light, 2018 onward | NASA open data; acknowledge and cite |
| NOAA National Hurricane Center HURDAT2 and operational best tracks | Storm timing and landfall | Public domain |
| FEMA disaster declarations (OpenFEMA) | Which storms and counties are included | Public domain |
| U.S. Census Bureau cartographic boundary files | County boundaries | Public domain |
| EAGLE-I county outage records, Oak Ridge National Laboratory (DOI 10.6084/m9.figshare.24237376) | Validation only | CC BY 4.0 |
Required notices:
- Night light data: NASA Black Marble (VNP46A2, VJ146A2), courtesy of NASA LAADS DAAC.