Weather Forecast API by City or Coordinates (MET Norway)
Pricing
from $0.70 / 1,000 place forecasts
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
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
18 days ago
Last modified
Categories
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):
| Place | Day (local) | Temp °C | Rain mm | Wind avg / max km/h | Condition | Outdoor |
|---|---|---|---|---|---|---|
| Oranjestad, Aruba | 2026-10-04 (partial) | 28.7 – 29.8 | 0.6 | 30.7 / 32.8 | light rain showers | fair – wind up to 33 km/h |
| Oranjestad, Aruba | 2026-10-05 | 26.3 – 29.9 | 0.8 | 33.3 / 44.6 | fair | poor – wind up to 45 km/h |
| Oranjestad, Aruba | 2026-10-06 | 27.9 – 29.7 | 0 | 27.3 / 31.7 | partly cloudy | fair – wind up to 32 km/h |
| Kralendijk, Bonaire | 2026-10-04 (partial) | 28.3 – 29.5 | 0.3 | 29.5 / 31.7 | partly cloudy | fair – wind up to 32 km/h |
| Kralendijk, Bonaire | 2026-10-05 | 27.9 – 29.5 | 0.2 | 28.3 / 29.5 | fair | fair – wind up to 30 km/h |
| Kralendijk, Bonaire | 2026-10-06 | 27.4 – 29.7 | 0.1 | 25.4 / 31.3 | fair | fair – wind up to 31 km/h |
| Cozumel, Mexico | 2026-10-04 (partial) | 27.4 – 30.4 | 1.1 | 19 / 24.8 | partly cloudy | fair – 1.1 mm of rain |
| Cozumel, Mexico | 2026-10-05 | 25.5 – 29.7 | 2.4 | 18.6 / 24.8 | fair | fair – 2.4 mm of rain |
| Cozumel, Mexico | 2026-10-06 | 24.9 – 30 | 1.6 | 16.1 / 20.2 | partly cloudy | fair – 1.6 mm of rain |
| Bridgetown, Barbados | 2026-10-04 (partial) | 25.8 – 30.6 | 0.5 | 26.4 / 29.2 | partly cloudy | fair – wind up to 29 km/h |
| Bridgetown, Barbados | 2026-10-05 | 25.7 – 29.1 | 4.9 | 26.1 / 29.5 | light rain showers | fair – 4.9 mm of rain; wind up to 30 km/h |
| Bridgetown, Barbados | 2026-10-06 | 26.2 – 29.9 | 2.8 | 25.7 / 28.1 | light rain showers | fair – 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)
| Field | Meaning |
|---|---|
input | the entry as you gave it |
place, latitude, longitude | the place it was taken to mean, and the coordinates used |
timezone | IANA timezone worked out from the coordinates |
status, error | ok, or the reason there is no forecast (see below) |
forecastUpdatedAt | when MET Norway last updated this forecast (UTC) |
daysCount, days | number of local days, and one summary per day |
days[].date, partial | local date; true when the forecast covers only part of it |
days[].tempMinC, tempMaxC | min/max temperature over the whole local day |
days[].rainMm, windAvgKmh, windMaxKmh, cloudAvgPercent, condition, thunder | over the daytime window |
days[].outdoorRating, outdoorReason | good / fair / poor and the cause |
attribution | data 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
- 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. - 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-Sincerules honoured. - Works out the local timezone offline from the coordinates (the
tz-lookuppackage, CC0) and cuts the forecast into local days, not UTC days. - 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:
| fair | poor | |
|---|---|---|
| Rain | 1 mm or more | 5 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 temperature | 34 °C or more, or 0 °C or less | 38 °C or more, or -10 °C or less |
| Thunder in any daytime step | poor |
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
windMaxKmhis 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 likeAmerica/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_foundrow, 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):
| Free | Starter | Scale | Business 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.