US Storm Reports API: Hail, Wind & Tornado (NWS)
Pricing
from $3.00 / 1,000 storm report rows
US Storm Reports API: Hail, Wind & Tornado (NWS)
Get U.S. hail, wind, tornado and flood reports from official NWS Local Storm Reports within hours (last 7 days): time, hail size or wind speed, lat/lon, county. Filter by state or radius for roofing storm leads, insurance and AI agents. No API key; JSON/CSV, API or MCP; $3 per 1,000.
Pricing
from $3.00 / 1,000 storm report rows
Rating
0.0
(0)
Developer
Japan Open Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 days ago
Last modified
Categories
Share
US Storm Reports API: Hail, Wind & Tornado Reports from the NWS (Last 7 Days)
Get the latest U.S. hail, wind, tornado and flood reports from the National Weather Service as clean JSON, one row per report, within hours of the storm. Each row has time, event type, hail size or wind speed, latitude/longitude, county, state and report source, taken from the NWS's preliminary Local Storm Reports (LSR); filter by state, point and radius, event type or minimum size. Last 7 days, no API key, no login.
- Storm reports within hours, not months. NWS offices publish Local Storm Reports during and right after a storm, from trained spotters, emergency managers, law enforcement, mesonet stations and the public. This Actor reads them straight from the official NWS API (api.weather.gov).
- Every storm type in one flat table: hail (inches), thunderstorm wind gusts (mph or knots) and wind damage, tornadoes, funnel clouds, floods and flash floods, heavy rain, snow and ice.
- Search where it matters: by state (
["TX", "OK"]), or around your office, a customer or a property withlatitude,longitudeandradiusMiles— each row then shows its distance in miles. - Clean, de-duplicated rows. Corrected and summary NWS products repeat earlier reports; each report is returned once, in its newest version.
- Pay only for reports found. "Nothing found" and error rows are free.
What can you do with US Storm Reports?
- Roofing, siding and restoration contractors — storm leads the next morning. Run it after a storm night to see where 1"+ hail or 60+ mph winds and tree damage were reported, which counties and towns were hit, and how far they are from your office. Schedule it daily and send the rows to Google Sheets, a CRM or Slack.
- Insurance, adjusters and claims teams — early loss triage. See which counties had hail, wind damage, tornadoes or flash floods in the last few days, before official damage surveys and the NOAA Storm Events Database are published (that takes months). Use
productUrlto open the original NWS report. - Utilities, logistics, property managers and AI agents — "what happened near me?" Check storm reports around sites, warehouses, routes or rental properties. An AI agent can answer "Was there hail or wind damage within 25 miles of Denver in the last 48 hours?" with one call.
Need hail history for past years at a specific address instead of the last 7 days? Use US Hail History by Location (radar-based hail days back to 1995). The two Actors work well together: this one tells you where storms hit this week, US Hail History tells you how often a place was hit before.
How to use
- Click Start with the default input: you get the 50 newest hail and wind reports in the U.S. from the last 72 hours.
- Narrow it down: set
states, or a point (latitude,longitude) andradiusMiles. - Pick
eventTypes(e.g. onlyhail) and minimum sizes (e.g.minHailInches: 1,minWindMph: 58). - Download the results as JSON, CSV or Excel, or call the Actor from the API / MCP (see below).
- For daily storm leads, create a Schedule in Apify Console (e.g. every morning at 7:00 with
hoursBack: 24).
Input
Nothing is required. Every field has a default.
| Input | Type | Default | What it does |
|---|---|---|---|
states | list of 2-letter codes | all states | e.g. ["TX", "OK", "KS"] |
latitude, longitude | number | none | Center of a search circle in decimal degrees (U.S. longitudes are negative) |
radiusMiles | number | 50 | Radius around the point, 1–500 miles |
eventTypes | list | ["hail", "wind"] | hail, wind, tornado, flood, rain, winter, other; empty list = all |
hoursBack | integer | 72 | How far back to look, 1–168 hours (7 days) |
minHailInches | number | 0 | e.g. 1 (quarter size) or 1.75 (golf ball) |
minWindMph | number | 0 | e.g. 58 (severe); when set, wind damage reports without a speed are left out |
maxResults | integer | 50 | Newest reports first, 1–5000 |
Input example
Hail of 1 inch or larger within 250 miles of Denver, CO, in the last 7 days:
{"latitude": 39.7392,"longitude": -104.9903,"radiusMiles": 250,"eventTypes": ["hail"],"minHailInches": 1,"hoursBack": 168,"maxResults": 5}
Output
One row per storm report, newest first. Every row has status (ok, not_found or error).
Output example
Real output from the input above (cloud run on 2026-09-19, 3 reports found). The first row:
{"status": "ok","eventTime": "2026-09-18T23:45:00Z","eventTimeLocal": "2026-09-18T17:45:00-06:00","eventType": "Hail","eventCategory": "hail","eventCode": "Hail","magnitude": 1,"magnitudeUnit": "inch","magnitudeQualifier": "measured","latitude": 40.31,"longitude": -108.65,"location": "6 NNW Massadona","county": "Moffat","state": "CO","source": "Cocorahs","remarks": "Maximum hail size 1.00 inch, average hail size 0.50 inch.","distanceMiles": 197.59,"wfo": "GJT","productId": "29077392-94f0-4958-b65f-cf9a0dd07594","productUrl": "https://api.weather.gov/products/29077392-94f0-4958-b65f-cf9a0dd07594","issuedAt": "2026-09-19T00:35:00Z","dataSource": "NOAA National Weather Service, preliminary Local Storm Reports (api.weather.gov); public domain; not affiliated with or endorsed by NOAA/NWS"}
All 3 rows of that run:
| Event time (local) | Type | Size | Place | County, state | Source | Distance |
|---|---|---|---|---|---|---|
| 2026-09-18 17:45 MDT | Hail | 1.0 in (measured) | 6 NNW Massadona | Moffat, CO | Cocorahs | 197.6 mi |
| 2026-09-18 16:30 MDT | Hail | 1.0 in (measured) | Dinosaur | Moffat, CO | Cocorahs | 215.6 mi |
| 2026-09-17 19:56 MDT | Hail | 1.5 in (measured) | 9 ESE Broadwater | Morrill, NE | Storm Chaser | 172.9 mi |
With the default input (all states, hail + wind, 72 hours), the same day's cloud run returned 50 rows (46 wind, 4 hail) from SC, WY, KS, CO, TN, NE, NC and KY, for example:
| Event time (UTC) | Type | Size | Place | County, state | Source | Remarks |
|---|---|---|---|---|---|---|
| 2026-09-19 02:40 | Thunderstorm Wind Damage | — | 7 NW Troy | Abbeville, SC | Law Enforcement | Tree in roadway on Highway 28 near intersection of Bethia Road. Time estimated. |
| 2026-09-19 01:59 | Thunderstorm Wind Gust | 62 mph (measured) | 2 SW Harrison | Sioux, NE | Public | Personal weather station. |
| 2026-09-19 01:47 | Thunderstorm Wind Gust | 60 mph (measured) | 2 E Torrington | Goshen, WY | ASOS | ASOS station KTOR Torrington Airport - Tor. |
| 2026-09-19 00:09 | Thunderstorm Wind Gust | 69 mph (measured) | 9 NNW Mcdonald | Cheyenne, KS | Public | — |
| 2026-09-18 23:23 | Thunderstorm Wind Damage | — | 7 S Wheeler | Cheyenne, KS | Emergency Mngr | EM reports several power poles snapped with lines in the road. … |
| 2026-09-18 22:30 | Hail | 1.0 in (measured) | Dinosaur | Moffat, CO | Cocorahs | Maximum hail size of 1.00 inch, did cause some damage to car roofs … |
When nothing matches, or the input is invalid, you get one free row that says what to change (real output):
{"status": "not_found","error": "No NWS Local Storm Reports matched (hail reports in the last 72 hours in HI hail at least 5 in); widen \"eventTypes\", \"hoursBack\" (max 168), the area or the minimum sizes.","dataSource": "NOAA National Weather Service, preliminary Local Storm Reports (api.weather.gov); public domain; not affiliated with or endorsed by NOAA/NWS"}
Output fields
| Field | Meaning |
|---|---|
status | ok, not_found or error |
eventTime, eventTimeLocal | When the event happened, in UTC and in the NWS office's local time |
eventType, eventCategory, eventCode | Readable NWS event name (e.g. "Thunderstorm Wind Gust"), the filter category (hail, wind, tornado, flood, rain, winter, other) and the original NWS code (e.g. Tstm Wnd Gst) |
magnitude, magnitudeUnit, magnitudeQualifier | Hail size (inch), wind speed (mph or knot), EF rating, rain/snow amount etc.; measured or estimated. Empty for damage reports without a number |
latitude, longitude, location, county, state | Where it happened (NWS gives coordinates to 0.01°, about 1 km) |
source | Type of reporter, e.g. "Trained Spotter", "Mesonet", "Law Enforcement", "Public" — never a person's name |
remarks | NWS free-text remarks (see privacy note below) |
distanceMiles | Distance from your point, when you search around a point |
wfo, productId, productUrl, issuedAt | NWS office, and the original NWS product the report came from |
dataSource | Source and license note |
error | On not_found / error rows: one sentence explaining what to change |
How much does it cost to get storm reports?
This Actor uses Pay per event pricing — you pay for storm reports returned, not for compute time.
| Event | Price | When |
|---|---|---|
Storm report row (result-row) | $0.003 per row ($3 per 1,000) | Each ok row = one storm report |
Actor start (apify-actor-start) | $0.001 per run | Once at the start of each run |
not_foundanderrorrows are free.- Default run (50 newest U.S. hail and wind reports): about $0.15.
- "Hail near Denver this week" (the example above, 3 reports): about $0.01.
- A daily storm-lead check for one state, 30 reports a day: about $0.09 per day, $2.80 per month — no monthly subscription.
- 1,000 storm reports: $3.
- Set a maximum cost per run when you start the Actor to cap spending; if it is reached, the Actor stops cleanly and says so in the status message.
Use via API / MCP (AI agents)
Apify API (HTTP). Run the Actor and get the rows in one call:
curl -X POST "https://api.apify.com/v2/acts/japan-open-data~us-storm-reports-live/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"states": ["TX", "OK"], "eventTypes": ["hail"], "minHailInches": 1, "hoursBack": 48}'
Python (apify-client):
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("japan-open-data/us-storm-reports-live").call(run_input={"latitude": 32.7767, "longitude": -96.797, "radiusMiles": 50,"eventTypes": ["hail", "wind", "tornado"], "hoursBack": 24,})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["status"], row.get("eventTime"), row.get("eventType"), row.get("magnitude"), row.get("location"), row.get("distanceMiles"))
MCP (Claude, ChatGPT, Cursor and other AI agents). Add this Actor as a tool through the Apify MCP server (https://mcp.apify.com), for example with ?tools=japan-open-data/us-storm-reports-live. No field is required, so an agent can call it with {} or with just a state or a point.
Recommended agent settings:
- "Any hail near X recently?" →
{"latitude": <lat>, "longitude": <lon>, "radiusMiles": 25, "eventTypes": ["hail"], "hoursBack": 72}. - "Where was the damage last night in Texas?" →
{"states": ["TX"], "eventTypes": ["hail", "wind", "tornado"], "hoursBack": 24, "maxResults": 100}. - Damaging storms only →
minHailInches: 1andminWindMph: 58. - Keep
maxResultssmall (10–50) for chat answers; each row is charged. - Always check
status; onnot_found/errorshow theerrorsentence to the user. Tell users these are preliminary reports. - For past years at one address, call US Hail History by Location instead.
FAQ
How far back can I get storm reports?
About 7 days (hoursBack up to 168). That is how long the NWS API keeps Local Storm Report products. For older hail data use US Hail History by Location; for older confirmed events of all types, NOAA's Storm Events Database is published months later.
How fresh is the data? NWS offices issue Local Storm Reports during and shortly after storms, usually within minutes to a few hours. Each run reads the current NWS product list, so you get what has been published up to that moment.
Are the reports official and final? They are official NWS products but preliminary: sizes, times and places can be corrected, and they are later quality-controlled for the Storm Events Database. When NWS issues a correction, this Actor returns the corrected version.
Can I search by street address?
Not directly. Convert the address to latitude/longitude first (for example with the free U.S. Census Bureau geocoder) and use latitude, longitude and radiusMiles.
Is it legal to use this data commercially? Yes. Information from the NWS API is published as open data, free to use for any purpose, and NWS information is in the public domain. This Actor only reads the official API, identifies itself in the User-Agent and keeps its request count small.
Known limitations
- Last 7 days only (see FAQ). This is not a historical archive.
- Preliminary reports. Not every storm is reported, and a missing report does not mean nothing happened.
- Up to 400 NWS products per run. Very wide searches (all states, all event types, 7 days) may stop before the oldest reports; the status message then says so. Narrow the area (
statesor a point + radius) to go further back. - Corrections. Corrected reports are matched by NWS office, event category and place name; in rare cases where NWS also changes the place name, both versions may appear.
- Remarks privacy filter.
remarksis left empty (null) when it contains something that looks like a street address, contact details, a personal weather station or radio ID (e.g. Ambient, WeatherLink, CWOP, call signs) or a person's name. This cautious filter drops roughly 3–4% of remarks, some of them harmless. - Coordinates are rounded by NWS to 0.01° (about 1 km), and
locationis given as "distance + direction + town" (e.g. "7 NW Troy"), not a street address. - NWS API outages. If api.weather.gov is down, the Actor stops retrying after about a minute and returns one free
errorrow ("could not be reached") instead of failing the run; if it stops responding part-way, the reports read so far are returned and the status message says some may be missing.
Data source and license
- Source: NOAA National Weather Service API, Local Storm Report (LSR) products — https://api.weather.gov/products/types/LSR (API documentation).
- License: NWS information is in the public domain (NWS disclaimer). Every row includes
dataSource, andproductUrllinks to the original NWS product. - Not affiliated: this Actor is an independent project and is not affiliated with, endorsed by or sponsored by NOAA or the National Weather Service. It does not use NOAA or NWS logos. The data is reformatted (parsed, filtered, de-duplicated) and is not an official NWS publication.
- No personal data:
sourceis a reporter type only, and remarks that look like personal information are removed (see above).
More from Japan Open Data
- NSW Rent Prices by Postcode (Official Bond Data) — median weekly rents for any New South Wales postcode or suburb by dwelling type and bedrooms, from NSW Fair Trading's official rental bond data, with quartiles and year-over-year change.
- Korea E-commerce Company Leads (KFTC Register) — new Korean e-commerce companies from the official KFTC online seller register (통신판매업), in English with business registration number and store platform.
- Poland Building Permits API: Construction Leads — new Polish building permits (pozwolenia na budowę) issued to companies and public bodies, with investor, building category and site, from the official GUNB register.
- Taiwan Real Estate Sold Prices API in English — official Taiwan actual-price-registration sales (buildings, land, parking) by city and district, translated into English with price per ping and per m².
- France Building Permits API: Construction Leads — official French building permits (Sitadel) filed by companies, by department, commune or date, with SIREN, project type and floor areas.
- UK Importers & Exporters by Product (HMRC Data) — UK companies that imported or exported a product each month, by HS code or keyword, from official HMRC trade data, with new traders flagged for lead lists.
- UK Visa Sponsor Register Tracker (Daily Changes) — new, removed and downgraded UK visa sponsor licences from the official Home Office register, or check whether a company can sponsor workers.
- US Flood Zone Lookup by Address (FEMA NFHL) — official FEMA flood zone (A, AE, VE, X…), base flood elevation and FIRM panel for any U.S. address or coordinates.
- Japan Hazard Map Lookup: Flood, Tsunami, Landslide — official Japanese hazard-map zones (river flood depth, storm surge, tsunami, landslide) for up to 1,000 coordinates per run, from GSI open data, in English.
- US Hail History by Location — hail history for any U.S. latitude/longitude from NOAA NEXRAD radar, back to 1995: one row per hail day with max hail size and distance. Use it for the long-term hail history of a place; use US Storm Reports for all storm types in the last 7 days.
- TSA Checkpoint Travel Numbers (Daily, Weekly & YoY) — daily U.S. TSA airport checkpoint traveler counts as clean JSON, with weekly averages and year-over-year change.
- Japan Postal Code & Address in English — look up Japanese postal codes and addresses in English/romaji, kanji and kana, from Japan Post's official data.
- Mexico Gas Prices API by Station (Official CNE) — today's regular, premium and diesel prices at every Mexican gas station from the official CNE feed, with coordinates and distance.
- Argentina Fuel Prices API by Station (Official) — last reported gasoline (nafta), diesel and CNG prices at every Argentine gas station from the Energy Secretariat's official open data, with the report date of each price, coordinates and distance.
- UK Flood Risk Lookup by Postcode (England) — another location risk check: Environment Agency flood zone, recorded flood extents and flood defences for any postcode or coordinates in England.
- UK HGV Operator Licence Lookup (Official DVSA) — search the official DVSA / Traffic Commissioner register of UK truck and bus operator licences by company name, postcode area or fleet size.
- France Property Risk Lookup by Address (Georisques) — another location risk check: official Géorisques risks for any French address or coordinates: flood, clay shrink-swell, seismic zone, radon, past natural-disaster declarations and nearby industrial / polluted sites, one row per location.
- UK Waste Carrier Licence Check (Environment Agency) — check whether a company is a registered waste carrier, broker or dealer in England by registration number, company name or postcode radius, from the Environment Agency's public register (companies and organisations only).
- England Listed Building & Conservation Area Check — official listed buildings, scheduled monuments, conservation areas and Article 4 directions for any postcode or coordinates in England, one row per location.
- England Protected Site Check: SSSI, AONB & Green Belt — SSSI, National Landscape (AONB), National Park, Green Belt, SAC/SPA and Ramsar checks for any English postcode or coordinates, one row per site, from official Natural England and DLUHC data.
- UK NHS Organisation Lookup (Official ODS Codes) — GP practices, pharmacies, dentists, hospitals and NHS trusts from the official ODS register, by postcode, type or ODS code (organisations only).
Feedback
Found a wrong value, a missing report type, or need another filter (e.g. by county or NWS office)? Open an issue on the Actor's Issues tab with your input and what you expected. If the Actor is useful to you, a short review helps others find it.