Weather Forecast API: hourly + daily by city or lat/lon avatar

Weather Forecast API: hourly + daily by city or lat/lon

Pricing

from $1.50 / 1,000 location forecasts

Go to Apify Store
Weather Forecast API: hourly + daily by city or lat/lon

Weather Forecast API: hourly + daily by city or lat/lon

Weather forecast for up to 50 places or coordinates, up to 10 days: hourly temperature, rain, wind, gusts, clouds and humidity plus a daily summary in local time. Source MET Norway (CC BY 4.0), cached per its terms. Unknown places are free.

Pricing

from $1.50 / 1,000 location forecasts

Rating

0.0

(0)

Developer

Bosco Labs

Bosco Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Features

Limited permissions

Share

Weather forecasts for place names or coordinates, up to 10 days ahead: hourly temperature, precipitation, wind speed, direction and gusts, cloud cover, humidity and pressure, plus a daily summary in local time. The data come from MET Norway, the Norwegian national weather service (the forecasts behind yr.no), which covers the whole world. Built for AI agents planning travel, logistics, events, farming or energy work, and for people who need a clean forecast table.

Pricing (pay per event): $0.0015 per location forecast. Unknown places and invalid coordinates are returned too, free of charge.

What you get

One row per location. Real output for {"locations": ["Amsterdam"], "hours": 48} (run 2026-11-05; timeseries shortened to 2 of its 12 steps):

{
"schema_version": "1",
"input": "Amsterdam",
"resolved": true,
"status": "ok",
"name": "Amsterdam, North Holland, NL",
"country_code": "NL",
"latitude": 52.374,
"longitude": 4.8897,
"elevation_m": 13,
"timezone": "Europe/Amsterdam",
"updated_at": "2026-11-05T19:17:13Z",
"fetched_at": "2026-11-05T23:13:00+00:00",
"hours": 48,
"units": {"temperature": "celsius", "precipitation": "mm", "precipitation_probability": "%", "wind_speed": "m/s", "wind_gust": "m/s", "wind_direction": "degrees, direction the wind comes from (0 = north, 90 = east)", "cloud_cover": "%", "humidity": "%", "pressure": "hPa (at sea level)"},
"timeseries": [
{"time": "2026-11-06T00:00:00+01:00", "period_hours": 1, "temperature": 4.7, "temperature_min": null, "temperature_max": null, "precipitation": 0.0, "precipitation_probability": null, "wind_speed": 4.0, "wind_gust": null, "wind_direction": 83.7, "cloud_cover": 0.0, "humidity": 92.8, "pressure": 1026.3, "symbol_code": "clearsky_night"},
{"time": "2026-11-06T01:00:00+01:00", "period_hours": 1, "temperature": 4.4, "temperature_min": null, "temperature_max": null, "precipitation": 0.0, "precipitation_probability": null, "wind_speed": 3.9, "wind_gust": null, "wind_direction": 78.0, "cloud_cover": 0.0, "humidity": 93.8, "pressure": 1026.2, "symbol_code": "clearsky_night"}
],
"daily": [
{"date": "2026-11-06", "hours_covered": 24, "temperature_min": 2.6, "temperature_max": 8.3, "precipitation": 0.0, "wind_speed_max": 4.4, "wind_gust_max": null, "symbol_code": "clearsky"},
{"date": "2026-11-07", "hours_covered": 24, "temperature_min": 0.7, "temperature_max": 6.6, "precipitation": 0.3, "wind_speed_max": 3.0, "wind_gust_max": null, "symbol_code": "fog"}
],
"warnings": [],
"source_url": "https://api.met.no/weatherapi/locationforecast/2.0/complete?lat=52.374&lon=4.8897&altitude=13",
"place_source_url": "https://www.geonames.org/2759794",
"attribution": "Data from MET Norway (CC BY 4.0)",
"attribution_details": "Forecast by MET Norway (api.met.no), CC BY 4.0, https://creativecommons.org/licenses/by/4.0/. Daily values and local times are derived by Bosco Labs from MET Norway's forecast; they are not the responsibility of MET Norway. Place name and coordinates from GeoNames (geonames.org), CC BY 4.0.",
"retrieved_at": "2026-11-05T23:13:00+00:00"
}

Key fields

  • timeseries: forecast steps in local time.
    • Instant values (temperature, wind, clouds, humidity, pressure) hold at time.
    • precipitation, symbol_code and the 6-hour temperature_min/max cover the period_hours that starts at time.
    • Steps are hourly for about the first 2.5 days, then every 6 hours.
    • With summary: true you get the next 12 hourly steps; with false, every step in hours.
  • daily: one row per local calendar day. It holds min/max temperature, total precipitation, max wind and gust, and the most frequent weather symbol. hours_covered < 24 means the day is only partly in the window (the first and last day).
  • wind_gust and precipitation_probability: MET Norway gives these only inside its Nordic model area. Checked 2026-11-05: yes for Oslo, Bergen, Copenhagen, Tallinn and Hamburg; no for Amsterdam, Rotterdam, New York and Portland. Elsewhere they are null.
  • symbol_code: MET Norway's weather symbols, e.g. clearsky_day, partlycloudy_night, rain, heavysnowshowers_day, fog. Icons and meanings: github.com/metno/weathericons.
  • updated_at / fetched_at:
    • updated_at: when MET's model data were updated. Hourly in the Nordic region, every 6 hours elsewhere.
    • fetched_at: when this Actor got the forecast. It can be up to 3 hours before your run, because MET's terms require reusing a forecast until it may be fetched again. A newer forecast would not have been available anyway.

Input

{ "locations": ["Rotterdam", "Paris, FR", "Portland, Oregon", "52.3676,4.9041"], "hours": 48 }
FieldMeaning
locationsUp to 50 place names or lat,lon pairs. Required
hoursHours ahead from the current hour, 1-240. Default 48
timezoneIANA zone for times and days, e.g. Europe/Amsterdam. Default: the place's own zone, UTC for coordinates
summarytrue (default): daily summary + next 12 hours. false: daily summary + every step

Place names are matched against a built-in list of about 34,000 towns and cities with 15,000+ people, plus all capitals (GeoNames). Matching ignores case and accents, and knows common other-language names ("Den Haag", "München"). When a name is shared ("Portland"), the most populous place is used and warnings lists the others. Add a country or region after a comma to choose: "Portland, Maine", "Paris, US", "Delft, NL". For anything smaller (a farm, a venue, a wind turbine) give coordinates.

Coordinates are lat,lon in decimal degrees, latitude first: 52.3676,4.9041. They are rounded to 4 decimals (about 10 m), as MET Norway's terms require.

Use from an AI agent (MCP)

Agents can call this Actor as a tool through the Apify MCP server. Add this server URL to your MCP client (Claude, Cursor, VS Code, ...):

https://mcp.apify.com?tools=bosco_labs/weather-forecast

It loads this Actor as a tool, plus the tools that read its results (get-actor-run, get-dataset-items). The hosted server signs you in with OAuth, or accepts your Apify token as Authorization: Bearer <APIFY_TOKEN>.

Example prompt: "Will it rain in Amsterdam tomorrow afternoon?" The agent passes:

{ "locations": ["Amsterdam"], "hours": 48, "summary": false }

and reads the hourly precipitation for tomorrow 12:00-18:00 local time.

Example prompt: "Wind speed forecast for these 5 wind farm coordinates, next 48 hours."

{ "locations": ["53.4167,6.1667", "54.0167,6.5833", "52.8,4.4", "51.65,3.0", "53.2,7.2"], "hours": 48, "summary": false, "timezone": "Europe/Amsterdam" }

Output for agents:

  • About 7 KB per location with summary: true. With false: 18 KB for 48 hours, 33 KB for 240.
  • Stable snake_case fields. Numbers are numbers, null means unknown, and arrays are never null.
  • Times carry their UTC offset.
  • warnings say in plain words what to fix (an ambiguous name, an unknown place, UTC because no timezone was given).

Measured locally on 2026-11-05: 4 locations in 1.0 s (4 requests to MET Norway). Repeating the run took 0.9 s with 0 requests, served from the cache.

Cost: $0.0015 per location forecast, billed to the Apify account the MCP server is signed in with. Unresolved locations are free.

FAQ

Where does the data come from?

  • Forecast: MET Norway's Locationforecast 2.0 (api.met.no). Outside the Nordic region it is based on the ECMWF global model. In the Nordic region MET uses its own high-resolution model, post-processed with local observations.
  • Place names: GeoNames.
  • Sources per row: source_url is the exact MET request; place_source_url is the GeoNames record.

How fresh is it? MET Norway updates Nordic forecasts every hour and the rest of the world every 6 hours. Their terms forbid asking for the same point again within 30 minutes (Nordic) or 3 hours (elsewhere), and before the response's Expires time. So this Actor keeps each forecast in a key-value store named weather-forecast-cache in your Apify account, and serves it from there until it may be refreshed. fetched_at shows when it was fetched.

What is not included?

  • Past weather or observations; only current forecasts.
  • Weather warnings and alerts.
  • Air quality, marine and aviation (above-ground) forecasts.
  • Wind at hub height. wind_speed is at 10 m above ground; for turbines, scale it up yourself.
  • Gusts and precipitation probability outside the Nordic region.
  • Forecasts beyond about 9.5 days. MET's forecast ends there, even with hours: 240.

Why is the daily precipitation off by a little at midnight? After the first ~2.5 days, steps are 6 hours long. A 6-hour period counts toward the local day it starts in, so in timezones that are not a multiple of 6 hours from UTC some rain can land on the neighbouring day.

My town isn't found. The built-in list holds places with 15,000+ people and capitals. Give the coordinates instead ("lat,lon"). Unknown places are free.

Limits?

  • 50 locations per run.
  • MET Norway is a free public service without an SLA. If it does not answer, the row is marked source_error and not charged. If a recent cached forecast exists (under 12 hours old), it is served with a warning instead.

Licence and attribution.

  • Forecast: "Data from MET Norway", CC BY 4.0. Daily summaries and local times are derived by Bosco Labs and are not MET Norway's responsibility.
  • Place names: GeoNames, CC BY 4.0.

If you republish the data, keep the attribution field. This Actor is not made or endorsed by MET Norway or Yr. See LEGAL.md.