NOAA Weather Alert Monitor is an Apify actor on ApifyForge. Search and monitor NOAA weather alerts for all US states. Get real-time tornado warnings, flood watches, hurricane advisories, winter storm alerts, and every NWS alert type. It costs $0.001 per alert-fetched. Best for teams who need automated noaa weather alert monitor data extraction and analysis. Not ideal for use cases requiring real-time streaming data or sub-second latency. Maintenance pulse: 90/100. Last verified March 27, 2026. Built by Ryan Clinton (ryanclinton on Apify).
NOAA Weather Alert Monitor
NOAA Weather Alert Monitor is an Apify actor available on ApifyForge at $0.001 per alert-fetched. Search and monitor NOAA weather alerts for all US states. Get real-time tornado warnings, flood watches, hurricane advisories, winter storm alerts, and every NWS alert type. Filter by state, severity, urgency, event type. Free API, no key needed.
Best for teams who need automated noaa weather alert monitor data extraction and analysis.
Not ideal for use cases requiring real-time streaming data or sub-second latency.
What to know
- Results depend on the availability and structure of upstream data sources.
- Large-scale runs may be subject to platform rate limits.
- Requires an Apify account — free tier available with limited monthly usage.
Maintenance Pulse
90/100Cost Estimate
How many results do you need?
Pricing
Pay Per Event model. You only pay for what you use.
| Event | Description | Price |
|---|---|---|
| alert-fetched | Charged per weather alert record retrieved from NOAA. | $0.001 |
Example: 100 events = $0.10 · 1,000 events = $1.00
Documentation
What does NOAA Weather Alert Monitor do?
NOAA Weather Alert Monitor queries the official National Weather Service API (api.weather.gov) and turns raw alerts into scored, ranked decisions. Most weather-alert tools hand you the CAP feed and leave you to read it; this one scores every alert on the standard severity × urgency × certainty matrix, maps the NWS response field to an operational recommendedAction (take-shelter, evacuate, avoid-area, monitor), flags which alerts actually need attention, and returns a run-level summary of what's happening across your area — so an automation or dashboard can branch on a number and an enum instead of parsing prose.
It operates in two distinct modes. Active mode (the default) fetches all currently live warnings, watches, and advisories in real time. Historical mode searches recent past alerts within a specified date range — useful for post-event analysis, insurance risk assessment, and climate research. Set a watchlist name to turn on cross-run monitoring: each run is compared to the last, flagging new, escalated, downgraded, cancelled, and resolved alerts for a location. Each alert record carries the full CAP payload — headline, safety instructions, affected areas, SAME and UGC geocodes, issuing NWS office, timing fields — plus the decision layer on top. The NWS API is free, open, and requires no API key.
Why use NOAA Weather Alert Monitor on Apify?
- No API key or authentication required -- the NWS API is completely free and open. This actor handles all communication, required headers, pagination, and data transformation automatically.
- Structured, normalized output -- raw NOAA GeoJSON responses with deeply nested properties are transformed into clean, flat JSON records ready for processing, filtering, and export.
- Automatic cursor-based pagination -- the actor follows NWS pagination links to retrieve complete result sets, handling up to 5,000 alerts across up to 20 API pages per run.
- Scheduled monitoring -- run on a recurring Apify schedule (every 15 minutes, hourly, daily) to build a continuous weather alert feed with zero infrastructure.
- Cloud execution with integrations -- no servers or cron jobs needed. Built-in REST API access, webhook triggers, and integrations to Slack, Google Sheets, Zapier, and more.
Key features
- Deterministic priority scoring -- every alert gets a 0-100
alertPriorityfrom the standard CAP matrix (severity 50%, urgency 30%, certainty 20%) plus apriorityLevelband (critical / high / moderate / low / informational). No LLM, no randomness — the same alert always scores the same, with apriorityFactorsbreakdown showing how. - Operational recommended action --
recommendedActionmaps the NWSresponsefield to a routing enum (take-shelter, evacuate, avoid-area, prepare, monitor, all-clear, no-action) andactionRequiredis a one-field automation gate. - Timing intelligence --
timing.status(active / upcoming / expired), minutes-until-onset, minutes-until-expiry, and anexpiringSoonflag, so you can tell what's happening now from what starts in six hours. - Cross-run monitoring -- set a
watchlistNameand each run is diffed against the last:changeFlag(NEW / UPDATED / ESCALATED / DOWNGRADED / CANCELLED / UNCHANGED), priority delta, and a resolved-alert list when warnings clear. - Run-level summary record -- one
recordType: "summary"record with the headline, critical count, action-required count, the highest-priority alert, breakdowns by level/severity/event/category, and the next alert to expire (also pinned to theSUMMARYkey-value record). - Dual-mode operation -- active alerts for real-time monitoring, or historical search with date ranges for research and trend analysis.
- Three-dimensional NWS filtering -- filter by severity, urgency, and certainty at the API, plus a post-scoring
minPriorityworklist filter and anoutputProfile(minimal / standard / full). - State and territory filtering -- any US state or territory by two-letter code (CA, TX, FL, PR, GU, etc.) or empty for nationwide.
- SAME and UGC geocodes -- FIPS county codes (SAME) and NWS zone codes (UGC) for county-level geographic targeting.
- Up to 5,000 alerts per run -- configurable
maxResultscap with automatic cursor pagination.
How to use NOAA Weather Alert Monitor
- Go to the NOAA Weather Alert Monitor page on Apify and click Start.
- Choose your mode: leave Active Alerts Only checked for live monitoring, or uncheck it for historical search.
- Enter a State/Territory Code (e.g.,
TXfor Texas) or leave empty for all US alerts. - Optionally set Severity, Urgency, Certainty, or Event Type filters.
- For historical mode, set Start Date and End Date in
YYYY-MM-DDformat. - Set Max Results (default 100, up to 5,000).
- Click Start and wait for results (typically 5--30 seconds).
- Download results from the Dataset tab in JSON, CSV, Excel, or XML format.
- Optionally, set up a recurring schedule (e.g., every 15 minutes) for continuous monitoring.
- Access results programmatically via the Apify API or connect integrations (Slack, webhooks, Google Sheets, Zapier).
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
activeOnly | Boolean | true | When checked, returns only currently active alerts via /alerts/active. Uncheck for historical search with date range filters via /alerts. |
area | String | "CA" (prefill) | Two-letter US state or territory code (e.g., CA, TX, FL, NY, PR). Automatically uppercased. Leave empty for all US alerts. |
severity | Select | -- | Filter by severity: Extreme, Severe, Moderate, Minor, or Unknown. |
urgency | Select | -- | Filter by urgency: Immediate, Expected, Future, Past, or Unknown. |
certainty | Select | -- | Filter by certainty: Observed, Likely, Possible, Unlikely, or Unknown. |
eventType | String | -- | Specific NWS event type (e.g., Tornado Warning, Flash Flood Warning, Winter Storm Watch). Must match NWS naming exactly. |
startDate | String | -- | Start date in YYYY-MM-DD format. Only used when activeOnly is unchecked (historical mode). Converted to T00:00:00Z. |
endDate | String | -- | End date in YYYY-MM-DD format. Only used when activeOnly is unchecked (historical mode). Converted to T23:59:59Z. |
maxResults | Integer | 100 | Maximum number of alerts to return (1--5,000). |
minPriority | Integer | -- | Only output alerts scoring at or above this alertPriority (0--100). The run summary still counts every alert; suppressed alerts are logged. |
watchlistName | String | -- | Set a name to turn on cross-run monitoring for a location/query. Each run is compared to the last under this name. Leave empty for a one-off run. |
outputProfile | Select | standard | minimal (decision fields only), standard (decisions + core alert fields), or full (every field). |
Input examples
Active severe alerts in Texas:
{
"activeOnly": true,
"area": "TX",
"severity": "Severe",
"maxResults": 50
}
Historical tornado warnings with date range:
{
"activeOnly": false,
"area": "OK",
"eventType": "Tornado Warning",
"startDate": "2025-04-01",
"endDate": "2025-04-30",
"maxResults": 500
}
Extreme urgency with observed certainty:
{
"activeOnly": true,
"area": "FL",
"severity": "Extreme",
"urgency": "Immediate",
"certainty": "Observed",
"maxResults": 100
}
All active alerts nationwide (no filters):
{
"activeOnly": true,
"maxResults": 1000
}
Monitor Florida for high-priority alerts (cross-run change detection):
{
"activeOnly": true,
"area": "FL",
"minPriority": 60,
"watchlistName": "florida-ops",
"outputProfile": "minimal"
}
Run this on a schedule under the same watchlistName and each run flags what is NEW, ESCALATED, or RESOLVED since the last one — only emitting alerts scoring 60+.
Tips for best results
- Active mode is best for monitoring -- it returns only currently live alerts and responds faster since the NWS active endpoint is optimized for real-time queries.
- Date filters are ignored in active mode --
startDateandendDateonly apply whenactiveOnlyis unchecked. This is by design of the NWS API. - Event type strings must match exactly -- use official NWS event names like
Tornado Warning,Flood Watch, orWinter Storm Warning. Partial matches and case variations do not work. - State codes are case-insensitive -- the actor automatically uppercases the
areaparameter, soca,Ca, andCAall work identically. - Combine all three filter dimensions for the most targeted monitoring. Setting severity to
Extreme, urgency toImmediate, and certainty toObservedcaptures only confirmed, life-threatening events in progress. - Schedule runs every 15--30 minutes for continuous monitoring. Connect a webhook or Slack integration to receive notifications when new severe alerts appear.
Output example
Each alert is output as a flat JSON object combining the raw CAP fields with the decision layer. Here is a realistic tornado warning (standard profile):
{
"recordType": "alert",
"schemaVersion": "2.0.0",
"alertPriority": 95,
"priorityLevel": "critical",
"recommendedAction": "take-shelter",
"actionRequired": true,
"messageStatus": "new",
"isCancellation": false,
"timing": {
"status": "active",
"minutesUntilOnset": null,
"minutesUntilExpiry": 37,
"durationHours": 0.6,
"expiringSoon": true
},
"priorityFactors": {
"severity": { "value": "Extreme", "contribution": 50 },
"urgency": { "value": "Immediate", "contribution": 30 },
"certainty": { "value": "Observed", "contribution": 20 }
},
"whyItMatters": "Tornado Warning (Extreme/Immediate) for Cleveland, OK. In effect for ~37 min more.",
"summary": "CRITICAL: Tornado Warning for Cleveland, OK. Recommended: take-shelter.",
"alertId": "urn:oid:2.49.0.1.840.0.2025.04.15.14.23.0045",
"event": "Tornado Warning",
"headline": "Tornado Warning issued April 15 at 2:23PM CDT by NWS Norman OK",
"severity": "Extreme",
"urgency": "Immediate",
"certainty": "Observed",
"category": "Met",
"status": "Actual",
"response": "Shelter",
"areaDesc": "Cleveland, OK; McClain, OK",
"senderName": "NWS Norman OK",
"sent": "2025-04-15T14:23:00-05:00",
"effective": "2025-04-15T14:23:00-05:00",
"onset": "2025-04-15T14:23:00-05:00",
"expires": "2025-04-15T15:00:00-05:00",
"ends": "2025-04-15T15:00:00-05:00",
"sameCodes": "040027|040087",
"ugcCodes": "OKC025|OKC087",
"nwsHeadline": "TORNADO WARNING IN EFFECT UNTIL 300 PM CDT",
"changeFlag": null,
"extractedAt": "2025-04-15T19:24:12.345Z"
}
When watchlistName is set, changeFlag, previousPriority, priorityDelta, and runsSeen are populated instead of null. Every run also emits one recordType: "summary" record (and, in watchlist mode, a recordType: "watchlist-summary" record).
Output fields reference
Decision layer (added by this actor on top of the raw CAP fields):
| Field | Type | Description |
|---|---|---|
recordType | String | alert, summary, watchlist-summary, no-results, or error. |
alertPriority | Number | 0--100 deterministic CAP priority (severity 50% + urgency 30% + certainty 20%). Sort key. |
priorityLevel | String | Band: critical, high, moderate, low, informational. |
recommendedAction | String | take-shelter, evacuate, avoid-area, prepare, execute-instructions, assess, monitor, all-clear, no-action. |
actionRequired | Boolean | True when critical/high, in effect, and not cancelled. Automation gate. |
messageStatus | String | new, update, cancellation, acknowledgement, error (from CAP messageType). |
isCancellation | Boolean | True when the message withdraws a prior alert. |
timing | Object | { status, minutesUntilOnset, minutesUntilExpiry, durationHours, expiringSoon }. |
priorityFactors | Object | Per-axis contribution to the score (severity, urgency, certainty). |
priorityReason | String[] | Plain-English reasons behind the score (dropped in standard/minimal profiles). |
whyItMatters | String | One-line plain-English context (event, severity/urgency, area, timing). |
summary | String | LLM-friendly one-line decision summary. |
changeFlag | String/null | Watchlist mode: NEW, UPDATED, ESCALATED, DOWNGRADED, CANCELLED, UNCHANGED. Null when off. |
previousPriority | Number/null | Priority on the prior run (watchlist mode). |
priorityDelta | Number/null | Change in priority since the last run (watchlist mode). |
runsSeen | Number/null | Runs this alert has appeared in (watchlist mode). |
Raw CAP fields (from the NWS alert):
| Field | Type | Description |
|---|---|---|
alertId | String | Unique NWS alert identifier in URN OID format. |
event | String | NWS event type name (e.g., Tornado Warning, Flood Watch). |
headline | String/null | Human-readable headline with event type, date/time, and issuing office. |
severity | String | Severity level: Extreme, Severe, Moderate, Minor, or Unknown. |
urgency | String | Urgency level: Immediate, Expected, Future, Past, or Unknown. |
certainty | String | Certainty level: Observed, Likely, Possible, Unlikely, or Unknown. |
category | String | CAP alert category (e.g., Met for meteorological, Geo for geophysical). |
status | String | Alert status: Actual, Exercise, System, Test, or Draft. |
messageType | String | Message type: Alert, Update, or Cancel. |
response | String | Recommended action: Shelter, Evacuate, Prepare, Monitor, AllClear, or None. |
areaDesc | String | Human-readable description of affected areas (counties, zones, cities). |
senderName | String | Name of the issuing NWS forecast office (e.g., NWS Norman OK). |
sender | String | Email address of the sending NWS office. |
sent | String | ISO 8601 timestamp when the alert was sent. |
effective | String | ISO 8601 timestamp when the alert becomes effective. |
onset | String/null | ISO 8601 timestamp of expected event onset. Null if not specified. |
expires | String | ISO 8601 timestamp when the alert expires. |
ends | String/null | ISO 8601 timestamp when the event is expected to end. Null if not specified. |
description | String | Full NWS hazard description with event details, source, and expected impact. |
instruction | String/null | Official safety instructions and recommended protective actions. Null if not provided. |
sameCodes | String | SAME (Specific Area Message Encoding) FIPS county codes for EAS broadcast targeting, pipe-separated. |
ugcCodes | String | UGC (Universal Geographic Code) NWS zone/county identifiers, pipe-separated. |
nwsHeadline | String/null | Condensed NWS headline extracted from nested alert parameters. Null if not present. |
extractedAt | String | ISO 8601 timestamp when this record was extracted by the actor. |
How it works
Input Config
|
v
Select Endpoint ──> activeOnly=true? ──yes──> /alerts/active
| ──no──> /alerts (+ date params)
v
Build Query Params (area, severity, urgency, certainty, event)
|
v
Fetch Page ──> User-Agent + Accept: application/geo+json
|
v
Parse GeoJSON Features ──> pagination.next exists? ──yes──> Follow cursor URL
| (cap: 20 pages) ──no──> Continue
v
Transform Each Feature ──> Flatten properties, extract geocodes + NWSheadline
|
v
Push to Apify Dataset + Log Summary (event types, severity counts, sources)
Dual-endpoint architecture
The NWS API exposes two separate alert endpoints. The actor selects between them based on the activeOnly flag:
/alerts/active(default) -- returns only currently live alerts. This endpoint is faster and returns smaller payloads because expired alerts are excluded server-side./alerts-- returns both active and historical alerts. This endpoint acceptsstartandenddate query parameters for time-range searches.
When activeOnly is true (or unset), the actor uses the active endpoint. Setting activeOnly to false switches to the full alerts endpoint with date filter support.
Date filter restriction
The startDate and endDate parameters are only appended to the request URL when activeOnly is explicitly false. This matches the NWS API design: the /alerts/active endpoint does not accept date parameters since all returned alerts are, by definition, currently active. Date values are formatted with time suffixes -- T00:00:00Z for start and T23:59:59Z for end -- to cover complete days in UTC.
Cursor-based pagination
Unlike page-number pagination, the NWS API uses cursor-based pagination. Each API response may include a pagination.next URL pointing to the next batch of results. The actor follows these URLs sequentially until one of three conditions is met: no next URL is present, the maxResults cap is reached, or a safety limit of 20 pages is hit. This approach is more reliable than offset-based pagination because it handles data that changes between requests.
NWS headline extraction
NWS alerts contain a nested parameters object with additional metadata. The NWSheadline field (accessed at parameters.NWSheadline[0]) provides a condensed, uppercase headline that is distinct from the main headline field. The actor extracts this into the nwsHeadline output field. This headline is typically shorter and more direct, making it useful for notification subject lines and dashboard displays.
SAME and UGC geocode extraction
Each alert includes a geocode object with two code systems. SAME codes (Specific Area Message Encoding) are six-digit FIPS county codes used by the Emergency Alert System for broadcast targeting on TV, radio, and wireless devices. UGC codes (Universal Geographic Code) are NWS-specific zone and county identifiers used in forecast operations. The actor extracts both arrays from the nested geocode object, defaulting to empty arrays when codes are absent.
User-Agent requirement
The NWS API requires a valid User-Agent header on all requests. Requests without this header are rejected with a 403 error. The actor sends apify-noaa-weather-alerts/1.0 ([email protected]) to comply with this requirement, along with an Accept: application/geo+json header to receive GeoJSON-formatted responses.
Decision layer
After each alert is fetched, the actor scores it deterministically — no LLM, no randomness — from the CAP fields the NWS already publishes:
alertPriority(0--100) = severity (50%) + urgency (30%) + certainty (20%), each from a fixed weight table, with the per-axis contribution exposed inpriorityFactors.priorityLevelbands it into critical / high / moderate / low / informational.recommendedActionmaps the CAPresponsefield (Shelter, Evacuate, Avoid, Prepare, Monitor, AllClear) to a stable routing enum;actionRequiredis true only for in-effect critical/high alerts that have not been cancelled.timingparses onset/effective and expires/ends against the current time into a status (active / upcoming / expired), minutes-until, and anexpiringSoonflag.
Alerts are streamed highest-priority first.
Run summary record
After processing all alerts, the actor emits one recordType: "summary" record (also pinned to the SUMMARY key-value record) containing:
headline-- a one-line read of the run (e.g. "2 critical alerts for TX — Tornado Warning highest priority").criticalCount/actionRequiredCountand breakdownsbyPriorityLevel,bySeverity,byEvent(top 15),byCategory.topAlert-- the highest-priority alert, andnextToExpire-- the active alert closest to expiry.
How much does it cost to run?
The NWS API is completely free with no usage fees. The only cost is Apify platform compute time. Since the actor makes lightweight HTTP requests with no browser rendering, runs are very fast and inexpensive.
| Scenario | Estimated alerts | Estimated time | Estimated cost |
|---|---|---|---|
| Active alerts for one state | 5--100 | ~5 seconds | ~$0.001 |
| Active alerts nationwide | 200--2,000 | ~15 seconds | ~$0.005 |
| Historical search with date range | 500--5,000 | ~30 seconds | ~$0.01 |
Costs are based on Apify platform usage at standard rates with 256 MB memory. Actual costs depend on alert volume and pagination depth. Scheduled monitoring (e.g., every 15 minutes, 24/7) costs approximately $0.10/day.
Limitations and responsible use
- US-only coverage -- the NWS API covers the 50 US states, DC, and US territories (PR, GU, VI, AS, MP). International weather alerts are not available.
- Historical depth is limited -- the NWS API retains historical alerts for a limited window (typically days to weeks). It is not a long-term archive.
- Event type exact match -- the
eventTypefilter requires the exact NWS event name string. Typos, partial names, or case variations return no results. - Pagination safety limit -- the actor follows up to 20 pages of cursor-based pagination. Extremely broad queries exceeding this are truncated.
- No geometry data -- the actor extracts alert properties but does not include GeoJSON polygon coordinates. Use the NWS API directly if you need geographic boundaries.
- Update handling -- an updated alert (
messageType: Update) carriesmessageStatus: "update"; in watchlist mode it is flaggedchangeFlag: "UPDATED". Within a single run the actor does not merge an update onto its original — both records appear. - Not a substitute for official warnings -- this is a data and decision-support tool for monitoring and research. The
recommendedActionis operational routing derived from the NWSresponsefield, not life-safety advice. For life-safety decisions, always rely on official NWS alerts at weather.gov. - API availability -- the NWS API may experience degraded performance during severe weather events when demand is highest. The actor retries transient failures with backoff and, if the API stays unavailable, emits a typed
errorrecord and finishes successfully rather than crashing the run. - Date precision --
startDateandendDateare converted to full ISO 8601 timestamps (T00:00:00ZandT23:59:59Z). Sub-day time precision is not supported through the actor input.
NWS alert severity levels
| Level | Description |
|---|---|
| Extreme | Extraordinary threat to life or property |
| Severe | Significant threat to life or property |
| Moderate | Possible threat to life or property |
| Minor | Minimal or no known threat to life or property |
| Unknown | Severity is unknown at the time of issuance |
NWS alert urgency levels
| Level | Description |
|---|---|
| Immediate | Responsive action should be taken immediately |
| Expected | Responsive action should be taken within the next hour |
| Future | Responsive action should be taken in the near future |
| Past | Responsive action is no longer required |
| Unknown | Urgency is not determined or not applicable |
NWS alert certainty levels
| Level | Description |
|---|---|
| Observed | Event has been observed or confirmed (e.g., tornado sighted) |
| Likely | Probability greater than 50% the event will occur |
| Possible | Probability between 25% and 50% the event will occur |
| Unlikely | Probability less than 25% the event will occur |
| Unknown | Certainty is not determined or not applicable |
API integration examples
Use the Apify API to run the actor programmatically and retrieve results in your applications, pipelines, or automated workflows.
Python:
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("ryanclinton/noaa-weather-alerts").call(run_input={
"activeOnly": True,
"area": "TX",
"severity": "Severe",
"maxResults": 50,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item['event']}: {item['headline']}")
print(f" Severity: {item['severity']} | Urgency: {item['urgency']}")
print(f" Areas: {item['areaDesc']}")
print()
JavaScript:
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_API_TOKEN" });
const run = await client.actor("ryanclinton/noaa-weather-alerts").call({
activeOnly: true,
area: "FL",
severity: "Extreme",
urgency: "Immediate",
maxResults: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const alert of items) {
console.log(`${alert.event}: ${alert.headline}`);
console.log(` Instruction: ${alert.instruction}`);
}
cURL:
# Start the actor run
curl -X POST "https://api.apify.com/v2/acts/ryanclinton~noaa-weather-alerts/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"activeOnly": false,
"area": "CA",
"eventType": "Flood Warning",
"startDate": "2025-01-01",
"endDate": "2025-01-31",
"maxResults": 200
}'
# Retrieve results (replace DATASET_ID from the run response)
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_API_TOKEN&format=json"
FAQ
What types of weather alerts does this actor return? Every alert type issued by the National Weather Service, including Tornado Warnings, Severe Thunderstorm Warnings, Flash Flood Warnings, Flood Watches, Winter Storm Warnings, Blizzard Warnings, Ice Storm Warnings, Hurricane Warnings, Tropical Storm Warnings, Heat Advisories, Excessive Heat Warnings, High Wind Warnings, Wind Advisories, Fire Weather Watches, Red Flag Warnings, Dense Fog Advisories, Freeze Warnings, Frost Advisories, Tsunami Warnings, and dozens more. Any alert published through the NOAA Weather API is captured.
What US states and territories are supported? All 50 US states, Washington DC, and US territories including Puerto Rico (PR), Guam (GU), US Virgin Islands (VI), American Samoa (AS), and Northern Mariana Islands (MP). Use standard two-letter postal codes.
Can I search for multiple states at once?
The NWS API area parameter accepts a single state code per request. To monitor multiple states, leave the area field empty to search all US alerts nationwide, or run the actor separately for each state.
Why do my date filters have no effect?
Date filters (startDate and endDate) only work in historical mode. Make sure activeOnly is set to false. When activeOnly is true (the default), the actor uses the /alerts/active endpoint which does not accept date parameters.
How often are NWS alerts updated? The NWS updates alerts in near real-time. New alerts are typically available within seconds of issuance. For continuous monitoring, schedule the actor to run every 15--30 minutes.
What are SAME codes and UGC codes? SAME codes are six-digit FIPS county identifiers used by the Emergency Alert System (EAS) for broadcast targeting on TV, radio, and wireless devices. UGC codes are NWS-specific zone and county codes used in forecast products. Both are useful for programmatic geographic matching and integration with emergency notification systems.
How do I set up continuous weather monitoring? On the Apify platform, create a scheduled task that runs this actor at your desired interval (e.g., every 15 minutes). Configure a webhook or integration (Slack, email, Zapier, Google Sheets) to receive or store the output dataset after each run. This provides automated, continuous weather alert monitoring without any server infrastructure.
Use in Dify
Drop this actor into Dify workflows via the Apify plugin's Run Actor node. Each alert returns scored, classified, and recommended as structured JSON — critical / high / moderate / low plus the recommendedAction and actionRequired your downstream node branches on. A generic weather-alert scraper pointed at the same NWS feed returns raw CAP JSON; this returns decisions.
- Actor ID:
ryanclinton/noaa-weather-alerts - Sample input (monitor a state for high-priority alerts, only surface what changed):
{
"activeOnly": true,
"area": "FL",
"minPriority": 60,
"watchlistName": "florida-ops",
"outputProfile": "minimal"
}
A Dify if/else node routes cleanly on the stable enums — no prose parsing:
recommendedAction == "take-shelter"or"evacuate"→ page the on-call / fire the emergency SMS branchactionRequired == true→ escalate to a human;false→ log onlypriorityLevel == "critical"→ high-urgency channel;"moderate"/"low"→ digest channelchangeFlag == "NEW"or"ESCALATED"(watchlist mode) → alert;"UNCHANGED"→ suppress, so a scheduled run only fires when something actually changed
Opt-in modes Dify workflows can lean on: set watchlistName to turn each scheduled run into a change feed (new / escalated / resolved alerts), and minPriority to keep only alerts worth acting on. The recommendedAction enum and the run-level summary record's headline are usable verbatim in a notification — no LLM rewriting needed.
Related actors
| Actor | Description | Link |
|---|---|---|
| FEMA Disaster Declaration Search | Search FEMA disaster declarations by state, type, and date range | ryanclinton/fema-disaster-search |
| GDACS Disaster Alerts | Monitor global disaster alerts from earthquakes, floods, cyclones, and volcanoes | ryanclinton/gdacs-disaster-alerts |
| UK Environment Agency Flood Warnings | Search active flood warnings and alerts across England | ryanclinton/uk-flood-warnings |
| Weather Forecast Search | Get detailed weather forecasts for any global location | ryanclinton/weather-forecast-search |
| USGS Earthquake Search | Search recent and historical earthquake data from USGS | ryanclinton/usgs-earthquake-search |
| Website Change Monitor | Monitor any weather-related web page for content changes | ryanclinton/website-change-monitor |
Related actors
Lead Quality & Outreach Readiness Auditor — Decide & Benchmark
Audit lead lists before outreach. Every lead gets a quality score, trust score, and a use/verify/repair/enrich/reject decision, then rolls up to account health, pipeline risk, and a vendor benchmark of which source delivers usable leads. Works with Clay, Apollo, ZoomInfo, CSV.
Intent Signal Tracker — Jobs, Tech & Funding
Track buying signals across job postings, tech stack changes, funding, and content updates. Composite intent score per company. $0.05/company — replaces Clay's $495/mo Web Intent.
Lead Enrichment Pipeline — 5-47x Cheaper Than Clay
All-in-one lead enrichment: email discovery, phone finding, verification, company research, and lead scoring in one run. CSV or JSON in, scored leads out. $0.12/lead — 5-47x cheaper than Clay.
Phone Number Finder — Direct Dials from Websites
Find mobile, direct-dial, and company phone numbers for any prospect list. Two-step waterfall: 3B-record database first, then company website scraping as fallback. Pay $0.10 only when a number is found — no subscription, no per-seat fee.
Ready to try NOAA Weather Alert Monitor?
Run it on your own Apify account. Apify offers a free tier with $5 of monthly credits.
Open on Apify Store