US Weather Forecast & Alerts Scraper - NWS API, $1/1K avatar

US Weather Forecast & Alerts Scraper - NWS API, $1/1K

Pricing

from $0.62 / 1,000 weather records

Go to Apify Store
US Weather Forecast & Alerts Scraper - NWS API, $1/1K

US Weather Forecast & Alerts Scraper - NWS API, $1/1K

Official National Weather Service 7-day and hourly forecasts, current conditions and active alerts for any US address, ZIP, city or lat/lon. Temps in F and C, severity filters, new-alert monitoring. $1 per 1,000 records.

Pricing

from $0.62 / 1,000 weather records

Rating

0.0

(0)

Developer

Plot Point Technologies

Plot Point Technologies

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

US Weather Forecast & Alerts Scraper (National Weather Service API)

Get the official National Weather Service 7-day forecast, hourly forecast, current conditions and active weather alerts for any US address, ZIP code, city, coordinates or NWS zone, as clean JSON or spreadsheet rows. Temperatures come in both °F and °C, wind is parsed into numbers, and alerts include the headline, full description, safety instructions, effective and expiry times and affected areas. A monitoring mode remembers alert IDs between scheduled runs so you only get new alerts. $1 per 1,000 records.

What does this US weather scraper do?

  • Reads the official NWS API (api.weather.gov), the same data behind weather.gov. US government data, public domain, no API key.
  • Accepts locations in any common form: latitude,longitude, a 5-digit ZIP code, City, ST, a full US street address, or an NWS zone ID (NYZ072, TXC453). Addresses are geocoded with the free US Census Geocoder; ZIP codes and cities with Census TIGERweb.
  • Collects five data types (pick any):
    • 7-day forecast: 14 day/night periods with temperature, precipitation chance, wind and the full written forecast.
    • Hourly forecast: up to about 156 hours with temperature, dewpoint, humidity, precipitation chance and wind.
    • Current conditions from the nearest reporting station: temperature, dewpoint, humidity, wind and gusts, pressure, visibility, wind chill / heat index, precipitation in the last hour and the raw METAR. If the nearest station has no recent report, the next nearest is used.
    • Active alerts (warnings, watches, advisories) for each location's point or zone, or for whole states, with severity, urgency, certainty and event-type filters.
    • Raw gridpoint data (advanced): the NWS numeric forecast grids, such as hourly temperature, wind gust, rainfall and snowfall amounts.
  • Monitors alerts: with Only new alerts turned on and a schedule, each run outputs only alerts it has not reported before.
  • Respects NWS guidance: identifies itself with a contact User-Agent, reuses point and forecast lookups within a run, limits concurrent requests and backs off on rate-limit or server errors.

Who uses it?

  • Logistics and fleet teams checking wind, snow and storm warnings along delivery routes and at depots.
  • Event organizers and venues watching rain chances and heat for outdoor dates.
  • Insurance and claims teams logging which alerts were active at insured addresses and when.
  • Construction and field-service companies planning concrete pours, roofing, crane work and technician schedules around wind, rain and temperature.
  • Operations and safety teams feeding new severe-weather alerts into Slack, email, ticketing or SMS.
  • Developers and AI agents that need a clean, consistent US weather feed without handling the NWS points-to-gridpoint lookups themselves.

How to use it

  1. Click Try for free (or Start).
  2. Enter your Locations, one per line, for example Denver, CO, 78701, 40.7128,-74.0060 or 1600 Pennsylvania Ave NW, Washington, DC 20500.
  3. Choose the Data to collect: forecast, hourly forecast, current conditions, alerts and/or gridpoint data.
  4. Optional: add Alerts for whole states (e.g. TX, FL) and alert filters (severity, urgency, certainty, event words such as Tornado or Flood).
  5. For alert monitoring, turn on Only new alerts and add a schedule (for example every 15 minutes) in Apify Console.
  6. Run it and download the results as JSON, CSV or Excel, or connect them to your other tools.

Input example

{
"locations": ["New York, NY", "Denver, CO", "78701", "40.7128,-74.0060"],
"dataTypes": ["forecast", "hourly", "observations", "alerts"],
"alertStates": ["TX"],
"hourlyHours": 24,
"forecastOutput": "perLocation",
"alertSeverity": ["Extreme", "Severe"],
"onlyNewAlerts": false,
"maxResults": 1000
}
FieldWhat it does
locationsLat/lon, ZIP, City, ST, street address or NWS zone ID, one per line.
dataTypesforecast, hourly, observations, alerts, gridpoint. Default: forecast + alerts.
alertStatesTwo-letter state (or marine area) codes for all active alerts in that state.
hourlyHoursHours of hourly forecast to keep (1 to 156, default 48).
forecastOutputperLocation (one record with a list of periods, cheapest) or perPeriod (one flat row per period).
alertSeverity, alertUrgency, alertCertaintyKeep only alerts with these CAP values. Empty means all.
alertEventsKeep only alerts whose event name contains one of these words, e.g. Tornado Warning, Flood, Heat.
onlyNewAlertsMonitoring mode: output only alerts not seen in earlier runs.
alertStoreNameName of the key-value store that remembers seen alert IDs (one name per monitor).
includeTestAlertsAlso return test and exercise alerts (off by default).
gridpointLayersLayers for raw gridpoint data, or all.
maxResultsStop after this many records.

Output example

This is a real record from the default run (forecast for Denver, CO; periods shortened to two of 14):

{
"input": "Denver, CO",
"locationType": "city",
"matchedName": "Denver city, CO",
"latitude": 39.7618502,
"longitude": -104.8811054,
"nwsCity": "Denver",
"nwsState": "CO",
"gridId": "BOU",
"gridX": 67,
"gridY": 62,
"forecastOffice": "BOU",
"forecastZone": "COZ040",
"countyZone": "COC031",
"fireWeatherZone": "COZ240",
"timeZone": "America/Denver",
"radarStation": "KFTG",
"dataType": "forecast",
"forecastGeneratedAt": "2026-11-01T19:12:04+00:00",
"forecastUpdatedAt": "2026-11-01T18:47:11+00:00",
"elevationM": 1615.1,
"currentPeriodName": "This Afternoon",
"currentTemperatureF": 63,
"currentTemperatureC": 17.2,
"currentShortForecast": "Chance Light Rain",
"currentPrecipitationProbability": 35,
"currentWind": "S 7 to 10 mph",
"maxPrecipitationProbability": 65,
"highsF": [63, 54, 58, 56, 56, 57, 55],
"lowsF": [46, 42, 37, 38, 36, 37, 36],
"periodCount": 14,
"periods": [
{
"number": 1,
"name": "This Afternoon",
"startTime": "2026-11-01T12:00:00-07:00",
"endTime": "2026-11-01T18:00:00-07:00",
"isDaytime": true,
"temperatureF": 63,
"temperatureC": 17.2,
"temperatureTrend": null,
"precipitationProbability": 35,
"windSpeed": "7 to 10 mph",
"windSpeedMphMin": 7,
"windSpeedMphMax": 10,
"windSpeedKmhMax": 16.1,
"windDirection": "S",
"shortForecast": "Chance Light Rain",
"detailedForecast": "A chance of rain after 4pm. Mostly cloudy. High near 63, with temperatures falling to around 58 in the afternoon. South wind 7 to 10 mph, with gusts as high as 16 mph. Chance of precipitation is 40%.",
"icon": "https://api.weather.gov/icons/land/day/rain,40?size=medium"
},
{
"number": 2,
"name": "Tonight",
"startTime": "2026-11-01T18:00:00-07:00",
"endTime": "2026-11-02T06:00:00-07:00",
"isDaytime": false,
"temperatureF": 46,
"temperatureC": 7.8,
"precipitationProbability": 35,
"windSpeed": "6 mph",
"windDirection": "SSW",
"shortForecast": "Chance Light Rain",
"detailedForecast": "A chance of rain. Mostly cloudy, with a low around 46. South southwest wind around 6 mph. Chance of precipitation is 40%. New rainfall amounts less than a tenth of an inch possible."
}
],
"fetchedAt": "2026-11-01T19:12:04Z"
}

An alert record (from a test run, description shortened) looks like this:

{
"input": "AKZ318",
"locationType": "zone",
"matchedName": "Municipality of Skagway, AK",
"alertScope": "zone:AKZ318",
"dataType": "alert",
"alertId": "urn:oid:2.49.0.1.840.0.8d2524301db1fde3dde29af7d5519d584990a2c7.001.1",
"event": "Winter Storm Warning",
"headline": "Winter Storm Warning issued November 1 at 8:52AM AKST until November 1 at 3:00PM AKST by NWS Juneau AK",
"severity": "Severe",
"urgency": "Expected",
"certainty": "Likely",
"messageType": "Update",
"effective": "2026-11-01T08:52:00-09:00",
"expires": "2026-11-01T15:00:00-09:00",
"areaDesc": "Municipality of Skagway",
"areas": ["Municipality of Skagway"],
"affectedZones": ["AKZ318"],
"description": "* WHAT...Heavy snow expected. Total snow accumulations of 9 to 14 inches possible. ...",
"instruction": "If you must travel, keep an extra flashlight, food, and water in your vehicle in case of an emergency. ...",
"senderName": "NWS Juneau AK",
"eventCode": "WSW",
"alertUrl": "https://api.weather.gov/alerts/urn:oid:2.49.0.1.840.0.8d2524301db1fde3dde29af7d5519d584990a2c7.001.1"
}

Every record also carries the location fields (input, matchedName, latitude, longitude, nwsCity, nwsState, grid and zone IDs, timeZone). Current-conditions records add stationId, stationName, stationDistanceKm, observedAt, textDescription, temperatureF/C, dewpointF/C, relativeHumidity, windSpeedMph/Kmh, windGustMph/Kmh, windDirection, pressureHpa, pressureInHg, visibilityMiles/Km, windChillF, heatIndexF, precipitationLastHourIn/Mm and rawMetar.

How much does it cost?

You pay $1 per 1,000 records (plus a negligible start fee), with volume discounts on higher Apify plans. One record is one location's forecast, one hourly forecast, one current-conditions report, one gridpoint data set, or one alert.

  • Forecast + alerts for 50 stores, with 10 active alerts in total: about 60 records = $0.06.
  • Daily forecast, hourly and current conditions for 200 job sites for a month: 200 x 3 x 30 = 18,000 records = $18.
  • Monitoring every 15 minutes for new severe alerts in two states, about 30 new alerts a day: about 900 records a month = $0.90. Runs with no new alerts cost only the start fee.

The per-period layout charges every forecast period as its own record; keep the default per-location layout for the lowest cost.

Use it via API, Make, Zapier, n8n or an AI agent

Run it from the Apify API or client libraries (JavaScript, Python) and read the results from the run's dataset. It works with the Apify integrations for Make, Zapier, n8n, Google Sheets, Slack and webhooks, so a scheduled monitor can post each new alert to a channel. AI agents can call it through the Apify MCP server.

FAQ

Is this legal to use? Yes. The NWS API is an official, free, public US government service intended for automated use, and NWS data is in the public domain. The tool identifies itself with a contact User-Agent as NWS asks. You are responsible for how you use the data; NWS forecasts and alerts are not a replacement for official emergency instructions.

Does it cover locations outside the US? No. NWS covers the United States and its territories (and nearby coastal waters). Points outside its area are logged and skipped, not charged.

How fresh is the data? Every run queries the live API. forecastUpdatedAt shows when NWS last updated the forecast; observedAt shows when the station reported. Forecasts usually update every hour or few hours, observations roughly hourly.

How does "Only new alerts" work? Seen alert IDs are stored in a named key-value store in your Apify account and expire a few days after the alert ends. When NWS updates an alert (for example extends it), the update has a new ID and is reported again; messageType tells you whether it is an Alert, Update or Cancel.

Why are there no alert records? There may simply be no active alerts for that place, or your filters removed them. The log shows how many alerts were active for each location before filters.

How accurate is the geocoding? Street addresses use the Census address-range geocoder; ZIP codes use the centre of the Census ZIP Code Tabulation Area; cities use the Census place's internal point. matchedName shows what was matched. For exact sites, give coordinates.

Plot Point Technologies is not affiliated with the National Weather Service, NOAA or the US Census Bureau.


If this tool saved you time, we would be grateful for a short review on this page; it helps other people find it. If something did not work as expected, please open an issue on the Issues tab and we will look into it quickly.