Weather Forecast API by City or Coordinates (MET Norway) avatar

Weather Forecast API by City or Coordinates (MET Norway)

Pricing

from $0.70 / 1,000 place forecasts

Go to Apify Store
Weather Forecast API by City or Coordinates (MET Norway)

Weather Forecast API by City or Coordinates (MET Norway)

Weather forecast API for a list of place names or coordinates: daily temperature, rain, wind, cloud and an outdoor verdict, from MET Norway. No API key needed.

Pricing

from $0.70 / 1,000 place forecasts

Rating

0.0

(0)

Developer

LYFE Offshore

LYFE Offshore

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

18 days ago

Last modified

Share

Weather forecast API for a list of cities, place names or coordinates: hourly or daily forecast per place, from MET Norway, with no API key needed.

Give it a list of place names or coordinates. It returns, per place, a daily forecast in the place's own local days: min/max temperature, rain, wind, cloud, a plain-words condition and a simple outdoor verdict with the reason. Data comes from the Norwegian Meteorological Institute (MET Norway); no API key needed. Hourly rows are available too.

One run, real output

Four Caribbean port towns, run on 4 October 2026 with days: 3 (a fifth entry, plain coordinates, gave the same result as Oranjestad):

PlaceDay (local)Temp °CRain mmWind avg / max km/hConditionOutdoor
Oranjestad, Aruba2026-10-04 (partial)28.7 – 29.80.630.7 / 32.8light rain showersfair – wind up to 33 km/h
Oranjestad, Aruba2026-10-0526.3 – 29.90.833.3 / 44.6fairpoor – wind up to 45 km/h
Oranjestad, Aruba2026-10-0627.9 – 29.7027.3 / 31.7partly cloudyfair – wind up to 32 km/h
Kralendijk, Bonaire2026-10-04 (partial)28.3 – 29.50.329.5 / 31.7partly cloudyfair – wind up to 32 km/h
Kralendijk, Bonaire2026-10-0527.9 – 29.50.228.3 / 29.5fairfair – wind up to 30 km/h
Kralendijk, Bonaire2026-10-0627.4 – 29.70.125.4 / 31.3fairfair – wind up to 31 km/h
Cozumel, Mexico2026-10-04 (partial)27.4 – 30.41.119 / 24.8partly cloudyfair – 1.1 mm of rain
Cozumel, Mexico2026-10-0525.5 – 29.72.418.6 / 24.8fairfair – 2.4 mm of rain
Cozumel, Mexico2026-10-0624.9 – 301.616.1 / 20.2partly cloudyfair – 1.6 mm of rain
Bridgetown, Barbados2026-10-04 (partial)25.8 – 30.60.526.4 / 29.2partly cloudyfair – wind up to 29 km/h
Bridgetown, Barbados2026-10-0525.7 – 29.14.926.1 / 29.5light rain showersfair – 4.9 mm of rain; wind up to 30 km/h
Bridgetown, Barbados2026-10-0626.2 – 29.92.825.7 / 28.1light rain showersfair – 2.8 mm of rain; wind up to 28 km/h

Every place is in its own timezone, rain is counted over the daytime window (08:00-20:00 local) so a wet afternoon is not hidden by a dry night, and each verdict names its cause. Trade-wind places like Aruba rarely score "good": wind of 28 km/h or more already counts as "fair" (thresholds below).

Input example

The run above (INPUT.json):

{ "places": ["Oranjestad, Aruba", "Kralendijk, Bonaire", "Cozumel, Mexico", "Bridgetown, Barbados", "12.5186,-70.0358"],
"days": 3, "outputMode": "daily" }

places takes names, "lat,lon" strings or {name, lat, lon} objects; or use inputDatasetId (+ placeField) to read another Actor's dataset. days 1-10 (default 5), outputMode daily | hourly, daytimeFromHour (default 8), daytimeToHour (default 20).

Output example

Each place is one dataset row in daily mode. The first row of the run above, shortened to one of its three days (attribution and billable left out):

{ "input": "Oranjestad, Aruba", "place": "Oranjestad, Aruba, Netherlands", "latitude": 12.5201, "longitude": -70.0371,
"timezone": "America/Aruba", "status": "ok", "forecastUpdatedAt": "2026-10-04T13:18:14Z", "daysCount": 3,
"days": [ { "date": "2026-10-05", "tempMinC": 26.3, "tempMaxC": 29.9, "rainMm": 0.8, "windAvgKmh": 33.3,
"windMaxKmh": 44.6, "cloudAvgPercent": 44, "condition": "fair", "thunder": false, "partial": false,
"outdoorRating": "poor", "outdoorReason": "wind up to 45 km/h" } ] }

Output fields (daily mode)

FieldMeaning
inputthe entry as you gave it
place, latitude, longitudethe place it was taken to mean, and the coordinates used
timezoneIANA timezone worked out from the coordinates
status, errorok, or the reason there is no forecast (see below)
forecastUpdatedAtwhen MET Norway last updated this forecast (UTC)
daysCount, daysnumber of local days, and one summary per day
days[].date, partiallocal date; true when the forecast covers only part of it
days[].tempMinC, tempMaxCmin/max temperature over the whole local day
days[].rainMm, windAvgKmh, windMaxKmh, cloudAvgPercent, condition, thunderover the daytime window
days[].outdoorRating, outdoorReasongood / fair / poor and the cause
attributiondata credit for MET Norway and OpenStreetMap

In hourly mode each row has time (local), timeUtc, temperatureC, windKmh, windFromDeg, cloudPercent, humidityPercent, pressureHpa, precipitationMm, periodHours, symbol and condition.

What it does

  1. Resolves names with OpenStreetMap's Nominatim (one request per second, as its usage policy requires). The matched place is returned in place, so you can see what a name was taken to mean. Add the country to avoid the wrong namesake. Coordinates ("12.5186,-70.0358" or {name, lat, lon}) skip this step.
  2. Fetches the forecast from MET Norway Locationforecast 2.0, with an identifying User-Agent, coordinates cut to 4 decimals, requests spaced out, and the Expires / If-Modified-Since rules honoured.
  3. Works out the local timezone offline from the coordinates (the tz-lookup package, CC0) and cuts the forecast into local days, not UTC days.
  4. Summarises temperature over the whole local day, and rain, wind, cloud, condition and verdict over the daytime window you choose (default 08-20).

outputMode: "hourly" returns one row per place and hour instead: local time, temperature, wind, wind direction, cloud, humidity, pressure, rain over the period and condition. The feed is hourly for about 2.5 days and 6-hourly after that; a row says how many hours its rain amount covers (periodHours).

The outdoor verdict, exactly

A simple rule, not a forecast model. Per day, over the daytime window:

fairpoor
Rain1 mm or more5 mm or more
Wind (max of the forecast steps)28 km/h or more (about Beaufort 4-5)40 km/h or more (about Beaufort 6)
Max temperature34 °C or more, or 0 °C or less38 °C or more, or -10 °C or less
Thunder in any daytime steppoor

The worst applicable level wins and every cause is listed in outdoorReason. Use the raw numbers if you have your own rules.

What it does not do

  • No gusts. MET Norway's compact format has wind speed but no gust field, so windMaxKmh is the highest wind speed of the forecast steps. Gusts will be higher.
  • Partial days. Today (the forecast starts at the current hour) and the last day of the feed are often incomplete; those days carry "partial": true.
  • Later days are coarser and less certain. After roughly 2.5 days the feed has 6-hourly steps, so min/max and wind maximum are read from fewer points and tend to be a little too mild.
  • Timezone labels near borders. The offline lookup gives the right UTC offset, but its name can be a neighbour with the same offset (Kralendijk, Bonaire came back as America/Caracas, which is UTC-4 like America/Kralendijk).
  • Not a warning service. Do not use it for safety-critical decisions; check your national weather service for warnings.
  • Place names depend on OpenStreetMap: an unknown or misspelt name returns a place_not_found row, not a guess.

Rows that are not a forecast

A place that cannot be forecast still gets a row with a status and an error, and is not charged: place_not_found, geocoding_failed, forecast_unavailable (the source failed after retries) or invalid_input. If no place at all produced a forecast the run fails with a message instead of finishing empty.

Price

Price per 1,000 by your Apify plan (Apify applies the right column automatically):

FreeStarterScaleBusiness and up
Place forecast, per 1,000$1.00$1.00$0.85$0.70

No start fee. The figures below use the Free-plan price; on a paid plan the same run costs less.

$0.001 per place with a forecast (event place-forecast), in daily or hourly mode alike. Platform usage is included. Places without a result are free.

  • 1,000 places ≈ $1.
  • The run above: 5 places ≈ $0.005.
  • 100 places ≈ $0.10, whether you ask for 1 day or 10, daily or hourly.

A run's maximum-charge limit caps the number of places processed. Names take about 1.1 seconds each to resolve (Nominatim's limit); 100 names take about two minutes, 100 coordinates seconds.

Use it from code or an AI agent

curl -X POST "https://api.apify.com/v2/acts/lyfe_tools~weather-forecast-by-place-met-norway/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"places": ["Cozumel, Mexico", "52.3676,4.9041"], "days": 3}'

AI agents (Claude, Cursor and other MCP clients) can call it through the Apify MCP server at https://mcp.apify.com: the agent sends places and days (optionally outputMode), and reads place, timezone and per day date, tempMinC, tempMaxC, rainMm, windMaxKmh, condition and outdoorRating.

Port days

It pairs with Caribbean Cruise Ship Schedules for a port-day forecast: the weather for the port on the day a ship calls.

FAQ

Do I need an API key for the weather data? No. MET Norway and Nominatim need no key; you only need an Apify account to run the Actor.

Hourly or daily forecast? Both. outputMode: "daily" gives one row per place with a summary per local day; "hourly" gives one row per place and forecast step (hourly for about 2.5 days, then 6-hourly). The price per place is the same.

How many days ahead? days goes up to 10; the feed reaches about 9 days.

Can I give coordinates instead of city names? Yes, as "lat,lon" or {name, lat, lon}. That skips the name lookup and is much faster.

Does it work outside Norway? Yes. The real run above is for four Caribbean places.

Sources and attribution

  • Weather data: MET Norway (api.met.no), CC BY 4.0 and the Norwegian licence for open government data. Every row carries the attribution; if you republish the data, keep it. See the terms of service.
  • Place names and coordinates: (c) OpenStreetMap contributors, ODbL, via Nominatim.
  • Timezones: tz-lookup (CC0), offline.

Issues and questions: tools@lyfeoffshore.com.