← All Datasets

NOAA Storm Events Database 1950–Present

National Centers for Environmental Information (NCEI) — Full History

The NOAA Storm Events Database is the official US record of significant weather events causing deaths, injuries, property damage, or disruption. This dataset covers 2M+ events from 1950 through 2024 across 3 linked tables — parsed from NOAA's gzip-compressed annual files, with damage strings converted to dollars, coordinates normalized, and event types standardized. Ideal for insurance, climate research, real estate risk, and NLP on storm narratives.

Sample: Public DomainPaid: Commercial LicenseCSV + ParquetAnnual Updates1950–20243 Linked TablesDamage $USD Parsed

Why not pull it directly from NOAA?

NOAA publishes ~225 gzip-compressed CSV files across 3 table types and 75 years. Here's what we handled:

  • 225 .csv.gz files downloaded, decompressed, and concatenated — NOAA publishes one file per year per table type, with varying creation dates; we resolve the latest file per year and merge everything
  • Damage strings parsed to USD — NOAA encodes damage as strings like "50.00K" or "1.2M"; we convert to float dollars for direct numeric analysis
  • Begin/end dates derived — NOAA stores dates as separate YEARMONTH + DAY fields; we derive clean BEGIN_DATE / END_DATE ISO strings
  • Total injuries and deaths computed — direct + indirect casualties summed per event
  • Event types and states standardized — raw files use mixed case; we normalize to title case for consistent grouping
  • 3 tables cross-linked by EVENT_ID — fatalities and locations reference the details table; we preserve the join keys and document the schema
  • Parquet output per table — NOAA only provides CSV; columnar Parquet is 5–10× faster for analytical queries on 2M+ rows

⏱ Skip 225 file downloads, gzip decompression, damage string parsing, and schema reconciliation. Ready for analysis in minutes.

2M+

Storm Events

74

Years of Data

25K+

Fatality Records

60+

Event Types

Use Cases

Insurance Risk Modeling

Model property and crop damage by storm type, county, and year. Build actuarial tables for hail, tornado, and flood risk scoring. Cross-reference with location data for precise geographic underwriting.

Climate Change Research

Analyze 74 years of extreme weather events to identify trends in storm frequency, intensity, and geographic spread. Study decade-over-decade shifts in tornado alley, flood patterns, and hurricane activity.

Real Estate Risk Scoring

Score ZIP codes and counties on historical storm exposure — floods, tornadoes, hail, and wind damage — to inform property valuations, mortgage risk, and climate-adjusted pricing.

Emergency Preparedness Planning

Build historical baselines for emergency response planning. Identify which counties experience repeated high-damage events and model resource deployment needs based on historical storm patterns.

Crop Insurance Analytics

Analyze DAMAGE_CROPS_USD by state, county, and event type to model agricultural loss risk. Link with USDA crop data to estimate exposure by crop type and planting zone.

NLP on Storm Narratives

The EPISODE_NARRATIVE and EVENT_NARRATIVE fields contain rich free-text descriptions from NWS forecasters — ideal for NLP training data, zero-shot classification, or RAG pipelines focused on weather events.

Schema

Three linked tables delivered as CSV + Parquet. Join on EVENT_ID (and EPISODE_ID for locations).

Details Table — noaa_storm_events_details

Primary storm event records. One row per event.

FieldTypeDescription
EVENT_IDintUnique event identifier (links to fatalities and locations tables)
EPISODE_IDintEpisode identifier grouping related events
YEARintCalendar year of the event
MONTH_NAMEstringMonth name (January–December)
BEGIN_DATEstringEvent begin date (YYYY-MM-DD, derived)
END_DATEstringEvent end date (YYYY-MM-DD, derived)
BEGIN_TIMEstringBegin time (HHMM, local time zone)
END_TIMEstringEnd time (HHMM, local time zone)
STATEstringUS state or territory name (title case)
STATE_FIPSintFIPS code for state
CZ_NAMEstringCounty/zone name
CZ_FIPSintCounty/zone FIPS code
CZ_TYPEstringC = County, Z = NWS Forecast Zone, M = Marine
EVENT_TYPEstringStorm event type (title case) — e.g. Tornado, Flash Flood, Thunderstorm Wind
INJURIES_DIRECTintDirect injuries from the event
INJURIES_INDIRECTintIndirect injuries
INJURIES_TOTALintTotal injuries (computed: direct + indirect)
DEATHS_DIRECTintDirect deaths from the event
DEATHS_INDIRECTintIndirect deaths
DEATHS_TOTALintTotal deaths (computed: direct + indirect)
DAMAGE_PROPERTYstringProperty damage raw string (e.g. '50.00K', '1.2M')
DAMAGE_PROPERTY_USDfloatProperty damage in dollars (parsed from string, computed)
DAMAGE_CROPSstringCrop damage raw string
DAMAGE_CROPS_USDfloatCrop damage in dollars (parsed, computed)
TOTAL_DAMAGE_USDfloatTotal damage (property + crops) in dollars (computed)
BEGIN_LATfloatBegin latitude of the event
BEGIN_LONfloatBegin longitude of the event
END_LATfloatEnd latitude
END_LONfloatEnd longitude
MAGNITUDEfloatEvent magnitude (e.g. wind speed in mph, hail size in inches)
MAGNITUDE_TYPEstringUnits of magnitude (EG=estimated gust, EH=estimated hail, etc.)
TOR_F_SCALEstringTornado Fujita/Enhanced Fujita scale (EF0–EF5)
TOR_LENGTHintTornado path length in miles
TOR_WIDTHintTornado path width in yards
FLOOD_CAUSEstringCause of flood event (if applicable)
SOURCEstringData source (e.g. trained spotter, newspaper, emergency manager)
WFOstringNWS Weather Forecast Office responsible for the event area
EPISODE_NARRATIVEstringText narrative describing the overall weather episode
EVENT_NARRATIVEstringText narrative describing the specific storm event

Fatalities Table — noaa_storm_events_fatalities

Per-fatality records. Multiple rows per event when multiple people died. Available from ~1996.

FieldTypeDescription
FATALITY_IDintUnique fatality identifier
EVENT_IDintLinks to details table EVENT_ID
FATALITY_TYPEstringD = direct, I = indirect
FATALITY_DATEstringDate of death
FATALITY_AGEintAge of the deceased (nullable)
FATALITY_SEXstringSex of the deceased (M/F, nullable)
FATALITY_LOCATIONstringLocation type (e.g. Vehicle, Permanent Home, Outside/Open Areas)

Locations Table — noaa_storm_events_locations

Additional named location points per event. Useful for precise geospatial analysis.

FieldTypeDescription
EVENT_IDintLinks to details table EVENT_ID
EPISODE_IDintLinks to details table EPISODE_ID
LOCATION_INDEXintSequence number for multiple locations per event
LATfloatLatitude of this location point
LONfloatLongitude of this location point
LAT2floatSecondary latitude (for areas/paths)
LON2floatSecondary longitude
LOCATIONstringNamed location (city, landmark)
AZIMUTHstringCompass direction from a reference point
RANGEstringDistance in miles from a reference point

Quick Start

import pandas as pd

# Load main events table
details = pd.read_parquet("noaa_storm_events_details.parquet")
fatalities = pd.read_parquet("noaa_storm_events_fatalities.parquet")
locations = pd.read_parquet("noaa_storm_events_locations.parquet")

# Events by year
print(details.groupby("YEAR").size().tail(10))

# Top 10 deadliest storm types (direct deaths only)
print(
    details.groupby("EVENT_TYPE")["DEATHS_DIRECT"]
    .sum()
    .sort_values(ascending=False)
    .head(10)
)

# Total property damage by state (all time)
damage_by_state = (
    details.groupby("STATE")["DAMAGE_PROPERTY_USD"]
    .sum()
    .sort_values(ascending=False)
)
print(damage_by_state.head(10))

# Tornado F-scale distribution
tornadoes = details[details["EVENT_TYPE"] == "Tornado"]
print(tornadoes["TOR_F_SCALE"].value_counts())

# Join fatalities to events for age/sex analysis
fat_events = fatalities.merge(
    details[["EVENT_ID", "EVENT_TYPE", "STATE", "YEAR"]],
    on="EVENT_ID", how="left"
)
print(fat_events.groupby("EVENT_TYPE")["FATALITY_AGE"].mean().sort_values())

# Costliest events ever
top_damage = details.nlargest(20, "TOTAL_DAMAGE_USD")[
    ["YEAR", "EVENT_TYPE", "STATE", "CZ_NAME", "TOTAL_DAMAGE_USD", "EVENT_NARRATIVE"]
]
print(top_damage)

Pairs Well With

External: FEMA National Flood Insurance Program (NFIP)

Cross-reference NOAA flood events (damage, location, date) with NFIP claims data to validate modeled flood risk, study claim frequency vs. event severity, and identify areas with chronic underinsurance.

ClarityStorm: NHTSA FARS (Fatality Analysis)

Join weather events with FARS crash data by date/state to analyze how severe weather (ice storms, fog, floods) correlates with traffic fatality spikes — useful for road safety research and insurance.

Pricing

Sample

Free

1,000 rows from details table (CSV) + schema docs

Public Domain

Download Sample
Complete

$79

Full dataset — all 3 tables, 1950–2024, 2M+ events, CSV + Parquet

Commercial License

Buy Complete
Annual

$149/yr

Full dataset + annual updates as NOAA releases new data

Commercial License

Subscribe

Data Provenance

Source: National Oceanic and Atmospheric Administration (NOAA), National Centers for Environmental Information (NCEI) — Storm Events Database

Portal: NOAA Storm Events Database

Coverage: 1950–2024. Details data begins in 1950; fatalities and locations tables begin approximately 1996 when NOAA expanded reporting.

Event types: NOAA added new event type classifications over time — the current 48 standard types replaced older categories in 1996. Pre-1996 data covers only tornadoes, thunderstorm winds, and hail. Post-1996 includes all weather phenomena.

Computed fields: DAMAGE_PROPERTY_USD, DAMAGE_CROPS_USD, and TOTAL_DAMAGE_USD are parsed by ClarityStorm from NOAA's encoded strings (e.g. "50.00K", "1.2M") to float dollars.INJURIES_TOTAL, DEATHS_TOTAL, and BEGIN_DATE / END_DATE are also derived fields.

Update frequency: NOAA releases updated annual files (with corrected creation dates) periodically. Annual subscribers receive updated files when ClarityStorm re-runs the pipeline.

License: NOAA Storm Events data is a US federal government work in the public domain. Paid tiers are licensed under the ClarityStorm Commercial Data License covering our pipeline work (parsing, damage normalization, type standardization, Parquet conversion).

Need custom date ranges, specific event types, or bulk licensing?

Contact Sales