NOAA Storm Events Database Scraper
Pricing
Pay per event
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
Maintained by CommunityActor 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.startYearandendYear: year range whenyearsis not provided.states: NOAA state names such asTEXAS,OKLAHOMA, orFLORIDA.eventTypes: NOAA event types such asHail,Tornado,Thunderstorm Wind, orFlash Flood.czNames: county/zone names such asDALLASorHARRIS.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:
5Kbecomes5000.1.2Mbecomes1200000.0remains0.
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 tier | Price 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.2975before 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:
HailTornadoThunderstorm WindFlash FloodFloodWinter StormHeavy SnowHigh WindHurricaneWildfireHeatCold/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
- Run a small state/year/event-type export with
maxItemsset to 100. - Confirm the output fields and event types match your analysis need.
- Increase
maxItemsor add more years. - Export CSV or JSONL for downstream processing.
- Keep
includeNarrativedisabled 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 ApifyClientimport osclient = 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().itemsprint(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.
Related scrapers
Other Automation Lab actors that pair well with public-risk, compliance, and research workflows:
- Disease Outbreak News Scraper — monitor WHO outbreak notices alongside weather and disaster risk reporting.
- openFDA 510(k) Device Clearances Scraper — collect official public-sector health-regulatory datasets.
- HHS OIG Exclusions List Scraper — enrich compliance workflows with another structured government data source.
- SEC Investor Alerts Scraper — combine official alerts with risk-monitoring dashboards.
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.