NOAA Storm Events, Damage & Weather Risk Scraper
Pricing
from $1.50 / 1,000 results
NOAA Storm Events, Damage & Weather Risk Scraper
Export official NOAA storm events from 1950 onward with event type, location, coordinates, fatalities, injuries, property and crop damage, magnitude and narratives. Bulk weather-risk data for insurance, logistics and climate analytics.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Logiover
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
16 days ago
Last modified
Categories
Share
Stream and export official NOAA Storm Events records from 1950 onward. Each result can include event type, dates, state, county or forecast zone, locations, coordinates, magnitude, tornado attributes, fatalities, injuries, property and crop damage, source and narratives.
The Actor automatically discovers NOAA's latest revised archive for each requested year, decompresses it as a stream and saves clean structured records. This design supports large exports without loading an entire annual file into memory and needs no NOAA API key.
What can you do with this Actor?
- Build historical severe-weather and catastrophe datasets for insurance or reinsurance.
- Quantify property and crop damage by event type, region and time.
- Enrich logistics, supply-chain, energy, agriculture and real-estate risk models.
- Analyze tornadoes, hail, wind, floods, winter weather, heat and other NOAA event categories.
- Map event paths and locations using available start and end coordinates.
- Create research datasets with event and episode narratives.
Input
| Field | Type | Description |
|---|---|---|
years | integer[] | Years from 1950 onward. Empty input uses the current and previous year. |
states | string[] | Exact NOAA state or area names, usually uppercase. |
eventTypes | string[] | Exact NOAA event types such as Hail, Tornado or Flash Flood. |
startDate | date | Earliest event-begin date. |
endDate | date | Latest event-begin date. |
minPropertyDamage | number | Minimum normalized property damage in USD. |
minCropDamage | number | Minimum normalized crop damage in USD. |
fatalitiesOnly | boolean | Keep only events reporting at least one death. |
injuriesOnly | boolean | Keep only events reporting at least one injury. |
maxResults | integer | Maximum unique events, up to 500,000. |
Example for damaging Texas events:
{"years": [2025, 2024],"states": ["TEXAS"],"eventTypes": ["Hail", "Thunderstorm Wind", "Tornado"],"minPropertyDamage": 1000,"maxResults": 20000}
Output
One item represents one NOAA event record.
| Field group | Included data |
|---|---|
| Identity | recordId, eventId, episodeId, year and month. |
| Classification | State, event type, county/zone type and FIPS, WFO and source. |
| Time and place | Begin/end timestamps, locations, coordinates and time zone. |
| Severity | Magnitude, magnitude type, tornado scale/length/width, flood cause and category. |
| Impact | Direct/indirect deaths and injuries, totals, normalized property damage and crop damage. |
| Context | Episode narrative and event narrative. |
| Lineage | Exact NOAA archive URL and scrape timestamp. |
{"eventId": "1234567","year": 2025,"state": "TEXAS","eventType": "Hail","countyZoneName": "TRAVIS","beginDateTime": "2025-05-28T18:15:00","magnitude": 2.25,"magnitudeType": "EG","deaths": 0,"injuries": 0,"propertyDamage": 250000,"cropDamage": 0}
Damage normalization
NOAA bulk files commonly encode values with suffixes such as K, M and B. The Actor converts them to numeric dollars: 25K becomes 25000 and 1.5M becomes 1500000. Missing damage is normalized to zero for consistent threshold filtering. These are reported estimates and should not be treated as audited loss totals.
Annual revisions and scale
NOAA can revise historical files. The Actor reads the directory at run time and selects the highest revision stamp for each requested year. This avoids hard-coded file names becoming stale. Requested years are processed newest first, records are deduplicated by year and event ID, and result batches are written continuously.
For a full-history warehouse, split runs into year ranges so each run stays under the 500,000-item limit. For operational monitoring, schedule the current year regularly because recent records may be added or revised.
Integrations and API
Use the Apify Console, REST API, JavaScript client or Python client. Export datasets as JSON, JSONL, CSV, Excel, XML or RSS and connect them to schedules, webhooks, Make, Zapier, Google Sheets, databases or BI systems.
curl -X POST "https://api.apify.com/v2/acts/logiover~noaa-storm-events-bulk-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"years":[2025],"states":["FLORIDA"],"maxResults":10000}'
Through Apify MCP, AI agents can request structured storm-event evidence instead of relying on unverified web summaries.
FAQ
Which NOAA source is used? The official NCEI Storm Events bulk CSV archive.
Does it need an API key? No.
What years are available? NOAA publishes records from 1950 onward; event coverage and reporting practices vary by era.
What does empty input do? It processes the current year and previous year, newest first, up to the default result limit.
Why is a recent year incomplete? NOAA reporting and quality control lag real-world events and files are revised.
Are all coordinates populated? No. Location fields depend on the original report.
Can I filter multiple event types? Yes; use exact NOAA labels.
Are fatalities and injuries combined? Direct and indirect values are preserved and summed into convenient totals.
Can I download more than 500,000 items? Split the export by year, state or event type.
Responsible use
This Actor is not affiliated with or endorsed by NOAA or NCEI. Storm Events data contains reported estimates and historical inconsistencies. Verify life-safety, legal, actuarial and financial decisions against authoritative current sources.
How much NOAA Storm data can you extract in one run?
A single run returned 500 events in 6 seconds on the example input. That is roughly 5,000 events a minute. Widen the search — more queries, more pages, a broader location — and the same run goes deeper.
There is no hard ceiling built into this Actor. What bounds a run is the result limit you set, the breadth of the input you give it, and how much NOAA Storm itself publishes. Because billing is per result, a wider run costs proportionally more and a narrow one costs almost nothing — so it is worth starting small and scaling once the output looks right.
NOAA Storm scraping — frequently asked questions
Do I need a NOAA Storm API key, account or login?
No. This Actor reads publicly available pages and feeds, so there is nothing to register for and no credentials to manage.
How do I export NOAA Storm data to CSV, Excel, JSON or Google Sheets?
Open the Storage tab after a run and pick the format you want — CSV, Excel, JSON, XML or an HTML table. For Google Sheets, Airtable or a database, use the dataset URL or the Apify API so the sheet refreshes itself on every run.
Can I schedule this NOAA Storm scraper to run daily or hourly?
Yes. Use the Schedules tab and pick a cadence. Daily is enough for most tracking work; pick hourly only if the events you care about really do change that fast.
How many events can I get, and what does it cost?
See the volume section above for a measured figure. Billing is per result, so you pay for the rows you actually receive and a run that finds nothing costs nothing.
Is scraping NOAA Storm legal?
This Actor collects only information that NOAA Storm publishes publicly. It does not log in, does not defeat access controls and does not touch private data. You remain responsible for how you use the output, including under GDPR and similar rules where personal data is involved.
What happens if NOAA Storm blocks the run or changes its layout?
A refused exit IP is swapped for a fresh one within a quarter of a second and retried, and rate limiting is waited out rather than fought. If nothing gets through, the run fails with the reason instead of reporting success with zero rows — so an empty result always means "no matches", never "the source would not answer".
Can I use this with an AI agent, LangChain or an MCP client?
Yes. The Actor is callable over the Apify API and through Apify's MCP server, so an agent can run it and read the dataset back as a tool call.
How to scrape NOAA Storm without an API
NOAA Storm has no public bulk export for this data, which normally leaves copy-and-paste or a custom crawler. This Actor is the second one, already built and maintained: it reads the public pages, follows the pagination, and hands back clean rows.
- Fill in the input below — the example is prefilled, so Start works straight away.
- Watch the log name each page it walks and how many events each one returned.
- Export from Storage, or pull the dataset over the API into your own pipeline.
No API key, no account, no browser extension, no manual copying.
Legal and compliance
This Actor collects publicly available information from NOAA Storm only. It does not log in, does not circumvent access controls, and collects no private data. You are responsible for using the output lawfully, including under GDPR and comparable regimes where the rows contain personal data, and for respecting NOAA Storm's terms where they apply to you.
Changelog
2026-08-04
- Initial official NOAA Storm Events bulk exporter.
- Added live latest-revision discovery and memory-efficient gzip/CSV streaming.
- Added year, state, event type, date, damage, fatality and injury filters.
- Added normalized damage amounts, stable IDs, coordinates, impact totals and narratives.
*Maintained: last verified 2026-09-01 — checked end-to-end against live run history (reliability, output fields and types, and time/memory budgets).
Use cases
- Export records in bulk and analyse them in a spreadsheet or database.
- Track how the data changes over time by scheduling repeat runs.
- Feed records into a dashboard, CRM or internal tool through the Apify API.
- Build a research dataset without writing or maintaining a scraper.
- Monitor NOAA Storm Events, Damage & Weather Risk for new entries and alert your team when they appear.
Pricing
This Actor is pay per result: you are charged for the rows it writes to your dataset, not for the time it spends running. There are no platform fees to calculate on top, and higher Apify plans pay a lower rate per result. A run that returns nothing costs nothing.
Related scrapers
Other Actors from the same collection: