Weather Forecast & Alerts Export (NWS + MET Norway) avatar

Weather Forecast & Alerts Export (NWS + MET Norway)

Pricing

from $1.40 / 1,000 location forecasts

Go to Apify Store
Weather Forecast & Alerts Export (NWS + MET Norway)

Weather Forecast & Alerts Export (NWS + MET Norway)

Hourly or daily weather forecasts for up to 10 coordinates from the US National Weather Service and MET Norway, plus active NWS weather alerts for US points. UTC and local times, units, provider and update time on every row.

Pricing

from $1.40 / 1,000 location forecasts

Rating

0.0

(0)

Developer

Cliqto Media

Cliqto Media

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Security

Limited permissions

Share

Get hourly or daily weather forecasts for up to 10 coordinates in one table: US points come from the US National Weather Service (NWS), all other points from MET Norway, and active NWS weather alerts for US points come as separate rows. No API key or login. A typical run with 3 locations finishes in about 5 seconds and costs $0.008.

Use it when you need forecasts for several places (offices, warehouses, event venues, travel stops) in one Dataset, with the provider, model, units, UTC and local time and the source update time on every row.

Weather Forecast & Alerts Export: your locations in, hourly or daily forecast rows from NWS or MET Norway with the provider on every row, plus active US weather alerts as separate rows

Table of contents

What it does

You give a list of locations (name, latitude, longitude). For each location the Actor:

  1. chooses one provider: NWS (api.weather.gov) for the United States and its territories, MET Norway Locationforecast 2.0 (api.met.no) for the rest of the world;
  2. returns hourly rows (1–48 hours) or daily rows (1–7 days) in metric or imperial units;
  3. for US points, returns each active NWS alert (for example a Flood Warning) as a separate row.

One location always uses one provider. The Actor never mixes two models in one location and never fills gaps from another source. All values are forecasts, not observations.

Good fit

  • A dashboard or report that needs the next 24–48 hours for several sites.
  • A travel or event plan: daily min/max temperature, rain and wind for 7 days.
  • A US operations check: “is there an active NWS warning at this site right now?”
  • An AI agent that needs a small, typed forecast table for a few coordinates.

Not a fit / limits

  • No current conditions, observations or historical weather.
  • Not more than 10 locations per run and 48 hours / 7 days ahead.
  • Alerts only for US points (NWS). For other points alertsStatus is not_available.
  • This is not an emergency warning service. Always follow official local warnings.

Quick start

  1. Open the Input tab. The form already has New York, London and Tokyo.
  2. Keep Hourly, 24 hours and Include NWS alerts.
  3. Click Start.
  4. Open the Forecast table view of the Dataset. You get 72 forecast rows: 24 hours × 3 locations (plus alert rows if New York has active alerts). New York rows say provider: "nws", London and Tokyo rows say provider: "met-norway".

Expected result: one row per location and hour, plus one row per active NWS alert for New York (often none).

Use cases

Buyer jobInput pathOutput entityKey fieldsNext integration
Next-day weather for several officeslocations, granularity: hourly, hours: 24hourly forecast rowforecastTimeLocal, temperature, precipitationAmount, windSpeedGoogle Sheets, BI dashboard
7-day plan for travel stopsgranularity: daily, days: 7daily forecast rowdate, temperatureMin, temperatureMax, summarytravel itinerary, email
Warning check for US sitesUS locations, includeAlerts: truealert rowevent, severity, urgency, expires, areaDescSlack or email via webhook
Forecast table for an AI agent1–3 locationsforecast rowprovider, model, units, forecastTimeUtcMCP tool call

Input

Input fields

FieldPlain nameTypeRequiredDefault / prefillAllowed valuesEffectExampleRecommendation
locationsLocationsarrayyesprefill: New York, London, Tokyo1–10 items; { "name", "lat", "lon" } or "lat,lon"; lat −90…90, lon −180…180which points get a forecast[{"name":"Denver","lat":39.7392,"lon":-104.9903}]Give each point a name: it is copied to every row
providerProviderstringnoautoauto, nws, metauto = NWS in the US, MET Norway elsewhere"met"Keep auto. nws outside the US gives not_supported, not a forecast
granularityHourly or dailystringnohourlyhourly, dailyrow type"daily"Daily for plans, hourly for operations
hoursHours aheadintegerno241–48hourly rows per location48Only used when granularity is hourly
daysDays aheadintegerno71–7daily rows per location3Only used when granularity is daily
includeAlertsInclude NWS alertsbooleannotruetrue / falseactive NWS alerts for US pointsfalseTurn off if you only need forecasts
unitsUnitsstringnometricmetric (°C, mm, km/h), imperial (°F, in, mph)units of all numbers"imperial"The units object on every row says what you got
useCacheUse cachebooleannotruetrue / falsereuses still-fresh provider answers (by the provider's own expiry time)falseKeep true. MET Norway asks clients to cache

Empty input ({}) is invalid: locations is required. In the Console form the prefill is already filled in. Two locations with the same coordinates (rounded to 4 decimals) are processed and charged once; the run summary has a warning.

Interacting settings

WhenInput AInput BEffective behavior
Point outside the USprovider: nwsany locationlocation_error row with status: not_supported, no charge
Point in the ocean near the USprovider: autoocean coordinatesNWS has no grid there, so MET Norway is used
Daily rowsgranularity: dailyhourshours is ignored; days is used
Non-US pointincludeAlerts: trueMET Norway locationno alert lookup; alertsStatus: not_available

Input examples

Three cities, next 24 hours (the prefill)

{
"locations": [
{ "name": "New York", "lat": 40.7128, "lon": -74.006 },
{ "name": "London", "lat": 51.5074, "lon": -0.1278 },
{ "name": "Tokyo", "lat": 35.6762, "lon": 139.6503 }
],
"granularity": "hourly",
"hours": 24,
"includeAlerts": true
}

Expected output: 72 forecast rows, plus alert rows if New York has active alerts. Cost: $0.008 plus $0.0005 per alert row.

US sites, 7 days, imperial units

{
"locations": ["39.7392,-104.9903", "41.8781,-87.6298"],
"granularity": "daily",
"days": 7,
"units": "imperial"
}

Expected output: 14 daily rows with temperatureMin / temperatureMax in °F, wind in mph, precipitation in inches.

Output

All rows go to one Dataset. The rowType field tells you what a row is:

  • forecast — one hour or one day for one location;
  • alert — one active NWS alert for one US location;
  • location_error — a location that got no forecast, with the reason.

The Dataset has two views: Forecast table and Alert columns. Views choose columns, not rows: both show every row, and the first column rowType tells you the row kind. To get only one kind, filter by rowType. The key-value store has ALERTS (only the alert rows, as one JSON array) and RUN_SUMMARY (status, counts, warnings and sources).

Output fields — forecast rows

FieldMeaningTypeCan be empty?Example / enum
rowTyperow typestringnoforecast
locationName, latitude, longitudethe location from your inputstring, numbername can be the coordinatesNew York, 40.7128, −74.006
providerdata source for this locationstringnonws, met-norway
modelforecast productstringnoNWS gridpoint forecast OKX/33,42
timeZoneIANA time zone of the pointstringrarelyAmerica/New_York
granularityhourly or dailystringnohourly
datelocal date of the rowstringno2026-10-12
forecastTimeUtc, forecastTimeLocalstart of the hour or day coveredstring (ISO 8601)no2026-10-12T12:00:00Z, 2026-10-12T08:00:00-04:00
periodEndUtcend of the periodstringno2026-10-12T13:00:00Z
summaryshort weather text (MET daily: around midday)stringyesMostly Cloudy
symbolCodeMET Norway weather symbolstringyes (NWS: null)cloudy
temperatureair temperature (hourly)numberyes; daily: null16.1
temperatureMin, temperatureMaxdaily min / maxnumberhourly: null15, 17.3
apparentTemperature“feels like”, only when the provider gives itnumberyes; daily: null16.1
dewPoint, relativeHumiditydew point, humidity %numberyes13.9, 87
precipitationAmountprecipitation for the provider periodnumberyes0
precipitationPeriodStartUtc, precipitationPeriodEndUtcthe period precipitationAmount coversstringyesNWS: 6-hour period
precipitationProbabilitychance of precipitation %numberyes3
windSpeed, windGust, windDirection, windDirectionCardinalwindnumber, stringyes24.1, 31.5, 10, N
cloudCovercloud cover %numberyes72
detailedForecastNWS text forecast (daily)stringyesPartly sunny, with a high near 68.
coverageHoursforecast hours that went into the rownumberno1 (hourly), up to 24 (daily; MET Norway days far ahead use 6-hour steps and can show 18–23)
alertsStatusalert lookup resultstringnochecked, not_requested, not_available, error
activeAlertCountnumber of active NWS alertsnumberyes (not checked = null)0
unitsunit of each quantityobjectno{"temperature":"°C","precipitation":"mm","windSpeed":"km/h",…}
sourceUpdatedAtwhen the provider last updated this forecaststringyes2026-10-12T10:26:40+00:00
fetchedAtwhen this Actor got the datastringno2026-10-12T12:03:30.873Z
sourceUrlprovider URL for this datastringnohttps://api.weather.gov/gridpoints/OKX/33,42
attributionrequired credit for the sourcestringnoData from MET Norway (api.met.no) …

null means the provider did not give this value. 0 means the provider gave zero. They are different.

NWS hourly precipitation comes in 6-hour periods. Every hourly row in the period repeats the period value and shows the period in precipitationPeriodStartUtc / precipitationPeriodEndUtc. Do not sum NWS hourly rows.

Daily output starts today when at least 6 forecast hours of today remain, otherwise tomorrow. A daily row for today covers only the rest of the day (coverageHours can be less than 24).

For MET Norway daily rows, summary and symbolCode describe the weather around midday, not the whole day. Use precipitationAmount, temperatureMin and temperatureMax for the full day.

Output fields — alert rows

FieldMeaningTypeExample
alertIdNWS alert IDstringurn:oid:2.49.0.1.840.0…
event, headlinealert type and headlinestringFlash Flood Warning
severity, certainty, urgencyCAP fieldsstringSevere, Likely, Immediate
status, messageType, category, responseCAP fieldsstringActual, Alert, Met, Avoid
areaDesc, senderNamearea and NWS officestringCoconino, AZ, NWS Flagstaff AZ
sent, effective, onset, expires, endstimes (ISO 8601, local offset)string, can be null2026-10-12T11:15:00-07:00
description, instructionfull NWS textstring, can be null

Alert rows also have locationName, latitude, longitude, provider, sourceUrl, sourceUpdatedAt (= sent), fetchedAt and attribution.

Output entities and surfaces

SituationWhereWhat you see
Normal locationDataset, view Forecast tableforecast rows
Active US alertKVS ALERTS (only alerts); Dataset rows with rowType: alert (view Alert columns)alert rows
No active alertsforecast rowsalertsStatus: checked, activeAlertCount: 0; no alert rows
Location not covered (provider: nws outside the US)Dataset (status, errorMessage columns in Forecast table)location_error row, status: not_supported; run status NO_RESULTS if no location is covered
Source errorDataset, RUN_SUMMARYlocation_error row, status: error; run status PARTIAL or ERROR

Output example (hourly, NWS)

{
"rowType": "forecast",
"locationName": "New York",
"latitude": 40.7128,
"longitude": -74.006,
"provider": "nws",
"model": "NWS gridpoint forecast OKX/33,42",
"timeZone": "America/New_York",
"granularity": "hourly",
"date": "2026-10-12",
"forecastTimeUtc": "2026-10-12T12:00:00Z",
"forecastTimeLocal": "2026-10-12T08:00:00-04:00",
"periodEndUtc": "2026-10-12T13:00:00Z",
"summary": "Mostly Cloudy",
"symbolCode": null,
"temperature": 16.1,
"apparentTemperature": 16.1,
"dewPoint": 13.9,
"relativeHumidity": 87,
"precipitationAmount": 0,
"precipitationPeriodStartUtc": "2026-10-12T12:00:00Z",
"precipitationPeriodEndUtc": "2026-10-12T18:00:00Z",
"precipitationProbability": 3,
"windSpeed": 24.1,
"windGust": 31.5,
"windDirection": 10,
"windDirectionCardinal": "N",
"cloudCover": 72,
"coverageHours": 1,
"alertsStatus": "checked",
"activeAlertCount": 0,
"units": { "temperature": "°C", "precipitation": "mm", "windSpeed": "km/h", "cloudCover": "%", "relativeHumidity": "%", "precipitationProbability": "%", "windDirection": "degrees (from)" },
"sourceUpdatedAt": "2026-10-12T10:26:40+00:00",
"fetchedAt": "2026-10-12T12:03:30.873Z",
"sourceUrl": "https://api.weather.gov/gridpoints/OKX/33,42",
"attribution": "Forecast and alerts: US National Weather Service (weather.gov). Units converted and daily values aggregated by this Actor; not an official NWS product."
}

Trimmed: temperatureMin, temperatureMax and detailedForecast are null in this row.

Output example (location error)

{
"rowType": "location_error",
"locationName": "London",
"latitude": 51.5074,
"longitude": -0.1278,
"provider": null,
"status": "not_supported",
"errorCode": "LOCATION_NOT_SUPPORTED",
"errorMessage": "Outside NWS coverage (the US National Weather Service forecasts only US land and coastal areas). Use provider \"auto\" or \"met\"."
}

Run statuses

RUN_SUMMARY.status and the run status message use these values:

  • COMPLETE — every location has a forecast;
  • PARTIAL — some locations failed or are incomplete (see location_error rows);
  • NO_RESULTS — no errors, but no location is covered by the chosen provider;
  • CAPPED — the run stopped at your maximum charge;
  • ERROR — every location failed, or a technical error; the run fails;
  • INVALID_INPUT — the input is wrong; the run fails before any request.

Pricing and limits

Pricing unit

This Actor uses pay-per-event pricing. You pay for:

EventWhenPrice
Actor startonce per run (per 1 GB of memory; default 256 MB = 1 start)$0.002
Location forecastonce per location that got forecast rows$0.002 (lower on Bronze, Silver and Gold plans)
Alert rowonce per NWS alert row$0.0005

Platform usage is included. You do not pay for a location with not_supported or error, or for duplicate locations. A run where no location is covered costs only the start. A run with invalid input fails before any request and costs only the start.

Cost examples

ScenarioInputEventsPrice (Free plan)
One location, 24 hours1 locationstart + 1 location$0.004
Prefill3 locations, hourly 24start + 3 locations$0.008
Maximum10 locations, hourly 48start + 10 locations$0.022
7-day plan10 locations, daily 7start + 10 locations$0.022
Not coveredprovider: nws, Londonstart only$0.002

Add $0.0005 for each alert row. If you set a maximum charge for the run, the Actor stops before it goes over the limit and the status is CAPPED.

Limits

  • 1–10 locations per run; hourly 1–48 hours, daily 1–7 days.
  • Tested: 10 locations × 48 hours (480 rows) in about 8 seconds with 256 MB.
  • Source requests stop after 240 seconds, so a run fits in the default 300-second timeout.

API, export and integrations

  • API: start the Actor with the same JSON input through the Apify API and read the default Dataset.
  • Export: download the Dataset as JSON, CSV, Excel or XML. Use the Forecast table view and filter rowType = forecast for forecast rows only, or read the ALERTS record for alerts only.
  • Scheduling: create an Apify schedule (for example every morning at 06:00) to get a fresh forecast.
  • Webhooks: send the run result to Slack, email or your app when the run succeeds.

Use with AI agents (MCP)

  • MCP server with only this Actor: https://mcp.apify.com?tools=cliqtomedia/weather-forecast-alerts-export.
  • Smallest useful input: {"locations":[{"name":"Denver","lat":39.7392,"lon":-104.9903}],"hours":12}.
  • Key fields: forecastTimeLocal, temperature, precipitationAmount, windSpeed, provider, units.
  • A call with 1–3 locations takes about 3–6 seconds and costs $0.004–$0.008.
  • Limits: 10 locations, 48 hours or 7 days, alerts only for US points.

Troubleshooting

London (or any non-US point) has no forecast

Symptom: a location_error row with status: not_supported. Reason: you set provider to nws. NWS covers only the US. Action: use provider: auto or met.

A US point uses MET Norway

Symptom: provider: met-norway for a point near the US. Reason: the point is in the ocean or outside the NWS grid, and provider is auto. Action: check the coordinates. Use provider: nws if you want an error instead of MET Norway.

No alert rows

Check alertsStatus on the forecast rows. checked with activeAlertCount: 0 means NWS had no active alerts for the point. not_available means the point is not in the US. error means the alert request failed; the forecast is still valid.

The run failed with “Invalid input”

Read the status message. It names the wrong field, for example locations[0].lat must be between -90 and 90.

FAQ

Does the Actor store anything in my account between runs?

Yes, when useCache is on: a named key-value store weather-forecast-alerts-cache keeps provider answers so repeat runs make fewer requests. Old entries are not used after 2 days. You can delete this store at any time, or set useCache: false.

Do I need an API key?

No. Both sources are free public APIs without a key.

How fresh is the data?

Every row has sourceUpdatedAt (when the provider updated the forecast) and fetchedAt. With useCache: true the Actor reuses a provider answer only until the provider's own expiry time. Alerts are always requested fresh.

Why do two locations have different models?

US points use NWS and other points use MET Norway. The provider and model fields tell you which one. One location never mixes models.

Is this an official warning service?

No. Alert rows copy active NWS alerts for information. They can be late or missing. Always follow official local warnings.

Data sources and licences

  • MET Norway — Data from MET Norway (api.met.no), licensed under NLOD 2.0 and CC BY 4.0. This Actor converts units and aggregates daily values.
  • US National Weather Service — weather.gov data is public domain. This Actor is not an NWS product and is not endorsed by NWS.

Every row has an attribution field. Keep it when you publish the data.

Support

For a bug, a question or a feature request, open an issue on the Issues tab of this Actor. Include the run ID and the input (coordinates are fine). Never send API tokens or private data.