Storm & Hail Damage Leads: NOAA Hail Reports by ZIP Code avatar

Storm & Hail Damage Leads: NOAA Hail Reports by ZIP Code

Pricing

from $5.00 / 1,000 storm zip rows

Go to Apify Store
Storm & Hail Damage Leads: NOAA Hail Reports by ZIP Code

Storm & Hail Damage Leads: NOAA Hail Reports by ZIP Code

ZIP codes hit by hail, damaging wind, tornadoes and hurricanes from official NWS warnings, NOAA Storm Events and OpenFEMA declarations, scored by severity and joined with city roofing-permit surges. Street-level permit counts, no homeowner data. Incremental runs.

Pricing

from $5.00 / 1,000 storm zip rows

Rating

0.0

(0)

Developer

Clearfeed Labs

Clearfeed Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Share

Hail & Storm Damage Leads API: ZIP Codes Hit by Hail, Wind & Tornadoes

Storm-to-Roofing Feed turns official U.S. storm data into a clean list of the ZIP codes that were just hit by hail, damaging wind, tornadoes or hurricanes, scored by severity, tagged with any FEMA disaster declaration, and (in covered cities) joined with roofing-permit surges so you can see where re-roof work is actually climbing. One row per ZIP code per storm event. Run it on a schedule and you only get, and pay for, ZIP-events that are new or changed since your last run.

Built for licensed roofing, siding, gutter and restoration contractors, storm-response sales teams, insurance and claims operations, building-supply distributors and market analysts.

Why use it

  • Official sources only. National Weather Service warnings (api.weather.gov), NOAA NCEI Storm Events, OpenFEMA, and city open-data permit portals. No logins, no proxies, no scraping of private sites.
  • ZIP-level, ready to act on. Max hail size, max wind gust, tornado flag, report count, county, ZIP centroid and a 0-100 severity score with a tier (low / moderate / severe / extreme).
  • Roofing-permit surge layer. In Austin, Dallas and Fort Worth TX, Miami-Dade County FL, Minneapolis MN, New Orleans LA and Baton Rouge LA, each storm ZIP gets the number of unique addresses with roof permits issued since the storm, the ZIP's normal weekly rate over the prior 52 weeks, a surge ratio, a z-score, a permitSurge flag, and the top streets by permit count.
  • No homeowner data. No names, no phone numbers, no house numbers. Streets are reported only as street name + count of unique permitted addresses from public permit records.
  • Incremental. onlyNewSinceLastRun (on by default) remembers what you've already received per stateKey.
  • About 90% cheaper than per-report hail tools. Note: this is point-report and warning data, not radar-derived hail swaths.

Example runs

Live example pages:

More input ideas:

  • Texas hail ≥ 1" ZIP alerts: {"states":["TX"],"eventTypes":["hail"],"minHailInches":"1","lookbackDays":3}
  • Austin hail + roof-permit surge: {"states":["TX"],"includePermitSurgeZips":true,"permitCities":["austin"]}
  • Florida hurricane/extreme wind + FEMA ZIPs: {"states":["FL"],"eventTypes":["hurricane","wind","tornado"],"minWindMph":74,"lookbackDays":7,"includeFemaCountyZips":true}
  • Territory planning (last 6 months of verified reports): {"states":["CO","KS","OK"],"includeStormEventsHistory":true,"historyDays":180,"includeNwsAlerts":false}

Input

FieldDefaultWhat it does
states["TX"]2-letter state codes
lookbackDays3Days of live NWS warnings (1-7)
eventTypesallhail, wind, tornado, hurricane
minHailInches / minWindMph1 / 58Severity thresholds
bufferMiles3ZIPs whose centre is within this distance of a storm report
includeNwsAlertstrueLive Severe Thunderstorm, Tornado, Hurricane and Extreme Wind warnings
includeStormEventsHistoryfalseNOAA NCEI verified reports (lag 2-4 months)
includeFematrueTag ZIPs in counties with a matching declaration
includePermitstrueRoof-permit layer in covered cities
includeFemaCountyZipsfalseAlso output every ZIP in FEMA-declared counties (last 120 days), even with no matched warning
includePermitSurgeZipsfalseAlso output covered ZIPs with a permit surge but no matched storm
permitWindowDays / baselineWeeks / surgeRatio / minSurgePermits14 / 52 / 2 / 5Surge definition
onlyNewSinceLastRun / stateKeytrue / defaultDelta memory
maxRows500Hard cap on billed rows

Output

Real row from an Austin run on Nov 1, 2026 (permit-surge ZIP, includePermitSurgeZips: true):

{
"eventId": "permit-surge-austin-2026-10-19",
"eventDate": "2026-10-19T01:15:55.587Z",
"eventType": "permit-surge",
"source": [
"PERMITS"
],
"state": "TX",
"county": "Travis County",
"countyFips": "48453",
"zip": "78653",
"zipCentroidLat": 30.33969,
"zipCentroidLon": -97.52349,
"maxHailInches": null,
"maxWindMph": null,
"tornadoEF": null,
"reportCount": 0,
"nwsWarningIds": [],
"headline": "Roof-permitted addresses up 14x vs 52-week baseline",
"femaDeclarationNumber": null,
"femaIncidentType": null,
"femaDeclarationTitle": null,
"severityScore": 0,
"severityTier": "low",
"permitCoverage": true,
"permitCity": "Austin, TX",
"roofPermitsSinceEvent": 7,
"roofPermitWindowDays": 14,
"roofPermitBaselineWeekly": 0.25,
"permitSurgeRatio": 14,
"permitSurgeZScore": 2.89,
"permitSurge": true,
"topStreets": [
{
"street": "PAMPERING DR",
"permitCount": 5
},
{
"street": "GAMBOL DR",
"permitCount": 2
}
],
"sourceUrls": [
"https://data.austintexas.gov/d/3syk-w9eu"
],
"disclaimer": "Public U.S. government data (NOAA National Weather Service, NOAA NCEI Storm Events, OpenFEMA) and city open-data permit ...",
"retrievedAt": "2026-11-02T01:15:55.587Z",
"isNew": true,
"changeType": "new"
}

Real FEMA county row from a Florida run (includeFemaCountyZips: true):

{
"eventId": "fema-EM-3655-FL",
"eventDate": "2026-10-06T00:00:00.000Z",
"eventType": "hurricane",
"source": [
"FEMA"
],
"state": "FL",
"county": "Lafayette County",
"zip": "32008",
"severityScore": 85,
"severityTier": "extreme",
"femaDeclarationNumber": "EM-3655-FL",
"femaIncidentType": "Tropical Storm",
"femaDeclarationTitle": "HURRICANE ISAIAS",
"permitCoverage": false,
"sourceUrls": [
"https://www.fema.gov/disaster/3655"
]
}

eventId is stable: nws-<office.phenomenon.significance.ETN.year> for NWS warnings (all updates of one warning collapse into one event), ncei-ep<episode> for NOAA Storm Events, permit-surge-<city>-<week> for permit-only rows, fema-<declaration> for FEMA county rows. A run summary (sources used, row counts, permit cities, request counts) is saved as RUN_SUMMARY in the key-value store.

How the join works

  1. Storms → ZIPs. NWS warning polygons are intersected with Census ZIP Code Tabulation Area (ZCTA) centroids (plus a small buffer); warnings without a polygon (e.g. hurricanes) use their county codes. NOAA point reports use ZIP centroids within bufferMiles.
  2. FEMA. A declaration matches when the ZIP's county (or the whole state) is designated and the storm falls within the incident period.
  3. Permits. Roof permits are pulled from each city's official open-data API, filtered to roof work (re-roof, roof, shingle; solar-only installs excluded), mapped to ZIP, counted as unique addresses (a property or complex with many permits counts once; the address key is hashed internally and never output), and compared with the ZIP's weekly mean of unique addresses over the prior 52 weeks. permitSurge = at least minSurgePermits permits and a weekly rate ≥ surgeRatio × baseline.

Permit coverage (v0.1)

CityPortalNotes
Austin, TXdata.austintexas.gov (Issued Construction Permits)ZIP from permit record
Minneapolis, MNCity of Minneapolis CCS Permits (ArcGIS)ZIP from nearest ZCTA centroid to permit point
New Orleans, LAdata.nola.gov (Permits, code ROOF)ZIP from nearest ZCTA centroid
Baton Rouge, LAdata.brla.gov (EBR Building Permits, Re-Roof)ZIP from permit record
Dallas, TXdallasopendata.com (Building Permits, type "Residential Roofing Permit")ZIP from permit record
Fort Worth, TXCity of Fort Worth Development Permits (ArcGIS, mapit.fortworthtexas.gov)ZIP from permit record; uses file date; queried at most once per 60 s and cached 12 h; owner fields never requested
Miami-Dade County, FLMiami-Dade County building permits (ArcGIS, BLDG roof work)ZIP from the official U.S. Census Geocoder (batched, cached; only a hashed address key and ZIP are kept)

Other ZIPs get storm rows with permitCoverage: false. Not covered today: Denver (its open permit layers exclude roofing permits), Houston (most residential re-roofs don't need a permit there), Oklahoma, Kansas and Nebraska (no official open permit API found). Permit data is cached for 12 hours per account, so repeat runs are fast.

What to expect

A daily run for one state usually returns 0-200 ZIP rows depending on the weather; quiet days return nothing and cost only the start fee. Requests are throttled per host (≥1.5 s apart) with an identifying User-Agent. Live NWS warnings cover roughly the last 7 days; NOAA Storm Events are verified but published 2-4 months after the storm.

Pricing

Pay per event:

  • Actor start: $0.00005
  • Storm ZIP row: $0.005 ($5 per 1,000)
  • Permit-enriched ZIP row (ZIP in a covered permit city): $0.02 instead of the storm ZIP row price

A typical one-state daily alert is about $0.10-$1 per day. Use maxRows and Apify's max-charge setting to cap spend.

Use with AI agents (MCP)

This Actor works as a tool for AI agents through the Apify MCP server. Add clearfeedlabs/storm-roofing-feed to your MCP client (Claude, Cursor, ChatGPT and others) and ask things like "Which Texas ZIP codes had 1.5-inch hail this week?" or "Where in Minneapolis are roof permits surging after last week's storm?" The structured fields (severity tier, hail size, FEMA number, surge ratio) are easy for an agent to filter, rank and explain.

Alerts and integrations

  • Webhook: In the Actor's Integrations tab add a webhook on ACTOR.RUN.SUCCEEDED and fetch .../datasets/{defaultDatasetId}/items?view=overview from your endpoint.
  • Zapier: Trigger "Finished Actor Run" (Apify app) → "Get Dataset Items" → filter severityTier is severe or extreme → post to your team's Slack channel or add a CRM territory task.
  • Make: Apify "Watch Actor Runs" → "Get Dataset Items" → Iterator → Google Sheets "Add a Row" or Email to your own sales team.
  • Google Sheets: Use Apify's Google Sheets integration (or =IMPORTDATA("https://api.apify.com/v2/datasets/<id>/items?format=csv&view=overview&token=<your token>") in a private sheet) for a daily list of hit ZIPs.
  • Schedule: Create a Task per territory with its own stateKey, schedule it hourly or daily, and you'll only receive new or changed ZIP-events.

Also from Clearfeed Labs

Compliance and data use

  • Data comes from public U.S. government sources (NOAA National Weather Service, NOAA NCEI Storm Events, OpenFEMA) and city open-data portals, each used under its published terms, with throttled requests and an identifying User-Agent. No logins, keys, proxies or anti-bot evasion.
  • This product uses the FEMA OpenFEMA API but is not endorsed by FEMA. The Federal Government or FEMA cannot vouch for the data or analyses derived from these data after the data have been retrieved from FEMA's website. Do not use this data to identify individuals or to make decisions about anyone's eligibility for rights, benefits or services.
  • Storm reports and warnings are preliminary. This is not a damage assessment, insurance determination or official warning. For life-safety information use weather.gov.
  • No homeowner names or phone numbers. Permit data is aggregated to street name + count.
  • Your outreach is your responsibility. If you contact consumers you must comply with the TCPA (no autodialed or prerecorded calls/texts to mobiles without prior express written consent), the National Do-Not-Call Registry and state DNC lists, CAN-SPAM for email, and state and local rules on post-disaster solicitation: contractor licensing/registration, door-to-door permits and quiet hours, 3-day (or longer) cancellation rights for storm contracts, bans on offering to pay or waive insurance deductibles, public-adjusting restrictions, and price-gouging laws during declared emergencies (for example in TX, FL, LA, CO, OK and MN). Check your state and city rules and hold all required licenses before marketing.
  • Every row carries a disclaimer field with this notice. Data is provided as is, without warranty.

FAQ

Is this the same as a hail swath map? No. It uses official warnings and point reports, not radar-estimated hail swaths. It's best as a fast, cheap trigger list of ZIPs to check.

Why do some ZIPs have no permit data? Only seven cities/counties publish roof permits in a usable open format today. More cities will be added as their portals allow.

Why is NOAA Storm Events months behind? NOAA verifies reports before publishing the bulk files. Use it for history and territory planning; use live NWS warnings for alerts.


Built by Clearfeed Labs: clean, compliant data feeds. Found an issue or want a city added? Open an issue on the Actor's Issues tab with a small example input. If the Actor helped your workflow, an honest review helps other users decide.


More Clearfeed Labs tools: clearfeedlabs.com