Weather forecast API for any list of place names or coordinates: current conditions, a daily forecast of up to 10 days and optional hourly steps, with temperature, feels-like, rain, wind, UV and sunrise/sunset in local time. MET Norway data. $1 per 1,000 locations.
Weather Forecast API returns current conditions plus a daily forecast of up to 10 days (and optional hourly steps) for any list of place names or coordinates in one call. Forecasts come from MET Norway, the Norwegian Meteorological Institute (the forecasts behind yr.no), for any point on Earth. Place names are geocoded automatically, and every record is in the location's own time zone with readable conditions ("Light rain showers"), feels-like temperature, UV index and sunrise/sunset. Built for logistics and field-service planning, travel and event apps, agriculture dashboards and AI agents that need a reliable weather answer.
Price
Price per delivered record
Event
Price
Per 1,000
Charged for
Location forecast weather-forecast
$0.001
$1 / 1,000
Charged once per location for which current conditions and the daily (and optional hourly) forecast were returned.
Apify free plan: up to 10 items per run. Paid plans have no per-run cap; set maxTotalChargeUsd to cap spend.
POST https://api.apify.com/v2/actors/sfoln~weather-forecast/runs?maxTotalChargeUsd=1
GET https://api.apify.com/v2/actor-runs/{runId} # until status is SUCCEEDED
GET https://api.apify.com/v2/datasets/{defaultDatasetId}/items?format=json
Authenticate with an Apify API token. MCP clients can instead sign in with OAuth when prompted. Example prompt for an agent: What is the 7-day weather forecast for Berlin and New York? Include daily highs, lows and how much rain to expect.
Input
Input fields
List places or coordinates (one per line). Each location produces one dataset record with current conditions and a daily (optionally hourly) forecast.
Field
Type
Default
Meaning
locations *
array
required
Locations One per line: a place name ("Berlin", "Paris, France") or "latitude,longitude" ("40.7128,-74.0060"). Via the API you can also pass objects like {"latitude": 52.52, "longitude": 13.41, "name": "Office"} or {"place": "Springfield", "countryCode": "US"}. Accounts on the Apify free plan can process up to 10 locations per run.
days
integer
7
Forecast days Calendar days to return, today included. The forecast reaches about 10 days ahead, so values above 10 return the whole forecast (10 days). Range 1–16.
hourly
boolean
false
Include hourly forecast Add an `hourly` array: one entry per forecast step (hourly for about the first 2.5 days, then every 6 hours) with temperature, feels-like, humidity, precipitation, conditions and wind.
units
string
"metric"
Units metric = °C, km/h, mm · imperial = °F, mph, inch. One of "metric", "imperial".
timezone
string
"auto"
Time zone auto (default) = each location's own time zone: days and times are local there. Or one IANA time zone for every location, e.g. UTC or Europe/Berlin.
maxLocations
integer
1000
Max locations Safety cap on how many locations are processed in this run. Range 1–10000.
concurrency
integer
5
Concurrency How many locations are processed in parallel. Range 1–10.
includeRaw
boolean
false
Include raw upstream response Attach the unmodified MET Norway forecast (GeoJSON) to each record (larger output).
Example input
{
"locations": [
"Berlin",
"40.7128,-74.0060"
]
}
Output
One record per input item
Records land in the run's dataset; a synchronous call returns them directly. Each has a status (ok is charged; everything else is free) and a charged flag. The run's OUTPUT record totals items and charges.
Field
Type
Meaning
input
string | object
Input The parsed location input.
location
string | null
Location Resolved place label ("Berlin, State of Berlin, Germany"), the given name, or "lat,lng". e.g. "Berlin, State of Berlin, Germany"
resolvedPlace
object | null
Resolved place Geocoding match for place-name inputs: name, latitude, longitude, country, countryCode, admin1, timezone, elevation, population.
latitude
number | null
Latitude Latitude of the forecast point (4 decimals).
longitude
number | null
Longitude Longitude of the forecast point (4 decimals).
elevation
number | null
Elevation (m) Altitude the forecast temperatures refer to (the place's elevation, else MET Norway's terrain model).
timezone
string | null
Timezone IANA time zone of all days and times in the record.
timezoneAbbreviation
string | null
TZ abbreviation e.g. CEST, EDT or GMT+9.
utcOffsetSeconds
integer | null
UTC offset (s) Current offset of the time zone from UTC.
timezoneSource
string | null
Timezone source geocoder (the place's zone) | nearest_place (coordinates: zone of the nearest populated place) | input (the timezone input) | default (UTC).
units
object | null
Units { temperature, windSpeed, precipitation } unit labels.
current
object | null
Current conditions The current forecast hour: time, temperature, apparentTemperature, dewPoint, relativeHumidity, precipitation, weatherCode, symbolCode, weatherText, cloudCover, windSpeed, windDirection, windGusts, pressure, uvIndexClearSky, isDay.
daily
array
Daily forecast Per local calendar day: date, tempMax, tempMin, precipitationSum, precipitationProbabilityMax, weatherCode, symbolCode, weatherText, windMax, windGustMax, uvIndexMax, sunrise, sunset, hoursCovered.
hourly
array
Hourly forecast Only when `hourly` is enabled: one entry per forecast step (hourly, later 6-hourly): time, periodHours, temperature, apparentTemperature, dewPoint, relativeHumidity, precipitation, precipitationProbability, weatherCode, symbolCode, weatherText, windSpeed, windDirection, windGusts, cloudCover, uvIndexClearSky.
forecastDays
integer | null
Forecast days Number of days in `daily`.
forecastStart
string | null
Forecast start Local time of the first forecast step.
forecastEnd
string | null
Forecast end Local time of the last forecast step (about 10 days ahead).
forecastUpdatedAt
string | null
Forecast updated When MET Norway last updated this forecast (ISO, UTC).
attribution
string | null
Attribution Weather data from MET Norway (api.met.no), CC BY 4.0.
status
string
Status ok | not_found | error | skipped_invalid | skipped_budget | skipped_free_plan e.g. "ok"
charged
boolean
Charged Whether this record incurred a pay-per-event charge.
chargedEvent
string | null
Charged event weather-forecast when charged.
source
string
Source metno
fetchedAt
string
Fetched at ISO timestamp.
warnings
array | null
Warnings Non-fatal notes (a geocoding fallback, fewer days than requested).
error
object | null
Error { code, message, provider?, status? } when status is not ok.
About 10 days: hourly steps for roughly the first 2.5 days, then 6-hour steps. Ask for up to 10 days; larger values return the whole forecast.
Which time zone are the dates and times in?
The location's own time zone by default (from the place name, or for coordinates the zone of the nearest populated place). Set timezone to UTC or any IANA zone to use that instead.