US National Weather Service publishes severe-weather alerts the moment forecasters issue them. NOAA's National Hurricane Center publishes every advisory on every named storm. OpenWeather aggregates global severe alerts including those neither agency covers. Wire all three and you have severe weather monitoring that beats most paid weather-intel services.
This post is about the practical pipeline: which feeds to consume, how to filter, and how to geofence so the on-call lead doesn't get paged for every tornado watch 600 miles away.
NWS Common Alerting Protocol (CAP)
The US National Weather Service publishes alerts in CAP — a standard XML format for emergency notifications. Two consumption modes:
CAP feed (pull)
Atom feed of every active US alert:
https://api.weather.gov/alerts/active.atom?limit=500
Refresh every 60 seconds. No key required. Geographic filter via area= query param:
https://api.weather.gov/alerts/active?area=CA,OR,WA
Each alert has:
effective/expirestimestampsseverity(Minor / Moderate / Severe / Extreme)urgency(Past / Future / Expected / Immediate)certainty(Possible / Likely / Observed)geocode(FIPS county code + UGC zone)polygon(lat/lon vertices when issued for a specific area)- Free-text headline + description
CAP webhook (push)
NWS publishes alerts via SQS-style queue if you register an endpoint. Sub-second latency. Useful for shake-warning-equivalent operations (mass-transit, broadcast).
For most operations the pull mode is enough — 60-second poll interval is well inside the issue-to-impact window for severe weather.
NHC hurricane advisories
NHC publishes every advisory on every named storm in Atlantic, East Pacific and Central Pacific basins. CurrentStorms.json gives you the live list:
https://www.nhc.noaa.gov/CurrentStorms.json
Per-storm advisories (track + cone + intensity):
https://www.nhc.noaa.gov/storm_graphics/AT05/AL052024_track.json
Update cadence: every 6 hours during routine periods, every 3 hours when a storm is active, hourly when a storm is making landfall.
OpenWeather alerts
OpenWeather's One Call API includes a severe-weather alerts array per lat/lon:
https://api.openweathermap.org/data/3.0/onecall?lat=...&lon=...&appid=KEY
Free tier covers most usage. Useful for global coverage outside US (NWS) + Atlantic/Pacific (NHC).
Normalisation — turning three feeds into one event stream
Each feed has its own severity scale. Normalise to a 0-100 score at ingest:
function normaliseNwsSeverity(alert: NwsAlert): number {
const sev = { Extreme: 90, Severe: 70, Moderate: 50, Minor: 30 }[alert.severity] ?? 30;
const urg = { Immediate: 15, Expected: 10, Future: 5, Past: -10 }[alert.urgency] ?? 0;
const cer = { Observed: 10, Likely: 5, Possible: 0, Unlikely: -10 }[alert.certainty] ?? 0;
return Math.max(0, Math.min(100, sev + urg + cer));
}
function normaliseNhcSeverity(advisory: NhcAdvisory): number {
// Saffir-Simpson category * 15, plus landfall-probability boost
return Math.min(100, advisory.category * 15 + advisory.landfallProb * 0.4);
}
Once every feed lands as a 0-100 number, downstream filters and zones treat them identically.
Geofencing patterns for weather
Three patterns that scale:
1. Asset-radius circles
50-100km circle around each refinery, distribution centre, retail hub. Tune severity threshold per asset risk profile:
- Hardened refinery: ≥80 (only the truly bad stuff)
- Open-air warehouse: ≥60
- Outdoor field crew: ≥40
2. Polygon zones for region-wide assets
For utilities, telecoms, anything with a regional footprint — use state/province polygons. Filter to severity >= 60 so you only see real impact events.
3. Hurricane track corridors
When NHC declares a storm, automatically push a polygon zone along the forecast cone with a 7-day expiry. Set severity threshold to 50 so all advisories fire. Use this for Gulf-of-Mexico operations, eastern-seaboard logistics.
Avoiding the most common false-positive trap
NWS issues "tornado watch" for entire states. The watch covers a 12-hour window for a 200x200 mile area. Treating every watch as actionable spam-floods the ops channel.
Two filters that work:
- Drop "watches", keep "warnings". Watches mean "conditions favourable" — usually not actionable. Warnings mean "occurring now or imminent" — actionable.
- Filter on
urgency = Immediateonly. Drops the 12-hour-ahead pre-warnings, keeps the "happening now" alerts.
Lead-time benchmarks
How much warning these feeds give before impact:
- Tornado warning: 5-15 minutes (NWS Doppler radar driven)
- Hurricane advisory: 48-120 hours (NHC track forecast)
- Severe thunderstorm warning: 15-45 minutes
- Flash flood warning: 0-30 minutes (often "active now")
- Winter storm warning: 12-24 hours
For most operations the 12-24 hour lead time on winter storms + 48-120 hour on hurricanes is plenty to repositioning crews and pre-stage supplies.
OpenWeather severe-weather pitfalls
OpenWeather's severe alerts array aggregates from local meteorological services worldwide. Quality varies:
- US: forwards NWS — same data, slight latency penalty
- EU: forwards Met-Norway + UK Met — high quality
- Asia: forwards JMA + CMA + local services — variable quality
- Africa / SA: sparse coverage, mostly headline events
For US ops, query NWS directly. For non-US ops, OpenWeather is your best free option.
Free starter stack
The minimum viable severe-weather monitoring system:
- Wire NWS CAP feed — poll every 60s, filter to your operating states
- Wire NHC CurrentStorms.json — poll every 5 minutes during hurricane season
- Wire OpenWeather One Call — per-asset poll, every 15 minutes
- Normalise to 0-100 severity per event
- Define watch zones around your top 30 assets
- Slack channel
#ops-weather, route via incoming webhook
Augur's NWS + NHC + OpenWeather ingest wraps all of this with the unified severity scale and the same geofencing pipeline used for seismic, conflict, AIS and the other 17 feeds.
When you outgrow free feeds
The day you need:
- Sub-minute warning latency (mass transit, broadcast)
- Vendor SLA on alert delivery
- Pre-positioned meteorologist on-call analyst
- Hyperlocal nowcasting (Tomorrow.io, Climacell, IBM Weather Co)
…you graduate to a paid service. For the first $5M/year of operations, free NOAA + OpenWeather feeds + a tight geofencing layer are enough.
Pick the threshold, draw the polygons, ship the pipeline.