Weather.gov Active Alerts Scraper avatar

Weather.gov Active Alerts Scraper

Pricing

from $0.48 / 1,000 alert extracteds

Go to Apify Store
Weather.gov Active Alerts Scraper

Weather.gov Active Alerts Scraper

Export official Weather.gov active alerts by US area, point, zone, severity, event, and validity window with instructions, geometry, and source links.

Pricing

from $0.48 / 1,000 alert extracteds

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Collect weather.gov active alerts as clean, typed records for operational monitoring, analysis, spreadsheets, databases, and alerting workflows.

The Actor reads the official National Weather Service (NWS) API. It exports each unique active warning, watch, advisory, or statement with its identity, event classification, validity window, affected area, safety instruction, geometry when available, and official source URL.

No login, browser, cookies, or proxy is required.

What can you do with this Weather.gov active alerts scraper?

  • Take a current nationwide snapshot of official US weather alerts.
  • Monitor one or more states or territories on a schedule.
  • Check warnings affecting latitude/longitude points.
  • Collect alerts for NWS forecast or county zones.
  • Export a known alert from its official API URL.
  • Filter records by severity, urgency, certainty, or exact event name.
  • Compare stable alert IDs and message types between scheduled runs.
  • Send matching rows to a webhook, spreadsheet, database, or BI tool.

The Actor exports current records. It does not maintain historical state or decide which alerts are new; use the stable alertId, sent, and messageType fields in your downstream automation for change detection.

Who is this Actor for?

Operations teams can monitor warnings affecting facilities, routes, events, or field staff.

Risk and safety teams can feed official classifications and instructions into internal response workflows.

Data analysts can export a consistent snapshot without manually interpreting GeoJSON.

Developers can call one Actor interface for nationwide, area, point, zone, and exact-alert workflows.

Journalists and researchers can collect current public records with timestamps and provenance.

Why use this Actor?

Weather.gov already provides an excellent public API. This Actor adds workflow-oriented input, validation, deduplication, normalized fields, dataset exports, Apify scheduling, webhooks, integrations, and pay-per-result billing.

It also:

  • rejects malformed area, point, zone, and URL inputs;
  • excludes CAP test messages by default;
  • retries transient network, rate-limit, and server failures;
  • applies the same classification filters to every input route;
  • charges only for unique matching alerts saved to the dataset;
  • stops as soon as maxItems is reached.

What data does it extract?

FieldMeaning
alertIdStable NWS alert identity
sourceUrlOfficial Weather.gov API URL
eventEvent type, such as Flood Warning
headlinePublic alert headline
severityExtreme, Severe, Moderate, Minor, or Unknown
urgencyImmediate, Expected, Future, Past, or Unknown
certaintyObserved, Likely, Possible, Unlikely, or Unknown
statusCAP status; actual operational messages normally use Actual
messageTypeAlert, Update, Cancel, or another CAP message type
sent, effectiveMessage publication and effective times
onset, expires, endsHazard and message validity times when supplied
areaDescriptionHuman-readable affected places
geocodeSAME, UGC, or other source geocodes
affectedZonesWeather.gov zone URLs
descriptionDetailed hazard narrative
instructionOfficial safety or response instructions
geometryGeoJSON geometry when NWS supplies it
sender, senderNameIssuing authority identity
parameters, referencesAdditional source metadata and referenced messages
webUrl, languageSource web page and language
fetchedAtTimestamp recorded by the Actor

Weather.gov may return null for optional fields, especially geometry, instruction, onset, ends, and note.

How to get started

  1. Open the Actor input page.
  2. Keep the California prefill, enter other two-letter area codes, or clear it for nationwide coverage.
  3. Optionally add points, zones, or exact alert API URLs.
  4. Add classification filters only if your workflow needs them.
  5. Choose a sensible maxItems limit.
  6. Click Start.
  7. Open the Dataset tab to preview, download, or integrate the records.
  8. For recurring monitoring, create an Apify schedule and connect a webhook or integration.

Input parameters

InputTypeDefaultDescription
areasstring arrayemptyTwo-letter US state or territory codes. Empty location inputs mean nationwide.
pointsstring arrayemptyCoordinates in latitude,longitude format.
zonesstring arrayemptyNWS zone identifiers such as CAZ041.
alertUrlsstring arrayemptyExact https://api.weather.gov/alerts/... URLs.
severitiesstring arrayemptyAllowed NWS severity values.
urgenciesstring arrayemptyAllowed NWS urgency values.
certaintiesstring arrayemptyAllowed NWS certainty values.
eventTypesstring arrayemptyExact event names matched case-insensitively.
includeTestAlertsbooleanfalseInclude CAP records whose status is Test.
maxItemsinteger100Save at most 1–10,000 unique matching alerts.

All location routes are combined. For example, two areas and one point create three official API requests, then duplicate alert IDs are removed.

Example inputs

Nationwide warning snapshot

{
"areas": [],
"maxItems": 25
}

California alerts

{
"areas": ["CA"],
"maxItems": 25
}

Multi-state operations feed

{
"areas": ["CA", "TX", "FL", "NY"],
"maxItems": 100
}

Alerts affecting a point

{
"points": ["32.7157,-117.1611"],
"severities": ["Extreme", "Severe", "Moderate"],
"maxItems": 20
}

One NWS zone and event type

{
"zones": ["CAZ041"],
"eventTypes": ["Wind Advisory"],
"maxItems": 20
}

Output example

This shortened record reflects the Actor's current Weather.gov normalization. Active records change continuously.

{
"alertId": "urn:oid:2.49.0.1.840.0.sample-alert",
"sourceUrl": "https://api.weather.gov/alerts/urn:oid:2.49.0.1.840.0.sample-alert",
"event": "Beach Hazards Statement",
"headline": "Beach Hazards Statement issued for the northern California coast",
"severity": "Moderate",
"urgency": "Expected",
"certainty": "Likely",
"status": "Actual",
"messageType": "Alert",
"effective": "2026-09-03T15:22:00-07:00",
"expires": "2026-09-03T23:30:00-07:00",
"ends": "2026-09-07T23:00:00-07:00",
"areaDescription": "Southwestern Humboldt; Coastal Mendocino",
"affectedZones": [
"https://api.weather.gov/zones/forecast/CAZ104"
],
"senderName": "NWS Eureka CA",
"instruction": "Avoid rocks and jetties and stay farther back from the water.",
"geometry": null,
"language": "en-US",
"fetchedAt": "2026-09-04T17:05:00.000Z"
}

The complete dataset also retains geocodes, parameters, references, description, sender, response, category, note, and web URL.

How much does it cost to collect Weather.gov active alerts?

The Actor uses pay-per-event pricing:

  • one small Run started charge per run;
  • one Alert extracted charge for each unique matching row saved;
  • no alert charge for duplicates, filtered-out records, test messages excluded by default, or empty results.

At the BRONZE tier, the current price is $0.000045 per start and $0.0008 per saved alert. Approximate Actor charges are therefore:

Saved alertsBRONZE calculation
1$0.000045 start + 1 × $0.0008
10$0.000045 start + 10 × $0.0008
25$0.000045 start + 25 × $0.0008
100$0.000045 start + 100 × $0.0008

Apify plan tiers apply progressively lower event prices. Platform usage can also appear according to your Apify plan. Check the pricing panel for the tier active on your account.

Scheduling an operational monitor

A useful monitoring workflow is:

  1. Save an input covering your facilities or service regions.
  2. Schedule the Actor at an interval suitable for your operation.
  3. Export rows through a dataset webhook or integration.
  4. Key your downstream store by alertId.
  5. Compare sent, messageType, effective, and expires to identify updates.
  6. Remove or archive IDs absent from later current snapshots according to your own policy.

The Actor itself is stateless. This avoids mixing old alerts into a current run's dataset and lets each team choose its own retention and notification rules.

Spreadsheet, database, and webhook integrations

From the Dataset tab, download JSON, CSV, Excel, XML, or RSS-compatible output supported by Apify.

Use an Apify integration to send completed datasets to Google Sheets or another supported service.

Use run webhooks when another system should process records immediately after a successful run.

For databases, use alertId as the source key and retain fetchedAt as collection provenance.

Run from the Apify API with cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~us-active-weather-alerts-tracker/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"areas":["CA","OR","WA"],"maxItems":100}'

Fetch dataset items after the run succeeds using the defaultDatasetId returned by the API.

Run from JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/us-active-weather-alerts-tracker').call({
areas: ['CA', 'OR', 'WA'],
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Run from Python

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/us-active-weather-alerts-tracker').call(
run_input={'areas': ['CA', 'OR', 'WA'], 'maxItems': 100}
)
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

Use with MCP and AI assistants

Add the Actor to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/us-active-weather-alerts-tracker"

Claude Desktop, Cursor, and VS Code setup

Claude Desktop, Cursor, and VS Code can use the equivalent HTTP MCP configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/us-active-weather-alerts-tracker"
}
}
}

Example prompts:

  • “Run the Weather.gov active alerts Actor for CA and OR, then summarize Severe alerts by expiry time.”
  • “Collect current alerts for these NWS zones and return the official instructions and source URLs.”
  • “Export a nationwide snapshot capped at 100 rows for my monitoring workflow.”

Reliability and retry behavior

Each Weather.gov request has a 30-second timeout.

The Actor retries network errors, HTTP 429 responses, and temporary server errors up to three times with backoff and jitter.

It does not blindly retry stable client errors. Invalid inputs, unexpected response content, or exhausted retries fail the run so a broken upstream response is not mistaken for a quiet weather window.

No proxy fallback is enabled. A failed request is visible in the run status and logs.

Limits and important behavior

  • This is a current-alert export, not a historical archive.
  • Weather.gov decides which messages are active and which fields are populated.
  • Nationwide volume varies with weather conditions.
  • One alert can affect multiple states, points, or zones and is emitted once per run.
  • maxItems applies after filters and deduplication.
  • Exact event filters require the NWS event name, but matching is case-insensitive.
  • Geometry is often absent; use affectedZones, geocode, and areaDescription as additional geographic references.
  • Alert timestamps can use local offsets rather than UTC.
  • Empty output is valid when no current alerts match the selected scope and filters.

Legality and responsible use

The Actor processes public information from the US National Weather Service API.

Follow Weather.gov's terms and guidance and avoid excessive schedules or unnecessarily broad repeated runs.

Do not use this dataset as the sole source for emergency decisions. Read the complete official alert, follow instructions from local authorities, and use official emergency channels for life-safety decisions.

Do not remove provenance when redistributing records. Keep sourceUrl, sender fields, and timestamps with downstream data.

Troubleshooting

Why did the run return zero rows?

The selected areas, points, zones, event types, or classifications may have no active matching alert. Try removing optional filters or run a nationwide input to verify current source activity.

Why is geometry null?

NWS does not provide polygon geometry for every alert. Check affectedZones, geocode, and areaDescription instead.

Why did my area code fail?

Use a supported two-letter US state or territory code, such as CA, TX, PR, or GU.

Why did my point fail?

Use decimal latitude and longitude separated by a comma, for example 32.7157,-117.1611. Latitude must be between -90 and 90 and longitude between -180 and 180.

Why did my alert URL fail?

Only HTTPS API resources beginning with https://api.weather.gov/alerts/ are accepted. Public weather.gov web pages are not API alert inputs.

Why is the run marked failed instead of returning an empty dataset?

A source, response-shape, or input error should not look like “no active weather.” Inspect the log for the exact URL, status, or validation message.

This Actor is currently a focused standalone Automation Lab product. No other Automation Lab Actor provides the same official US active-weather-alert row workflow, so this section intentionally avoids unrelated cross-links.

FAQ

Does it scrape forecast temperatures or radar?

No. It exports active alert records only.

Does it send notifications by itself?

No. Use Apify schedules, webhooks, integrations, or your own downstream comparison process.

Can I collect several states in one run?

Yes. Add multiple areas; duplicate alert IDs are saved once.

Can I include NWS test messages?

Yes. Set includeTestAlerts to true. Operational exports exclude them by default.

Does it require an Apify Proxy?

No. The Actor calls the public official API directly.

Are instructions guaranteed?

No. Optional CAP fields can be null. Always handle nullable output fields.

Can I request more than 100 records?

Yes. Raise maxItems up to 10,000, but use only the volume your workflow needs.

Is each API request charged separately?

No. Billing is based on one start event and unique matching alert rows saved, not the number of source requests.