NOAA Storm Events Database Scraper avatar

NOAA Storm Events Database Scraper

Pricing

Pay per event

Go to Apify Store
NOAA Storm Events Database Scraper

NOAA Storm Events Database Scraper

Download and filter NOAA/NCEI Storm Events CSV records by year, state, event type, damage, magnitude, and location.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Download structured historical storm-event records from the official NOAA/NCEI Storm Events bulk CSV archive. Filter by year, state, event type, county/zone, magnitude, and damage, then export normalized records for insurance, risk, catastrophe modeling, weather research, and local-market analysis.

What this actor does

NOAA Storm Events Database Scraper reads the public NOAA/NCEI Storm Events CSV files and converts matching rows into clean Apify dataset items. It uses the official bulk files, not a browser session, so runs are reliable and easy to audit.

Each output row represents one NOAA storm event detail record. You can use the actor to collect hail, tornado, thunderstorm wind, flash flood, winter storm, hurricane, wildfire, heat, cold, and other event categories recorded by NOAA.

Why use NOAA Storm Events data

NOAA Storm Events is a standard source for historical severe weather analysis in the United States. It includes event timing, location, magnitude, casualties, property damage, crop damage, source, and narrative information for many events from 1950 onward.

Analysts use this data to understand regional hazard frequency, claims exposure, local market risk, catastrophe model assumptions, and long-term weather-impact patterns.

Official data source

The actor downloads files from:

https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/

It scans StormEvents_details-*_dYYYY_*.csv.gz files for the years you request. The sourceFileUrl field is included in every output record so downstream users can trace each item back to the NOAA source file.

Main use cases

  • Build hail, tornado, wind, flood, and winter-storm event datasets by state.
  • Pull event records for insurance and reinsurance exposure studies.
  • Enrich claims, property, or portfolio data with historical storm context.
  • Measure severe weather frequency by county or NOAA zone.
  • Export normalized storm-event records for BI dashboards.
  • Collect event damage and casualty fields for local-market research.
  • Prepare catastrophe modeling inputs from NOAA official records.

Input overview

You can control the run with these filters:

  • years: exact years to scan.
  • startYear and endYear: year range when years is not provided.
  • states: NOAA state names such as TEXAS, OKLAHOMA, or FLORIDA.
  • eventTypes: NOAA event types such as Hail, Tornado, Thunderstorm Wind, or Flash Flood.
  • czNames: county/zone names such as DALLAS or HARRIS.
  • minMagnitude: minimum event magnitude.
  • minDamageUsd: minimum parsed property or crop damage.
  • includeNarrative: include long NOAA narrative text.
  • maxItems: stop after this many matching records.

Example input

{
"years": [2024],
"states": ["TEXAS"],
"eventTypes": ["Hail"],
"minMagnitude": 1,
"includeNarrative": false,
"maxItems": 100
}

Example output

{
"eventId": "1170825",
"episodeId": "188234",
"year": 2024,
"monthName": "May",
"state": "TEXAS",
"czName": "DALLAS",
"eventType": "Hail",
"beginDateTime": "08-MAY-24 18:12:00",
"endDateTime": "08-MAY-24 18:12:00",
"beginLatitude": 32.78,
"beginLongitude": -96.8,
"magnitude": 1,
"damagePropertyUsd": 5000,
"damageCropUsd": 0,
"sourceFileUrl": "https://www.ncei.noaa.gov/pub/data/swdi/stormevents/csvfiles/StormEvents_details-...csv.gz",
"scrapedAt": "2026-07-05T02:00:00.000Z"
}

Output fields

The dataset contains IDs, timing, location, event classification, severity, casualties, damage, source, and audit fields:

  • Event identifiers: eventId, episodeId.
  • Date fields: year, monthName, beginDateTime, endDateTime.
  • Location fields: state, stateFips, czName, czType, czFips, begin/end locations, begin/end latitude and longitude.
  • Classification fields: eventType, source, floodCause.
  • Severity fields: magnitude, magnitudeType, tornado scale, tornado length, tornado width.
  • Casualties: direct and indirect deaths and injuries.
  • Damage: raw NOAA damage strings plus parsed USD numbers.
  • Provenance: sourceFileUrl, scrapedAt.
  • Optional narratives: episodeNarrative, eventNarrative.

Filtering by state

Use NOAA state names in uppercase for best results, for example TEXAS, CALIFORNIA, FLORIDA, OKLAHOMA, or NEW YORK. The actor compares filters case-insensitively.

If you leave states empty, the actor scans all states in the selected NOAA files until maxItems is reached.

Filtering by event type

NOAA event types include categories such as Hail, Tornado, Thunderstorm Wind, Flash Flood, Flood, Winter Storm, Heavy Snow, High Wind, Hurricane, Wildfire, and more.

The actor compares event-type filters case-insensitively but keeps NOAA's original event type in the output.

Damage parsing

NOAA damage values often use suffixes such as K, M, or B. The actor keeps the raw strings in damagePropertyRaw and damageCropRaw, and also emits parsed numeric values:

  • 5K becomes 5000.
  • 1.2M becomes 1200000.
  • 0 remains 0.

Use minDamageUsd when you only need events with significant property or crop damage.

Magnitude filters

Use minMagnitude for event types where NOAA reports a numeric magnitude, such as hail size or wind speed. Not every event type has a magnitude. Records without a magnitude are excluded when minMagnitude is set.

Narrative fields

Set includeNarrative to true when you need NOAA's episode and event narrative text. Narrative fields can be long, so the default is false to keep datasets compact and exports easier to work with.

Performance notes

The actor streams gzip CSV files and stops after maxItems matching records. It does not use a browser and does not require proxies. Very broad filters across many years can still scan large NOAA files, so start with a limited year range and specific filters when exploring.

Data freshness

NOAA updates Storm Events files over time. The actor reads the live public directory at run time, so it uses the current file URLs available from NOAA. Check sourceFileUrl and scrapedAt to audit when and where each record was collected.

Limits and caveats

NOAA's historical data has source-specific quality characteristics. Some older records have sparse location or magnitude details. Damage values are estimates and may be rounded or missing. The actor preserves NOAA raw values where useful so you can audit transformations.

How much does it cost to scrape NOAA storm event records?

This actor uses pay-per-event pricing. There is a $0.005 run-start charge and a per-record charge for each dataset item produced. Current per-record prices are:

Plan tierPrice per storm event record
Free$0.000029248
Starter / Bronze$0.000025433
Scale / Silver$0.000019838
Business / Gold$0.00001526
Platinum$0.000010173
Diamond$0.00001

Concrete cost examples at the Free tier:

  • A 100-record test export costs about $0.005 + (100 × $0.000029248) = $0.0079.
  • A 1,000-record state/year export costs about $0.005 + (1,000 × $0.000029248) = $0.0342.
  • A 10,000-record research export costs about $0.005 + (10,000 × $0.000029248) = $0.2975 before any platform plan discounts.

The Apify Free plan includes monthly platform credits, so small validation runs and focused state/event samples can often be tested within the free allowance. The pricing is designed for filtered analytical exports while keeping exploratory NOAA storm-history checks inexpensive.

Export options

After a run finishes, export the Apify dataset as JSON, JSONL, CSV, Excel, XML, or via the Apify API. CSV and Excel are convenient for analysts; JSON and JSONL are best for data pipelines.

Integrations

Use the actor as a clean NOAA data source in repeatable workflows:

  • Join storm events to policy, property, or claim locations by county and date in Snowflake, BigQuery, PostGIS, or a claims data warehouse.
  • Feed filtered hail, tornado, flood, or wind events into catastrophe modeling workflows and exposure-review notebooks.
  • Build state-level severe weather dashboards in Looker Studio, Power BI, Tableau, Metabase, or Apache Superset.
  • Schedule monthly hazard reports for local markets by running the same input every month and exporting CSV or JSONL.
  • Compare NOAA event counts with internal loss experience in insurance, reinsurance, agriculture, utility, and public-sector risk workflows.
  • Trigger downstream alerts in Zapier, Make, Slack, or email when a scheduled run returns new records for a monitored state/event type.

Tips for best results

Start with one year, one or two states, and a focused event type. Increase maxItems after confirming your filters. Turn on narratives only when you need descriptive text; leave them off for high-volume structured exports.

Common event type examples

Useful NOAA event types include:

  • Hail
  • Tornado
  • Thunderstorm Wind
  • Flash Flood
  • Flood
  • Winter Storm
  • Heavy Snow
  • High Wind
  • Hurricane
  • Wildfire
  • Heat
  • Cold/Wind Chill

Use the exact NOAA wording when possible, but the actor matches filters without case sensitivity.

Working with counties and zones

The NOAA CZ_NAME field can represent a county or forecast zone depending on the record. Use czName, czType, and czFips together when joining records to local geography. For county-level analysis, filter by state first and then post-process county names in your own GIS or BI workflow.

Auditing the source file

Every row includes sourceFileUrl. Keep this field when exporting data for regulated workflows or internal review. It lets another analyst identify the exact NOAA yearly detail file used for the record.

Suggested starter workflows

  1. Run a small state/year/event-type export with maxItems set to 100.
  2. Confirm the output fields and event types match your analysis need.
  3. Increase maxItems or add more years.
  4. Export CSV or JSONL for downstream processing.
  5. Keep includeNarrative disabled unless narrative text is required.

Who is it for

This actor is for insurance analysts, reinsurance teams, catastrophe modelers, claims analysts, weather-risk consultants, government researchers, academic users, and local-market teams that need official storm-event records in a clean export format.

API usage

Run the actor from code when you need repeatable storm-event data pipelines.

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/noaa-storm-events-database-scraper').call({
years: [2024],
states: ['TEXAS'],
eventTypes: ['Hail'],
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length);

Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/noaa-storm-events-database-scraper').call(run_input={
'years': [2024],
'states': ['TEXAS'],
'eventTypes': ['Hail'],
'maxItems': 100,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(len(items))

cURL

curl -X POST "https://api.apify.com/v2/acts/automation-lab~noaa-storm-events-database-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"years":[2024],"states":["TEXAS"],"eventTypes":["Hail"],"maxItems":100}'

MCP

You can use this actor through Apify MCP-compatible workflows by connecting your AI tool to the hosted Apify MCP endpoint:

https://mcp.apify.com?tools=automation-lab/noaa-storm-events-database-scraper

This setup is useful for agents that need official historical weather-event context before producing risk summaries, local-market reports, insurance notes, or research briefs.

Claude Code example:

$claude mcp add apify "https://mcp.apify.com?tools=automation-lab/noaa-storm-events-database-scraper"

Claude Desktop, Cursor, and VS Code can use the same hosted MCP URL in their MCP server configuration. Add your Apify API token in the client when prompted, or configure it through the client's secure environment/secret settings. Once connected, ask the tool to run automation-lab/noaa-storm-events-database-scraper with a JSON input such as:

{
"years": [2024],
"states": ["TEXAS"],
"eventTypes": ["Hail"],
"maxItems": 100
}

Example prompts showing MCP usage:

  • "Run the NOAA Storm Events actor for 2024 Texas hail records and summarize counties with the highest reported property damage."
  • "Collect Oklahoma tornado events with narratives and extract a table of event dates, counties, EF scale, injuries, and damage."
  • "Find damaging flash flood events in 2022 and prepare a concise risk brief with source file links."

Legality

The actor reads public NOAA/NCEI bulk CSV files. NOAA data is public-sector information, but you are responsible for using exported data in compliance with your organization's policies, attribution requirements, and applicable laws.

FAQ

Does this require a NOAA API key?

No. It reads the public NOAA/NCEI Storm Events bulk CSV directory.

Does it use a browser or proxy?

No. It uses direct HTTP downloads from official static files.

Why are some fields empty?

NOAA records vary by year and event type. Older records may not include every location, magnitude, or narrative field.

Other Automation Lab actors that pair well with public-risk, compliance, and research workflows:

Related workflows include NOAA weather-alert scraping, open weather APIs, FEMA disaster declarations, insurance risk enrichment, climate hazard reporting, and local-market storm-history dashboards.

Support

If a NOAA file changes format or a filter does not produce expected records, open an issue with your input and a short description of the expected data. Include the year, state, and event type you are targeting so the problem can be reproduced quickly.

For reproducible support, also include sourceFileUrl from one affected output item.