Open-Meteo
App · Weather & Space · 18 actions
Look up the weather anywhere in the world through Open-Meteo's keyless API, across every dataset it publishes. Current conditions, forecasts by the 15 minutes, the hour and the day out to 16 days, and measured weather back to 1940. Ensemble forecasts that say how confident the outlook is, seasonal forecasts months ahead, and climate projections to 2050. Air quality and pollen, marine waves and swell, river discharge for flood watches, satellite measured solar irradiance, and ground elevation. Plus the archive of past forecasts, single model runs, and a geocoder for turning a place name into coordinates. No account or API key required.
Actions
| Action | What it does |
|---|---|
| Compare forecast runs | See how the forecast for each hour has moved as that hour drew closer. |
| Get 15 minute forecast | Get a forecast in 15 minute steps instead of whole hours, for the next few hours or the next few days. |
| Get a single model run | Read one named run of one weather model exactly as it was issued. |
| Get air quality | Get air-quality indices and pollutant levels for a place: European and US AQI, particulates, gases, dust, UV index, and (in Europe) pollen, now and, optionally, hour by hour. |
| Get climate projection | Read downscaled IPCC climate model output for any date from 1950 to 2050, at a resolution of around 25 km. |
| Get current weather | Get current conditions for a place or an exact coordinate: temperature, feels-like, humidity, precipitation, wind, cloud cover, and a readable description of the weather code. |
| Get daily forecast | Get a day-by-day forecast for up to 16 days: highs and lows, precipitation totals and chance, wind, UV, and sunrise and sunset, returned as one row per day. |
| Get elevation | Look up how high the ground is at a place, or at up to 100 coordinates in one call. |
| Get ensemble forecast | Run the forecast dozens of times over from slightly different starting conditions and get back how far the runs disagree. |
| Get historical weather | Read the weather that actually happened over a past date range, from Open-Meteo's archive of reanalysis data going back to 1940. |
| Get hourly forecast | Get an hour-by-hour forecast for up to 16 days, returned as one row per hour so a workflow can loop over the timesteps. |
| Get location details | Look up one place by the id that a search returned, and get the fuller record: the postcodes it covers, the whole chain of administrative areas it sits in, its elevation, time zone and population. |
| Get marine forecast | Get sea conditions for a point on the water: wave height, direction and period, wind waves and swell separately, ocean currents, and sea surface temperature, now and by the hour and the day. |
| Get past forecast | Read the forecast that was being issued on a past date, from the archive of model output kept since 2021. |
| Get river discharge | Get the daily flow of the river nearest a point, in cubic metres per second, for up to a year ahead and three months back. |
| Get seasonal forecast | Look months ahead, out to about seven, with ECMWF's seasonal forecast. |
| Get solar radiation | Read solar irradiance as weather satellites actually measured it, rather than as a weather model predicted it, going back as far as 1983. |
| Search locations | Search the GeoNames database for places matching a name and get back their coordinates, elevation, time zone, region, and population. |
Compare forecast runs
See how the forecast for each hour has moved as that hour drew closer. For every hour it returns today's forecast beside the forecasts issued one, two and more days ago, plus a drift figure per variable: how much the outlook has shifted on average. Use it to tell a settling forecast from a wobbling one before committing to an outdoor booking, a delivery slot or a shutdown.
Inputs
- Location
locationtext - Place name to look up, for example 'Berlin' or 'Springfield, Illinois'. The closest match is used. Leave blank if you are providing latitude and longitude instead.
- Latitude
latitudenumber - Latitude of the location (-90 to 90). Use with longitude instead of a place name for an exact point.From -90 to 90.
- Longitude
longitudenumber - Longitude of the location (-180 to 180). Use with latitude instead of a place name for an exact point. Locations in the Americas take a negative longitude.From -180 to 180.
- Variables
variablestext - Which readings to track across runs. Each one is asked for once per earlier run, so a short list keeps the response readable.One or more of:
temperature_2m(Temperature (2 m)),relative_humidity_2m(Relative humidity (2 m)),dew_point_2m(Dewpoint (2 m)),apparent_temperature(Apparent temperature),precipitation_probability(Precipitation probability),precipitation(Precipitation (rain + showers + snow)),rain,showers,snowfall,snow_depth(Snow depth), and 21 more. Default:["temperature_2m"]. - Additional variables
additional_variablestext - Comma-separated Open-Meteo variable names to request on top of the ones ticked above, for example 'soil_temperature_0cm' or 'temperature_850hPa'. See the Open-Meteo docs for the full list.
- Runs to look back
previous_daysnumber - How many days of earlier forecasts to set beside the current one, from 1 to 7. Defaults to 3.From 1 to 7. Default:
3. - Forecast days
forecast_daysnumber - How many days ahead to forecast, from 1 to 16. Defaults to 7.From 1 to 16. Default:
7. - Past days
past_daysnumber - How many days of already-issued forecasts to prepend, from 0 to 92. Defaults to 0. For measured weather further back, use the 'Get historical weather' action instead.From 0 to 92. Default:
0. - Temperature unit
temperature_unittext - Unit for every temperature in the response. Defaults to Celsius.One of:
celsius(Celsius (°C)),fahrenheit(Fahrenheit (°F)). Default:celsius. - Wind speed unit
wind_speed_unittext - Unit for every wind speed in the response. Defaults to km/h.One of:
kmh(Kilometres per hour (km/h)),ms(Metres per second (m/s)),mph(Miles per hour (mph)),kn(Knots (kn)). Default:kmh. - Precipitation unit
precipitation_unittext - Unit for rain, showers, and snowfall amounts. Defaults to millimetres.One of:
mm(Millimetres (mm)),inch(Inches (in)). Default:mm. - Time zone
timezonetext - Time zone the timestamps are returned in, as a time-zone database name such as Europe/Berlin. Defaults to 'auto', which uses the local time zone of the location: the right choice for daily rows, which would otherwise be split across the wrong days.Default:
auto. - Weather models
modelstext - Comma-separated weather models to use, for example 'ecmwf_ifs025,gfs_seamless'. Leave blank to let Open-Meteo pick the highest-resolution model available for the location.
Outputs
countnumber- Number of rows returned
countrytext- Country of the resolved place
driftlist- How far the forecast has moved, one entry per variable
elevationnumber- Elevation of the grid-cell, in metres above sea level
entrieslistlatitudenumber- Latitude of the weather grid-cell used
locationtext- Resolved place name, or empty when coordinates were given
longitudenumber- Longitude of the weather grid-cell used
previous_daysnumber- How many earlier runs were set beside the current one
timezonetext- Time zone the timestamps are in, e.g. 'Europe/Berlin'
timezone_abbreviationtext- Abbreviation of that time zone, e.g. 'CEST'
unitsobject- Unit of each requested variable, keyed by variable name
utc_offset_secondsnumber- Offset of that time zone from UTC, in seconds
variableslist- Variables that were tracked across runs
Example output
{
"count": 1,
"country": "Germany",
"drift": [
{
"compared_against": "temperature_2m_previous_day3",
"hours_compared": 48,
"largest_change": 2.9,
"mean_change": 0.8542,
"variable": "temperature_2m"
}
],
"elevation": 38.0,
"entries": [
{
"temperature_2m": 15.3,
"temperature_2m_previous_day1": 15.6,
"temperature_2m_previous_day2": 16.1,
"temperature_2m_previous_day3": 14.8,
"time": "2026-09-17T00:00"
}
],
"latitude": 52.52,
"location": "Berlin",
"longitude": 13.419998,
"previous_days": 3,
"timezone": "Europe/Berlin",
"timezone_abbreviation": "GMT+2",
"units": {
"temperature_2m": "\u00b0C",
"temperature_2m_previous_day1": "\u00b0C",
"temperature_2m_previous_day2": "\u00b0C",
"temperature_2m_previous_day3": "\u00b0C"
},
"utc_offset_seconds": 7200,
"variables": [
"temperature_2m"
]
}Get 15 minute forecast
Get a forecast in 15 minute steps instead of whole hours, for the next few hours or the next few days. Use it when an hourly row is too coarse to act on: when a shower arrives, when a gust hits, when it is worth moving something indoors. Where a high resolution national model covers the location the steps are genuinely 15 minutes apart; elsewhere the hourly values are interpolated.
Inputs
- Location
locationtext - Place name to look up, for example 'Berlin' or 'Springfield, Illinois'. The closest match is used. Leave blank if you are providing latitude and longitude instead.
- Latitude
latitudenumber - Latitude of the location (-90 to 90). Use with longitude instead of a place name for an exact point.From -90 to 90.
- Longitude
longitudenumber - Longitude of the location (-180 to 180). Use with latitude instead of a place name for an exact point. Locations in the Americas take a negative longitude.From -180 to 180.
- Variables
variablestext - Which readings to return for each 15 minute step.One or more of:
temperature_2m(Temperature (2 m)),relative_humidity_2m(Relative humidity (2 m)),dew_point_2m(Dewpoint (2 m)),apparent_temperature(Apparent temperature),precipitation,rain,snowfall,snowfall_height(Snowfall height),freezing_level_height(Freezing level height),sunshine_duration(Sunshine duration), and 9 more. Default:["temperature_2m", "precipitation", "weather_code", "wind_speed_10m"]. - Additional variables
additional_variablestext - Comma-separated Open-Meteo variable names to request on top of the ones ticked above, for example 'soil_temperature_0cm' or 'temperature_850hPa'. See the Open-Meteo docs for the full list.
- Steps ahead
forecast_stepsnumber - How many 15 minute steps to return, from 1 to 1536. Four steps is an hour, 96 is a day. Defaults to 48, which is 12 hours.From 1 to 1536. Default:
48. - Steps behind
past_stepsnumber - How many 15 minute steps of already issued forecast to put before now, from 0 to 1536. Defaults to 0.From 0 to 1536. Default:
0. - Temperature unit
temperature_unittext - Unit for every temperature in the response. Defaults to Celsius.One of:
celsius(Celsius (°C)),fahrenheit(Fahrenheit (°F)). Default:celsius. - Wind speed unit
wind_speed_unittext - Unit for every wind speed in the response. Defaults to km/h.One of:
kmh(Kilometres per hour (km/h)),ms(Metres per second (m/s)),mph(Miles per hour (mph)),kn(Knots (kn)). Default:kmh. - Precipitation unit
precipitation_unittext - Unit for rain, showers, and snowfall amounts. Defaults to millimetres.One of:
mm(Millimetres (mm)),inch(Inches (in)). Default:mm. - Time zone
timezonetext - Time zone the timestamps are returned in, as a time-zone database name such as Europe/Berlin. Defaults to 'auto', which uses the local time zone of the location: the right choice for daily rows, which would otherwise be split across the wrong days.Default:
auto. - Weather models
modelstext - Comma-separated weather models to use, for example 'ecmwf_ifs025,gfs_seamless'. Leave blank to let Open-Meteo pick the highest-resolution model available for the location.
- Grid cell
cell_selectiontext - Which grid cell to read when the point falls between two. 'Land' is the default and prefers a cell at a similar elevation, which matters in the mountains. 'Nearest cell at sea' snaps a coastal point onto the water, which is what a marine forecast for a harbour needs.One of:
land(Nearest cell on land),sea(Nearest cell at sea),nearest(Nearest cell of any kind). Default:land.
Outputs
countnumber- Number of rows returned
countrytext- Country of the resolved place
elevationnumber- Elevation of the grid-cell, in metres above sea level
entrieslistlatitudenumber- Latitude of the weather grid-cell used
locationtext- Resolved place name, or empty when coordinates were given
longitudenumber- Longitude of the weather grid-cell used
timezonetext- Time zone the timestamps are in, e.g. 'Europe/Berlin'
timezone_abbreviationtext- Abbreviation of that time zone, e.g. 'CEST'
unitsobject- Unit of each requested variable, keyed by variable name
utc_offset_secondsnumber- Offset of that time zone from UTC, in seconds
Example output
{
"count": 2,
"country": "Germany",
"elevation": 38.0,
"entries": [
{
"conditions": "Partly cloudy",
"precipitation": 0.0,
"temperature_2m": 24.3,
"time": "2026-07-24T13:15",
"weather_code": 2,
"wind_speed_10m": 11.2
},
{
"conditions": "Slight rain showers",
"precipitation": 0.4,
"temperature_2m": 24.6,
"time": "2026-07-24T13:30",
"weather_code": 80,
"wind_speed_10m": 12.8
}
],
"latitude": 52.52,
"location": "Berlin",
"longitude": 13.419998,
"timezone": "Europe/Berlin",
"timezone_abbreviation": "GMT+2",
"units": {
"precipitation": "mm",
"temperature_2m": "\u00b0C",
"weather_code": "wmo code",
"wind_speed_10m": "km/h"
},
"utc_offset_seconds": 7200
}Get a single model run
Read one named run of one weather model exactly as it was issued. Every other forecast action answers with the freshest data available for each hour, stitched across runs; this one pins a single computation, so the whole series is internally consistent. That matters when comparing runs against each other or reproducing a number someone quoted. Runs start on fixed hours, usually 00:00, 06:00, 12:00 and 18:00 UTC.
Inputs
- Run start time
runtextRequired - When the run was initialised, as YYYY-MM-DDTHH:MM in UTC. Must line up with a real run cycle for the model.
- Model
modelstextRequired - Which model's run to read. Required: a run belongs to one model. Note that asking for a variable worked out from an ensemble, such as precipitation probability, switches the request to that model's ensemble, whose single runs are not kept.
- Location
locationtext - Place name to look up, for example 'Berlin' or 'Springfield, Illinois'. The closest match is used. Leave blank if you are providing latitude and longitude instead.
- Latitude
latitudenumber - Latitude of the location (-90 to 90). Use with longitude instead of a place name for an exact point.From -90 to 90.
- Longitude
longitudenumber - Longitude of the location (-180 to 180). Use with latitude instead of a place name for an exact point. Locations in the Americas take a negative longitude.From -180 to 180.
- Hourly variables
hourly_variablestext - Which readings to return hour by hour. Used when nothing at all is ticked.One or more of:
temperature_2m(Temperature (2 m)),relative_humidity_2m(Relative humidity (2 m)),dew_point_2m(Dewpoint (2 m)),apparent_temperature(Apparent temperature),precipitation_probability(Precipitation probability),precipitation(Precipitation (rain + showers + snow)),rain,showers,snowfall,snow_depth(Snow depth), and 21 more. Default:["temperature_2m", "precipitation", "weather_code", "cloud_cover", "wind_speed_10m"]. - Daily variables
daily_variablestext - Which readings to summarise per day.One or more of:
weather_code(Weather code),temperature_2m_max(Maximum temperature (2 m)),temperature_2m_min(Minimum temperature (2 m)),apparent_temperature_max(Maximum apparent temperature),apparent_temperature_min(Minimum apparent temperature),sunrise,sunset,daylight_duration(Daylight duration),sunshine_duration(Sunshine duration),uv_index_max(UV index max), and 12 more. - Additional hourly variables
additional_hourly_variablestext - Comma-separated Open-Meteo variable names to request on top of the ones ticked above, for example 'soil_temperature_0cm' or 'temperature_850hPa'. See the Open-Meteo docs for the full list.
- Temperature unit
temperature_unittext - Unit for every temperature in the response. Defaults to Celsius.One of:
celsius(Celsius (°C)),fahrenheit(Fahrenheit (°F)). Default:celsius. - Wind speed unit
wind_speed_unittext - Unit for every wind speed in the response. Defaults to km/h.One of:
kmh(Kilometres per hour (km/h)),ms(Metres per second (m/s)),mph(Miles per hour (mph)),kn(Knots (kn)). Default:kmh. - Precipitation unit
precipitation_unittext - Unit for rain, showers, and snowfall amounts. Defaults to millimetres.One of:
mm(Millimetres (mm)),inch(Inches (in)). Default:mm. - Time zone
timezonetext - Time zone the timestamps are returned in, as a time-zone database name such as Europe/Berlin. Defaults to 'auto', which uses the local time zone of the location: the right choice for daily rows, which would otherwise be split across the wrong days.Default:
auto.
Outputs
countrytext- Country of the resolved place
dailyobject- One row per timestep, each carrying every requested variable, plus the units the values are in
elevationnumber- Elevation of the grid-cell, in metres above sea level
hourlyobject- One row per timestep, each carrying every requested variable, plus the units the values are in
latitudenumber- Latitude of the weather grid-cell used
locationtext- Resolved place name, or empty when coordinates were given
longitudenumber- Longitude of the weather grid-cell used
modelslist- Model the run belongs to
runtext- Run start time that was read
timezonetext- Time zone the timestamps are in, e.g. 'Europe/Berlin'
timezone_abbreviationtext- Abbreviation of that time zone, e.g. 'CEST'
utc_offset_secondsnumber- Offset of that time zone from UTC, in seconds
Example output
{
"country": "Germany",
"daily": {
"count": 0,
"entries": [],
"units": {}
},
"elevation": 38.0,
"hourly": {
"count": 1,
"entries": [
{
"cloud_cover": 18,
"conditions": "Mainly clear",
"precipitation": 0.0,
"temperature_2m": 16.0,
"time": "2026-09-14T00:00",
"weather_code": 1,
"wind_speed_10m": 9.4
}
],
"units": {
"precipitation": "mm",
"temperature_2m": "\u00b0C",
"wind_speed_10m": "km/h"
}
},
"latitude": 52.54833,
"location": "Berlin",
"longitude": 13.407822,
"models": [
"ecmwf_ifs"
],
"run": "2026-09-14T00:00",
"timezone": "Europe/Berlin",
"timezone_abbreviation": "GMT+2",
"utc_offset_seconds": 7200
}Get air quality
Get air-quality indices and pollutant levels for a place: European and US AQI, particulates, gases, dust, UV index, and (in Europe) pollen, now and, optionally, hour by hour.
Inputs
- Location
locationtext - Place name to look up, for example 'Berlin' or 'Springfield, Illinois'. The closest match is used. Leave blank if you are providing latitude and longitude instead.
- Latitude
latitudenumber - Latitude of the location (-90 to 90). Use with longitude instead of a place name for an exact point.From -90 to 90.
- Longitude
longitudenumber - Longitude of the location (-180 to 180). Use with latitude instead of a place name for an exact point. Locations in the Americas take a negative longitude.From -180 to 180.
- Current variables
variablestext - Which current readings to return. Defaults to both AQI scales plus PM10 and PM2.5.One or more of:
european_aqi(European AQI),us_aqi(United States AQI),pm10(Particulate matter PM10),pm2_5(Particulate matter PM2.5),carbon_monoxide(Carbon monoxide (CO)),nitrogen_dioxide(Nitrogen dioxide (NO₂)),sulphur_dioxide(Sulphur dioxide (SO₂)),ozone(Ozone (O₃)),dust,aerosol_optical_depth(Aerosol optical depth), and 9 more. Default:["european_aqi", "us_aqi", "pm10", "pm2_5"]. - Hourly variables
hourly_variablestext - Which readings to also return hour by hour. Leave empty for current conditions only.One or more of:
european_aqi(European AQI),us_aqi(United States AQI),pm10(Particulate matter PM10),pm2_5(Particulate matter PM2.5),carbon_monoxide(Carbon monoxide (CO)),nitrogen_dioxide(Nitrogen dioxide (NO₂)),sulphur_dioxide(Sulphur dioxide (SO₂)),ozone(Ozone (O₃)),dust,aerosol_optical_depth(Aerosol optical depth), and 9 more. - Additional variables
additional_variablestext - Comma-separated Open-Meteo variable names to request on top of the ones ticked above, for example 'soil_temperature_0cm' or 'temperature_850hPa'. See the Open-Meteo docs for the full list.
- Forecast days
forecast_daysnumber - How many days of hourly air quality to forecast, from 1 to 7. Defaults to 5.From 1 to 7. Default:
5. - Past days
past_daysnumber - How many days of already-issued forecasts to prepend, from 0 to 92. Defaults to 0. For measured weather further back, use the 'Get historical weather' action instead.From 0 to 92. Default:
0. - Source model
domainstext - Which CAMS model to read from. Defaults to combining both, which uses the higher-resolution European model where it is available.One of:
auto(Combine both (recommended)),cams_europe(CAMS Europe (11 km)),cams_global(CAMS global (40 km)). Default:auto. - Time zone
timezonetext - Time zone the timestamps are returned in, as a time-zone database name such as Europe/Berlin. Defaults to 'auto', which uses the local time zone of the location: the right choice for daily rows, which would otherwise be split across the wrong days.Default:
auto.
Outputs
countrytext- Country of the resolved place
elevationnumber- Elevation of the grid-cell, in metres above sea level
hourlyobject- One row per timestep, each carrying every requested variable, plus the units the values are in
latitudenumber- Latitude of the weather grid-cell used
locationtext- Resolved place name, or empty when coordinates were given
longitudenumber- Longitude of the weather grid-cell used
timetext- Timestamp the current readings are valid for
timezonetext- Time zone the timestamps are in, e.g. 'Europe/Berlin'
timezone_abbreviationtext- Abbreviation of that time zone, e.g. 'CEST'
unitsobject- Unit of each reading, keyed by variable name
utc_offset_secondsnumber- Offset of that time zone from UTC, in seconds
valuesobject- Each requested reading, keyed by variable name
Example output
{
"country": "Germany",
"elevation": 38.0,
"hourly": {
"count": 0,
"entries": [],
"units": {}
},
"latitude": 52.5,
"location": "Berlin",
"longitude": 13.4,
"time": "2026-07-24T13:00",
"timezone": "Europe/Berlin",
"timezone_abbreviation": "GMT+2",
"units": {
"european_aqi": "EAQI",
"pm10": "\u03bcg/m\u00b3",
"pm2_5": "\u03bcg/m\u00b3",
"us_aqi": "USAQI"
},
"utc_offset_seconds": 7200,
"values": {
"european_aqi": 31,
"pm10": 14.6,
"pm2_5": 9.8,
"us_aqi": 42
}
}Get climate projection
Read downscaled IPCC climate model output for any date from 1950 to 2050, at a resolution of around 25 km. This is not a forecast: a date in 2043 says what the model expects an average day of that season to look like by then, under a high emissions scenario. Use it to compare a future decade against a past one for the same place. Naming more than one model returns a column per model so they can be set side by side.
Inputs
- Start date
start_datetextRequired - First day to return, as YYYY-MM-DD, anywhere from 1950 to 2050.
- End date
end_datetextRequired - Last day to return, as YYYY-MM-DD.
- Location
locationtext - Place name to look up, for example 'Berlin' or 'Springfield, Illinois'. The closest match is used. Leave blank if you are providing latitude and longitude instead.
- Latitude
latitudenumber - Latitude of the location (-90 to 90). Use with longitude instead of a place name for an exact point.From -90 to 90.
- Longitude
longitudenumber - Longitude of the location (-180 to 180). Use with latitude instead of a place name for an exact point. Locations in the Americas take a negative longitude.From -180 to 180.
- Variables
variablestext - Which projected readings to return per day.One or more of:
temperature_2m_max(Maximum temperature (2 m)),temperature_2m_min(Minimum temperature (2 m)),temperature_2m_mean(Mean temperature (2 m)),precipitation_sum(Precipitation sum),rain_sum(Rain sum),snowfall_sum(Snowfall sum),relative_humidity_2m_mean(Mean relative humidity (2 m)),relative_humidity_2m_max(Maximum relative humidity (2 m)),relative_humidity_2m_min(Minimum relative humidity (2 m)),dew_point_2m_mean(Mean dewpoint (2 m)), and 14 more. Default:["temperature_2m_max", "temperature_2m_min", "temperature_2m_mean", "precipitation_sum"]. - Additional variables
additional_variablestext - Comma-separated Open-Meteo variable names to request on top of the ones ticked above, for example 'soil_temperature_0cm' or 'temperature_850hPa'. See the Open-Meteo docs for the full list.
- Climate models
modelstext - Which CMIP6 models to read. Leave blank to use all of them. Not every model covers every part of the world, and the response says which of the ones asked for had data for the location.One or more of:
CMCC_CM2_VHR4(CMCC CM2 VHR4 (30 km)),FGOALS_f3_H(FGOALS f3 H (28 km)),HiRAM_SIT_HR(HiRAM SIT HR (25 km)),MRI_AGCM3_2_S(MRI AGCM3.2 S (20 km)),EC_Earth3P_HR(EC Earth3P HR (29 km)),MPI_ESM1_2_XR(MPI ESM1.2 XR (51 km)),NICAM16_8S(NICAM16 8S (31 km)). - Turn off bias correction
disable_bias_correctiontrue/false - Return the raw model output instead of output corrected against measured weather for the location. Leave off unless you specifically want the raw series.Default:
false. - Temperature unit
temperature_unittext - Unit for every temperature in the response. Defaults to Celsius.One of:
celsius(Celsius (°C)),fahrenheit(Fahrenheit (°F)). Default:celsius. - Wind speed unit
wind_speed_unittext - Unit for every wind speed in the response. Defaults to km/h.One of:
kmh(Kilometres per hour (km/h)),ms(Metres per second (m/s)),mph(Miles per hour (mph)),kn(Knots (kn)). Default:kmh. - Precipitation unit
precipitation_unittext - Unit for rain, showers, and snowfall amounts. Defaults to millimetres.One of:
mm(Millimetres (mm)),inch(Inches (in)). Default:mm.
Outputs
countnumber- Number of rows returned
countrytext- Country of the resolved place
elevationnumber- Elevation of the grid-cell, in metres above sea level
end_datetext- Last day returned
entrieslistlatitudenumber- Latitude of the weather grid-cell used
locationtext- Resolved place name, or empty when coordinates were given
longitudenumber- Longitude of the weather grid-cell used
models_reportinglist- When more than one model was asked for, the ones that had data for this location
models_without_datalist- When more than one model was asked for, the ones that do not reach this location
start_datetext- First day returned
timezonetext- Time zone the timestamps are in, e.g. 'Europe/Berlin'
timezone_abbreviationtext- Abbreviation of that time zone, e.g. 'CEST'
unitsobject- Unit of each requested variable, keyed by variable name
utc_offset_secondsnumber- Offset of that time zone from UTC, in seconds
Example output
{
"count": 2,
"country": "Germany",
"elevation": 38.0,
"end_date": "2045-07-02",
"entries": [
{
"precipitation_sum": 1.72,
"temperature_2m_max": 24.3,
"temperature_2m_mean": 18.6,
"temperature_2m_min": 13.2,
"time": "2045-07-01"
},
{
"precipitation_sum": 0.0,
"temperature_2m_max": 26.1,
"temperature_2m_mean": 20.2,
"temperature_2m_min": 14.8,
"time": "2045-07-02"
}
],
"latitude": 52.5,
"location": "Berlin",
"longitude": 13.400009,
"start_date": "2045-07-01",
"timezone": "GMT",
"timezone_abbreviation": "GMT",
"units": {
"precipitation_sum": "mm",
"temperature_2m_max": "\u00b0C",
"temperature_2m_mean": "\u00b0C",
"temperature_2m_min": "\u00b0C"
},
"utc_offset_seconds": 0
}Get current weather
Get current conditions for a place or an exact coordinate: temperature, feels-like, humidity, precipitation, wind, cloud cover, and a readable description of the weather code.
Inputs
- Location
locationtext - Place name to look up, for example 'Berlin' or 'Springfield, Illinois'. The closest match is used. Leave blank if you are providing latitude and longitude instead.
- Latitude
latitudenumber - Latitude of the location (-90 to 90). Use with longitude instead of a place name for an exact point.From -90 to 90.
- Longitude
longitudenumber - Longitude of the location (-180 to 180). Use with latitude instead of a place name for an exact point. Locations in the Americas take a negative longitude.From -180 to 180.
- Variables
variablestext - Which readings to return. Defaults to a general set covering temperature, precipitation, wind, and sky.One or more of:
temperature_2m(Temperature (2 m)),relative_humidity_2m(Relative humidity (2 m)),apparent_temperature(Apparent temperature),is_day(Is day or night),precipitation,rain,showers,snowfall,weather_code(Weather code),cloud_cover(Cloud cover total), and 5 more. Default:["temperature_2m", "apparent_temperature", "relative_humidity_2m", "precipitation", "weather_code", "cloud_cover", "wind_speed_10m", "wind_direction_10m", "is_day"]. - Additional variables
additional_variablestext - Comma-separated Open-Meteo variable names to request on top of the ones ticked above, for example 'soil_temperature_0cm' or 'temperature_850hPa'. See the Open-Meteo docs for the full list.
- Temperature unit
temperature_unittext - Unit for every temperature in the response. Defaults to Celsius.One of:
celsius(Celsius (°C)),fahrenheit(Fahrenheit (°F)). Default:celsius. - Wind speed unit
wind_speed_unittext - Unit for every wind speed in the response. Defaults to km/h.One of:
kmh(Kilometres per hour (km/h)),ms(Metres per second (m/s)),mph(Miles per hour (mph)),kn(Knots (kn)). Default:kmh. - Precipitation unit
precipitation_unittext - Unit for rain, showers, and snowfall amounts. Defaults to millimetres.One of:
mm(Millimetres (mm)),inch(Inches (in)). Default:mm. - Time zone
timezonetext - Time zone the timestamps are returned in, as a time-zone database name such as Europe/Berlin. Defaults to 'auto', which uses the local time zone of the location: the right choice for daily rows, which would otherwise be split across the wrong days.Default:
auto. - Weather models
modelstext - Comma-separated weather models to use, for example 'ecmwf_ifs025,gfs_seamless'. Leave blank to let Open-Meteo pick the highest-resolution model available for the location.
Outputs
conditionstext- Readable WMO weather description, e.g. 'Partly cloudy'
countrytext- Country of the resolved place
elevationnumber- Elevation of the grid-cell, in metres above sea level
intervalnumber- Length of the window the readings cover, in seconds
latitudenumber- Latitude of the weather grid-cell used
locationtext- Resolved place name, or empty when coordinates were given
longitudenumber- Longitude of the weather grid-cell used
timetext- Timestamp the readings are valid for
timezonetext- Time zone the timestamps are in, e.g. 'Europe/Berlin'
timezone_abbreviationtext- Abbreviation of that time zone, e.g. 'CEST'
unitsobject- Unit of each reading, keyed by variable name
utc_offset_secondsnumber- Offset of that time zone from UTC, in seconds
valuesobject- Each requested reading, keyed by variable name
Example output
{
"conditions": "Partly cloudy",
"country": "Germany",
"elevation": 38.0,
"interval": 900,
"latitude": 52.52,
"location": "Berlin",
"longitude": 13.419998,
"time": "2026-07-24T13:15",
"timezone": "Europe/Berlin",
"timezone_abbreviation": "GMT+2",
"units": {
"apparent_temperature": "\u00b0C",
"cloud_cover": "%",
"is_day": "",
"precipitation": "mm",
"relative_humidity_2m": "%",
"temperature_2m": "\u00b0C",
"weather_code": "wmo code",
"wind_direction_10m": "\u00b0",
"wind_speed_10m": "km/h"
},
"utc_offset_seconds": 7200,
"values": {
"apparent_temperature": 24.9,
"cloud_cover": 41,
"is_day": 1,
"precipitation": 0.0,
"relative_humidity_2m": 52,
"temperature_2m": 24.3,
"weather_code": 2,
"wind_direction_10m": 243,
"wind_speed_10m": 11.2
}
}Get daily forecast
Get a day-by-day forecast for up to 16 days: highs and lows, precipitation totals and chance, wind, UV, and sunrise and sunset, returned as one row per day.
Inputs
- Location
locationtext - Place name to look up, for example 'Berlin' or 'Springfield, Illinois'. The closest match is used. Leave blank if you are providing latitude and longitude instead.
- Latitude
latitudenumber - Latitude of the location (-90 to 90). Use with longitude instead of a place name for an exact point.From -90 to 90.
- Longitude
longitudenumber - Longitude of the location (-180 to 180). Use with latitude instead of a place name for an exact point. Locations in the Americas take a negative longitude.From -180 to 180.
- Variables
variablestext - Which daily aggregations to return. Defaults to the weather code, highs and lows, precipitation, wind, and sunrise and sunset.One or more of:
weather_code(Weather code),temperature_2m_max(Maximum temperature (2 m)),temperature_2m_min(Minimum temperature (2 m)),apparent_temperature_max(Maximum apparent temperature),apparent_temperature_min(Minimum apparent temperature),sunrise,sunset,daylight_duration(Daylight duration),sunshine_duration(Sunshine duration),uv_index_max(UV index max), and 12 more. Default:["weather_code", "temperature_2m_max", "temperature_2m_min", "precipitation_sum", "precipitation_probability_max", "wind_speed_10m_max", "sunrise", "sunset"]. - Additional variables
additional_variablestext - Comma-separated Open-Meteo variable names to request on top of the ones ticked above, for example 'soil_temperature_0cm' or 'temperature_850hPa'. See the Open-Meteo docs for the full list.
- Forecast days
forecast_daysnumber - How many days ahead to forecast, from 1 to 16. Defaults to 7.From 1 to 16. Default:
7. - Past days
past_daysnumber - How many days of already-issued forecasts to prepend, from 0 to 92. Defaults to 0. For measured weather further back, use the 'Get historical weather' action instead.From 0 to 92. Default:
0. - Temperature unit
temperature_unittext - Unit for every temperature in the response. Defaults to Celsius.One of:
celsius(Celsius (°C)),fahrenheit(Fahrenheit (°F)). Default:celsius. - Wind speed unit
wind_speed_unittext - Unit for every wind speed in the response. Defaults to km/h.One of:
kmh(Kilometres per hour (km/h)),ms(Metres per second (m/s)),mph(Miles per hour (mph)),kn(Knots (kn)). Default:kmh. - Precipitation unit
precipitation_unittext - Unit for rain, showers, and snowfall amounts. Defaults to millimetres.One of:
mm(Millimetres (mm)),inch(Inches (in)). Default:mm. - Time zone
timezonetext - Time zone the timestamps are returned in, as a time-zone database name such as Europe/Berlin. Defaults to 'auto', which uses the local time zone of the location: the right choice for daily rows, which would otherwise be split across the wrong days.Default:
auto. - Weather models
modelstext - Comma-separated weather models to use, for example 'ecmwf_ifs025,gfs_seamless'. Leave blank to let Open-Meteo pick the highest-resolution model available for the location.
Outputs
countnumber- Number of rows returned
countrytext- Country of the resolved place
elevationnumber- Elevation of the grid-cell, in metres above sea level
entrieslistlatitudenumber- Latitude of the weather grid-cell used
locationtext- Resolved place name, or empty when coordinates were given
longitudenumber- Longitude of the weather grid-cell used
timezonetext- Time zone the timestamps are in, e.g. 'Europe/Berlin'
timezone_abbreviationtext- Abbreviation of that time zone, e.g. 'CEST'
unitsobject- Unit of each requested variable, keyed by variable name
utc_offset_secondsnumber- Offset of that time zone from UTC, in seconds
Example output
{
"count": 2,
"country": "Germany",
"elevation": 38.0,
"entries": [
{
"conditions": "Slight rain",
"precipitation_probability_max": 71,
"precipitation_sum": 4.2,
"sunrise": "2026-07-24T05:11",
"sunset": "2026-07-24T21:06",
"temperature_2m_max": 25.1,
"temperature_2m_min": 15.3,
"time": "2026-07-24",
"weather_code": 61,
"wind_speed_10m_max": 18.4
},
{
"conditions": "Overcast",
"precipitation_probability_max": 12,
"precipitation_sum": 0.0,
"sunrise": "2026-07-25T05:13",
"sunset": "2026-07-25T21:04",
"temperature_2m_max": 22.7,
"temperature_2m_min": 14.1,
"time": "2026-07-25",
"weather_code": 3,
"wind_speed_10m_max": 15.1
}
],
"latitude": 52.52,
"location": "Berlin",
"longitude": 13.419998,
"timezone": "Europe/Berlin",
"timezone_abbreviation": "GMT+2",
"units": {
"precipitation_probability_max": "%",
"precipitation_sum": "mm",
"sunrise": "iso8601",
"sunset": "iso8601",
"temperature_2m_max": "\u00b0C",
"temperature_2m_min": "\u00b0C",
"weather_code": "wmo code",
"wind_speed_10m_max": "km/h"
},
"utc_offset_seconds": 7200
}Get elevation
Look up how high the ground is at a place, or at up to 100 coordinates in one call. Heights come from the Copernicus digital elevation model on a 90 metre grid, in metres above sea level, and describe the terrain rather than anything standing on it. Paste a column of coordinates from a spreadsheet to profile a route or rank a list of sites.
Inputs
- Location
locationtext - Place name to look up, for example 'Berlin' or 'Springfield, Illinois'. The closest match is used. Leave blank if you are providing latitude and longitude instead.
- Latitude
latitudenumber - Latitude of the location (-90 to 90). Use with longitude instead of a place name for an exact point.From -90 to 90.
- Longitude
longitudenumber - Longitude of the location (-180 to 180). Use with latitude instead of a place name for an exact point. Locations in the Americas take a negative longitude.From -180 to 180.
- Many coordinates
coordinatestext - One 'latitude, longitude' pair per line, for looking up to 100 points at once. Semicolons work as separators too. Takes precedence over the single location fields above.
Outputs
countnumber- Number of points looked up
pointslist
Example output
{
"count": 2,
"points": [
{
"elevation": 1608.0,
"latitude": 46.01998,
"location": "Zermatt",
"longitude": 7.74863
},
{
"elevation": 8194.0,
"latitude": 27.99,
"location": "",
"longitude": 86.93
}
]
}Get ensemble forecast
Run the forecast dozens of times over from slightly different starting conditions and get back how far the runs disagree. Where the members agree the forecast is confident; where they scatter it is not, which is the difference between 'it will rain' and 'it might'. Each row gives the lowest, highest and mean member value per variable, so a workflow can act on the confidence rather than only on the headline number.
Inputs
- Location
locationtext - Place name to look up, for example 'Berlin' or 'Springfield, Illinois'. The closest match is used. Leave blank if you are providing latitude and longitude instead.
- Latitude
latitudenumber - Latitude of the location (-90 to 90). Use with longitude instead of a place name for an exact point.From -90 to 90.
- Longitude
longitudenumber - Longitude of the location (-180 to 180). Use with latitude instead of a place name for an exact point. Locations in the Americas take a negative longitude.From -180 to 180.
- Hourly variables
variablestext - Which readings to run the ensemble over, hourly.One or more of:
temperature_2m(Temperature (2 m)),relative_humidity_2m(Relative humidity (2 m)),dew_point_2m(Dewpoint (2 m)),apparent_temperature(Apparent temperature),precipitation,rain,snowfall,snow_depth(Snow depth),weather_code(Weather code),pressure_msl(Sea level pressure), and 13 more. Default:["temperature_2m", "precipitation"]. - Daily variables
daily_variablestext - Which readings to summarise per day.One or more of:
temperature_2m_mean(Mean temperature (2 m)),temperature_2m_max(Maximum temperature (2 m)),temperature_2m_min(Minimum temperature (2 m)),apparent_temperature_max(Maximum apparent temperature),apparent_temperature_min(Minimum apparent temperature),precipitation_sum(Precipitation sum),precipitation_hours(Precipitation hours),rain_sum(Rain sum),snowfall_sum(Snowfall sum),wind_speed_10m_max(Maximum wind speed (10 m)), and 6 more. - Additional variables
additional_variablestext - Comma-separated Open-Meteo variable names to request on top of the ones ticked above, for example 'soil_temperature_0cm' or 'temperature_850hPa'. See the Open-Meteo docs for the full list.
- Forecast days
forecast_daysnumber - How many days ahead to forecast, from 1 to 36. Defaults to 7. Ensembles run further out than a single forecast because the spread is the useful part at that range.From 1 to 36. Default:
7. - Past days
past_daysnumber - How many days of already-issued forecasts to prepend, from 0 to 92. Defaults to 0. For measured weather further back, use the 'Get historical weather' action instead.From 0 to 92. Default:
0. - Include every member
include_memberstrue/false - Return each ensemble member's own value alongside the summary. Off by default: fifty members across a long forecast is a very large response, and the lowest, highest and mean are what most workflows act on.Default:
false. - Time step
temporal_resolutiontext - How closely spaced the rows are. 'Native' keeps whatever the model produces. The others resample to that many hours, which is a way to cut a long series down to a readable size.One of:
native(As the model produces it),hourly_1(Every hour),hourly_3(Every 3 hours),hourly_6(Every 6 hours). Default:native. - Temperature unit
temperature_unittext - Unit for every temperature in the response. Defaults to Celsius.One of:
celsius(Celsius (°C)),fahrenheit(Fahrenheit (°F)). Default:celsius. - Wind speed unit
wind_speed_unittext - Unit for every wind speed in the response. Defaults to km/h.One of:
kmh(Kilometres per hour (km/h)),ms(Metres per second (m/s)),mph(Miles per hour (mph)),kn(Knots (kn)). Default:kmh. - Precipitation unit
precipitation_unittext - Unit for rain, showers, and snowfall amounts. Defaults to millimetres.One of:
mm(Millimetres (mm)),inch(Inches (in)). Default:mm. - Time zone
timezonetext - Time zone the timestamps are returned in, as a time-zone database name such as Europe/Berlin. Defaults to 'auto', which uses the local time zone of the location: the right choice for daily rows, which would otherwise be split across the wrong days.Default:
auto. - Ensemble models
modelstext - Comma-separated ensembles to run, for example 'ecmwf_ifs025_ensemble'. Leave blank to let Open-Meteo pick the best ensemble for the location. A model ending in '_ensemble_mean' returns the members already averaged, so it carries no spread. The regional ensembles answer with blanks outside their own area.
Outputs
countrytext- Country of the resolved place
dailyobject- One row per timestep. Each variable carries how far the ensemble members disagreed at that timestep rather than a single number
elevationnumber- Elevation of the grid-cell, in metres above sea level
hourlyobject- One row per timestep. Each variable carries how far the ensemble members disagreed at that timestep rather than a single number
latitudenumber- Latitude of the weather grid-cell used
locationtext- Resolved place name, or empty when coordinates were given
longitudenumber- Longitude of the weather grid-cell used
timezonetext- Time zone the timestamps are in, e.g. 'Europe/Berlin'
timezone_abbreviationtext- Abbreviation of that time zone, e.g. 'CEST'
utc_offset_secondsnumber- Offset of that time zone from UTC, in seconds
Example output
{
"country": "Germany",
"daily": {
"count": 0,
"entries": [],
"members": 0,
"units": {},
"variables": []
},
"elevation": 38.0,
"hourly": {
"count": 1,
"entries": [
{
"precipitation": {
"control": 0.0,
"maximum": 1.4,
"mean": 0.2133,
"members_reporting": 30,
"minimum": 0.0,
"range": 1.4
},
"temperature_2m": {
"control": 13.2,
"maximum": 13.9,
"mean": 13.1567,
"members_reporting": 30,
"minimum": 12.8,
"range": 1.1
},
"time": "2026-07-24T13:00"
}
],
"members": 30,
"units": {
"precipitation": "mm",
"temperature_2m": "\u00b0C"
},
"variables": [
"precipitation",
"temperature_2m"
]
},
"latitude": 52.5,
"location": "Berlin",
"longitude": 13.5,
"timezone": "Europe/Berlin",
"timezone_abbreviation": "GMT+2",
"utc_offset_seconds": 7200
}Get historical weather
Read the weather that actually happened over a past date range, from Open-Meteo's archive of reanalysis data going back to 1940. Returns daily aggregations, hourly readings, or both. The archive runs a few days behind; for the last day or two, use 'Past days' on a forecast action instead.
Inputs
- Start date
start_datedateRequired - First day of the range, in YYYY-MM-DD format.
- End date
end_datedateRequired - Last day of the range, in YYYY-MM-DD format.
- Location
locationtext - Place name to look up, for example 'Berlin' or 'Springfield, Illinois'. The closest match is used. Leave blank if you are providing latitude and longitude instead.
- Latitude
latitudenumber - Latitude of the location (-90 to 90). Use with longitude instead of a place name for an exact point.From -90 to 90.
- Longitude
longitudenumber - Longitude of the location (-180 to 180). Use with latitude instead of a place name for an exact point. Locations in the Americas take a negative longitude.From -180 to 180.
- Daily variables
daily_variablestext - Which daily aggregations to return, one row per day. Defaults to the weather code, highs and lows, and precipitation when no hourly variables are chosen either.One or more of:
weather_code(Weather code),temperature_2m_mean(Mean temperature (2 m)),temperature_2m_max(Maximum temperature (2 m)),temperature_2m_min(Minimum temperature (2 m)),apparent_temperature_mean(Mean apparent temperature),apparent_temperature_max(Maximum apparent temperature),apparent_temperature_min(Minimum apparent temperature),sunrise,sunset,daylight_duration(Daylight duration), and 10 more. Default:["weather_code", "temperature_2m_max", "temperature_2m_min", "precipitation_sum"]. - Hourly variables
hourly_variablestext - Which hourly readings to return, one row per hour. Leave empty for daily rows only; an hourly range of more than a few weeks gets large quickly.One or more of:
temperature_2m(Temperature (2 m)),relative_humidity_2m(Relative humidity (2 m)),dew_point_2m(Dewpoint (2 m)),apparent_temperature(Apparent temperature),precipitation(Precipitation (rain + snow)),rain,snowfall,snow_depth(Snow depth),weather_code(Weather code),pressure_msl(Sea level pressure), and 10 more. - Additional hourly variables
additional_hourly_variablestext - Comma-separated Open-Meteo variable names to request on top of the ones ticked above, for example 'soil_temperature_0cm' or 'temperature_850hPa'. See the Open-Meteo docs for the full list.
- Temperature unit
temperature_unittext - Unit for every temperature in the response. Defaults to Celsius.One of:
celsius(Celsius (°C)),fahrenheit(Fahrenheit (°F)). Default:celsius. - Wind speed unit
wind_speed_unittext - Unit for every wind speed in the response. Defaults to km/h.One of:
kmh(Kilometres per hour (km/h)),ms(Metres per second (m/s)),mph(Miles per hour (mph)),kn(Knots (kn)). Default:kmh. - Precipitation unit
precipitation_unittext - Unit for rain, showers, and snowfall amounts. Defaults to millimetres.One of:
mm(Millimetres (mm)),inch(Inches (in)). Default:mm. - Time zone
timezonetext - Time zone the timestamps are returned in, as a time-zone database name such as Europe/Berlin. Defaults to 'auto', which uses the local time zone of the location: the right choice for daily rows, which would otherwise be split across the wrong days.Default:
auto.
Outputs
countrytext- Country of the resolved place
dailyobject- One row per timestep, each carrying every requested variable, plus the units the values are in
elevationnumber- Elevation of the grid-cell, in metres above sea level
end_datetext- Last day of the range that was read
hourlyobject- One row per timestep, each carrying every requested variable, plus the units the values are in
latitudenumber- Latitude of the weather grid-cell used
locationtext- Resolved place name, or empty when coordinates were given
longitudenumber- Longitude of the weather grid-cell used
start_datetext- First day of the range that was read
timezonetext- Time zone the timestamps are in, e.g. 'Europe/Berlin'
timezone_abbreviationtext- Abbreviation of that time zone, e.g. 'CEST'
utc_offset_secondsnumber- Offset of that time zone from UTC, in seconds
Example output
{
"country": "Germany",
"daily": {
"count": 2,
"entries": [
{
"conditions": "Overcast",
"precipitation_sum": 0.3,
"temperature_2m_max": 5.4,
"temperature_2m_min": 1.2,
"time": "2026-01-01",
"weather_code": 3
},
{
"conditions": "Slight snow fall",
"precipitation_sum": 2.6,
"temperature_2m_max": 2.1,
"temperature_2m_min": -1.8,
"time": "2026-01-02",
"weather_code": 71
}
],
"units": {
"precipitation_sum": "mm",
"temperature_2m_max": "\u00b0C",
"temperature_2m_min": "\u00b0C",
"weather_code": "wmo code"
}
},
"elevation": 38.0,
"end_date": "2026-01-02",
"hourly": {
"count": 0,
"entries": [],
"units": {}
},
"latitude": 52.5,
"location": "Berlin",
"longitude": 13.4,
"start_date": "2026-01-01",
"timezone": "Europe/Berlin",
"timezone_abbreviation": "GMT+1",
"utc_offset_seconds": 3600
}Get hourly forecast
Get an hour-by-hour forecast for up to 16 days, returned as one row per hour so a workflow can loop over the timesteps.
Inputs
- Location
locationtext - Place name to look up, for example 'Berlin' or 'Springfield, Illinois'. The closest match is used. Leave blank if you are providing latitude and longitude instead.
- Latitude
latitudenumber - Latitude of the location (-90 to 90). Use with longitude instead of a place name for an exact point.From -90 to 90.
- Longitude
longitudenumber - Longitude of the location (-180 to 180). Use with latitude instead of a place name for an exact point. Locations in the Americas take a negative longitude.From -180 to 180.
- Variables
variablestext - Which variables to return for each hour. Defaults to temperature, precipitation and its probability, the weather code, and wind speed.One or more of:
temperature_2m(Temperature (2 m)),relative_humidity_2m(Relative humidity (2 m)),dew_point_2m(Dewpoint (2 m)),apparent_temperature(Apparent temperature),precipitation_probability(Precipitation probability),precipitation(Precipitation (rain + showers + snow)),rain,showers,snowfall,snow_depth(Snow depth), and 21 more. Default:["temperature_2m", "precipitation_probability", "precipitation", "weather_code", "wind_speed_10m"]. - Additional variables
additional_variablestext - Comma-separated Open-Meteo variable names to request on top of the ones ticked above, for example 'soil_temperature_0cm' or 'temperature_850hPa'. See the Open-Meteo docs for the full list.
- Forecast days
forecast_daysnumber - How many days ahead to forecast, from 1 to 16. Defaults to 7.From 1 to 16. Default:
7. - Past days
past_daysnumber - How many days of already-issued forecasts to prepend, from 0 to 92. Defaults to 0. For measured weather further back, use the 'Get historical weather' action instead.From 0 to 92. Default:
0. - Temperature unit
temperature_unittext - Unit for every temperature in the response. Defaults to Celsius.One of:
celsius(Celsius (°C)),fahrenheit(Fahrenheit (°F)). Default:celsius. - Wind speed unit
wind_speed_unittext - Unit for every wind speed in the response. Defaults to km/h.One of:
kmh(Kilometres per hour (km/h)),ms(Metres per second (m/s)),mph(Miles per hour (mph)),kn(Knots (kn)). Default:kmh. - Precipitation unit
precipitation_unittext - Unit for rain, showers, and snowfall amounts. Defaults to millimetres.One of:
mm(Millimetres (mm)),inch(Inches (in)). Default:mm. - Time zone
timezonetext - Time zone the timestamps are returned in, as a time-zone database name such as Europe/Berlin. Defaults to 'auto', which uses the local time zone of the location: the right choice for daily rows, which would otherwise be split across the wrong days.Default:
auto. - Weather models
modelstext - Comma-separated weather models to use, for example 'ecmwf_ifs025,gfs_seamless'. Leave blank to let Open-Meteo pick the highest-resolution model available for the location.
Outputs
countnumber- Number of rows returned
countrytext- Country of the resolved place
elevationnumber- Elevation of the grid-cell, in metres above sea level
entrieslistlatitudenumber- Latitude of the weather grid-cell used
locationtext- Resolved place name, or empty when coordinates were given
longitudenumber- Longitude of the weather grid-cell used
timezonetext- Time zone the timestamps are in, e.g. 'Europe/Berlin'
timezone_abbreviationtext- Abbreviation of that time zone, e.g. 'CEST'
unitsobject- Unit of each requested variable, keyed by variable name
utc_offset_secondsnumber- Offset of that time zone from UTC, in seconds
Example output
{
"count": 2,
"country": "Germany",
"elevation": 38.0,
"entries": [
{
"conditions": "Partly cloudy",
"precipitation": 0.0,
"precipitation_probability": 3,
"temperature_2m": 24.1,
"time": "2026-07-24T13:00",
"weather_code": 2,
"wind_speed_10m": 11.0
},
{
"conditions": "Overcast",
"precipitation": 0.0,
"precipitation_probability": 6,
"temperature_2m": 24.8,
"time": "2026-07-24T14:00",
"weather_code": 3,
"wind_speed_10m": 12.4
}
],
"latitude": 52.52,
"location": "Berlin",
"longitude": 13.419998,
"timezone": "Europe/Berlin",
"timezone_abbreviation": "GMT+2",
"units": {
"precipitation": "mm",
"precipitation_probability": "%",
"temperature_2m": "\u00b0C",
"weather_code": "wmo code",
"wind_speed_10m": "km/h"
},
"utc_offset_seconds": 7200
}Get location details
Look up one place by the id that a search returned, and get the fuller record: the postcodes it covers, the whole chain of administrative areas it sits in, its elevation, time zone and population. Use it as the second step after 'Search locations', once a particular match has been chosen.
Inputs
- Place id
idnumberRequired - The GeoNames id of the place, as returned in the 'id' field by the 'Search locations' action.At least 1.
Outputs
admin1text- First administrative level, e.g. the state
admin2text- Second administrative level, e.g. the county
admin3text- Third administrative level
admin4text- Fourth administrative level
countrytext- Country name
country_codetext- Two-letter country code, e.g. 'DE'
elevationnumber- Elevation in metres above sea level
feature_codetext- GeoNames feature code for the place
idnumber- GeoNames id of the place
latitudenumber- Latitude
longitudenumber- Longitude
nametext- Name of the place
populationnumber- Number of inhabitants
postcodeslist- Postcodes covering the place
timezonetext- Time zone of the place
Example output
{
"admin1": "State of Berlin",
"admin3": "Berlin, Stadt",
"admin4": "Berlin",
"country": "Germany",
"country_code": "DE",
"country_id": 2921044,
"elevation": 74.0,
"feature_code": "PPLC",
"id": 2950159,
"latitude": 52.52437,
"longitude": 13.41053,
"name": "Berlin",
"population": 3426354,
"postcodes": [
"10967",
"13347"
],
"timezone": "Europe/Berlin"
}Get marine forecast
Get sea conditions for a point on the water: wave height, direction and period, wind waves and swell separately, ocean currents, and sea surface temperature, now and by the hour and the day. The wave models only cover open water, so a point inland comes back as an error saying so rather than as a row of blanks.
Inputs
- Location
locationtext - Place name to look up, for example 'Berlin' or 'Springfield, Illinois'. The closest match is used. Leave blank if you are providing latitude and longitude instead.
- Latitude
latitudenumber - Latitude of the location (-90 to 90). Use with longitude instead of a place name for an exact point.From -90 to 90.
- Longitude
longitudenumber - Longitude of the location (-180 to 180). Use with latitude instead of a place name for an exact point. Locations in the Americas take a negative longitude.From -180 to 180.
- Current variables
variablestext - Which sea conditions to read for right now.One or more of:
wave_height(Wave height),wave_direction(Wave direction),wave_period(Wave period),wind_wave_height(Wind wave height),wind_wave_direction(Wind wave direction),wind_wave_period(Wind wave period),wind_wave_peak_period(Wind wave peak period),swell_wave_height(Swell wave height),swell_wave_direction(Swell wave direction),swell_wave_period(Swell wave period), and 4 more. - Hourly variables
hourly_variablestext - Which sea conditions to return hour by hour. Used when nothing at all is ticked, so the action still returns a useful forecast.One or more of:
wave_height(Wave height),wave_direction(Wave direction),wave_period(Wave period),wave_peak_period(Wave peak period),wind_wave_height(Wind wave height),wind_wave_direction(Wind wave direction),wind_wave_period(Wind wave period),wind_wave_peak_period(Wind wave peak period),swell_wave_height(Swell wave height),swell_wave_direction(Swell wave direction), and 12 more. Default:["wave_height", "wave_direction", "wave_period", "wind_wave_height", "swell_wave_height", "sea_surface_temperature"]. - Daily variables
daily_variablestext - Which sea conditions to summarise per day.One or more of:
wave_height_max(Maximum wave height),wave_direction_dominant(Dominant wave direction),wave_period_max(Maximum wave period),wind_wave_height_max(Maximum wind wave height),wind_wave_direction_dominant(Dominant wind wave direction),wind_wave_period_max(Maximum wind wave period),wind_wave_peak_period_max(Maximum wind wave peak period),swell_wave_height_max(Maximum swell wave height),swell_wave_direction_dominant(Dominant swell wave direction),swell_wave_period_max(Maximum swell wave period),swell_wave_peak_period_max(Maximum swell wave peak period). - Additional hourly variables
additional_hourly_variablestext - Comma-separated Open-Meteo variable names to request on top of the ones ticked above, for example 'soil_temperature_0cm' or 'temperature_850hPa'. See the Open-Meteo docs for the full list.
- Forecast days
forecast_daysnumber - How many days ahead to forecast, from 1 to 16. Defaults to 7.From 1 to 16. Default:
7. - Past days
past_daysnumber - How many days of already-issued forecasts to prepend, from 0 to 92. Defaults to 0. For measured weather further back, use the 'Get historical weather' action instead.From 0 to 92. Default:
0. - Wave height unit
length_unittext - Unit for wave and swell heights. Defaults to metres.One of:
metric(Metres (m)),imperial(Feet (ft)). Default:metric. - Time zone
timezonetext - Time zone the timestamps are returned in, as a time-zone database name such as Europe/Berlin. Defaults to 'auto', which uses the local time zone of the location: the right choice for daily rows, which would otherwise be split across the wrong days.Default:
auto. - Wave models
modelstext - Comma-separated wave models to use. Leave blank to let Open-Meteo pick the best one for the location.
- Grid cell
cell_selectiontext - Which grid cell to read when the point falls between two. 'Land' is the default and prefers a cell at a similar elevation, which matters in the mountains. 'Nearest cell at sea' snaps a coastal point onto the water, which is what a marine forecast for a harbour needs.One of:
land(Nearest cell on land),sea(Nearest cell at sea),nearest(Nearest cell of any kind). Default:land.
Outputs
countrytext- Country of the resolved place
dailyobject- One row per timestep, each carrying every requested variable, plus the units the values are in
elevationnumber- Elevation of the grid-cell, in metres above sea level
hourlyobject- One row per timestep, each carrying every requested variable, plus the units the values are in
intervalnumber- Length of the window the current readings cover, in seconds
latitudenumber- Latitude of the weather grid-cell used
locationtext- Resolved place name, or empty when coordinates were given
longitudenumber- Longitude of the weather grid-cell used
timetext- Timestamp the current readings are valid for
timezonetext- Time zone the timestamps are in, e.g. 'Europe/Berlin'
timezone_abbreviationtext- Abbreviation of that time zone, e.g. 'CEST'
unitsobject- Unit of each current reading
utc_offset_secondsnumber- Offset of that time zone from UTC, in seconds
valuesobject- Each current reading, keyed by variable name
Example output
{
"country": "",
"daily": {
"count": 1,
"entries": [
{
"time": "2026-07-24",
"wave_direction_dominant": 233,
"wave_height_max": 0.48,
"wave_period_max": 2.7
}
],
"units": {
"wave_height_max": "m"
}
},
"elevation": 0.0,
"hourly": {
"count": 1,
"entries": [
{
"sea_surface_temperature": 17.5,
"swell_wave_height": 0.16,
"time": "2026-07-24T13:00",
"wave_direction": 281,
"wave_height": 0.28,
"wave_period": 2.4,
"wind_wave_height": 0.22
}
],
"units": {
"sea_surface_temperature": "\u00b0C",
"wave_height": "m"
}
},
"interval": 900,
"latitude": 54.541664,
"location": "",
"longitude": 10.208344,
"time": "2026-07-24T13:15",
"timezone": "Europe/Berlin",
"timezone_abbreviation": "GMT+2",
"units": {
"wave_height": "m",
"wave_period": "s"
},
"utc_offset_seconds": 7200,
"values": {
"wave_height": 0.28,
"wave_period": 2.4
}
}Get past forecast
Read the forecast that was being issued on a past date, from the archive of model output kept since 2021. This is a different question from what the weather turned out to be: use it to score a forecast against the outcome, to reconstruct what a workflow would have seen on the day, or to settle an argument about what was predicted. For what actually happened, use 'Get historical weather' instead.
Inputs
- Start date
start_datetextRequired - First day to return, as YYYY-MM-DD.
- End date
end_datetextRequired - Last day to return, as YYYY-MM-DD.
- Location
locationtext - Place name to look up, for example 'Berlin' or 'Springfield, Illinois'. The closest match is used. Leave blank if you are providing latitude and longitude instead.
- Latitude
latitudenumber - Latitude of the location (-90 to 90). Use with longitude instead of a place name for an exact point.From -90 to 90.
- Longitude
longitudenumber - Longitude of the location (-180 to 180). Use with latitude instead of a place name for an exact point. Locations in the Americas take a negative longitude.From -180 to 180.
- Daily variables
daily_variablestext - Which forecast values to return per day. Used when nothing at all is ticked.One or more of:
weather_code(Weather code),temperature_2m_max(Maximum temperature (2 m)),temperature_2m_min(Minimum temperature (2 m)),apparent_temperature_max(Maximum apparent temperature),apparent_temperature_min(Minimum apparent temperature),sunrise,sunset,daylight_duration(Daylight duration),sunshine_duration(Sunshine duration),uv_index_max(UV index max), and 12 more. Default:["weather_code", "temperature_2m_max", "temperature_2m_min", "precipitation_sum"]. - Hourly variables
hourly_variablestext - Which forecast values to return hour by hour.One or more of:
temperature_2m(Temperature (2 m)),relative_humidity_2m(Relative humidity (2 m)),dew_point_2m(Dewpoint (2 m)),apparent_temperature(Apparent temperature),precipitation_probability(Precipitation probability),precipitation(Precipitation (rain + showers + snow)),rain,showers,snowfall,snow_depth(Snow depth), and 21 more. - Additional hourly variables
additional_hourly_variablestext - Comma-separated Open-Meteo variable names to request on top of the ones ticked above, for example 'soil_temperature_0cm' or 'temperature_850hPa'. See the Open-Meteo docs for the full list.
- Temperature unit
temperature_unittext - Unit for every temperature in the response. Defaults to Celsius.One of:
celsius(Celsius (°C)),fahrenheit(Fahrenheit (°F)). Default:celsius. - Wind speed unit
wind_speed_unittext - Unit for every wind speed in the response. Defaults to km/h.One of:
kmh(Kilometres per hour (km/h)),ms(Metres per second (m/s)),mph(Miles per hour (mph)),kn(Knots (kn)). Default:kmh. - Precipitation unit
precipitation_unittext - Unit for rain, showers, and snowfall amounts. Defaults to millimetres.One of:
mm(Millimetres (mm)),inch(Inches (in)). Default:mm. - Time zone
timezonetext - Time zone the timestamps are returned in, as a time-zone database name such as Europe/Berlin. Defaults to 'auto', which uses the local time zone of the location: the right choice for daily rows, which would otherwise be split across the wrong days.Default:
auto. - Weather models
modelstext - Comma-separated weather models to use, for example 'ecmwf_ifs025,gfs_seamless'. Leave blank to let Open-Meteo pick the highest-resolution model available for the location.
- Grid cell
cell_selectiontext - Which grid cell to read when the point falls between two. 'Land' is the default and prefers a cell at a similar elevation, which matters in the mountains. 'Nearest cell at sea' snaps a coastal point onto the water, which is what a marine forecast for a harbour needs.One of:
land(Nearest cell on land),sea(Nearest cell at sea),nearest(Nearest cell of any kind). Default:land.
Outputs
countrytext- Country of the resolved place
dailyobject- One row per timestep, each carrying every requested variable, plus the units the values are in
elevationnumber- Elevation of the grid-cell, in metres above sea level
end_datetext- Last day returned
hourlyobject- One row per timestep, each carrying every requested variable, plus the units the values are in
latitudenumber- Latitude of the weather grid-cell used
locationtext- Resolved place name, or empty when coordinates were given
longitudenumber- Longitude of the weather grid-cell used
start_datetext- First day returned
timezonetext- Time zone the timestamps are in, e.g. 'Europe/Berlin'
timezone_abbreviationtext- Abbreviation of that time zone, e.g. 'CEST'
utc_offset_secondsnumber- Offset of that time zone from UTC, in seconds
Example output
{
"country": "Germany",
"daily": {
"count": 2,
"entries": [
{
"conditions": "Overcast",
"precipitation_sum": 0.0,
"temperature_2m_max": 22.3,
"temperature_2m_min": 13.3,
"time": "2026-06-01",
"weather_code": 3
},
{
"conditions": "Slight rain",
"precipitation_sum": 2.4,
"temperature_2m_max": 26.2,
"temperature_2m_min": 15.1,
"time": "2026-06-02",
"weather_code": 61
}
],
"units": {
"precipitation_sum": "mm",
"temperature_2m_max": "\u00b0C",
"temperature_2m_min": "\u00b0C"
}
},
"elevation": 38.0,
"end_date": "2026-06-02",
"hourly": {
"count": 0,
"entries": [],
"units": {}
},
"latitude": 52.52,
"location": "Berlin",
"longitude": 13.419998,
"start_date": "2026-06-01",
"timezone": "Europe/Berlin",
"timezone_abbreviation": "GMT+2",
"utc_offset_seconds": 7200
}Get river discharge
Get the daily flow of the river nearest a point, in cubic metres per second, for up to a year ahead and three months back. The figures come from GloFAS, the global flood modelling system, and are what a flood watch or a river level alert is built on. Ask for the ensemble to get the spread between model runs rather than one number.
Inputs
- Location
locationtext - Place name to look up, for example 'Berlin' or 'Springfield, Illinois'. The closest match is used. Leave blank if you are providing latitude and longitude instead.
- Latitude
latitudenumber - Latitude of the location (-90 to 90). Use with longitude instead of a place name for an exact point.From -90 to 90.
- Longitude
longitudenumber - Longitude of the location (-180 to 180). Use with latitude instead of a place name for an exact point. Locations in the Americas take a negative longitude.From -180 to 180.
- Variables
variablestext - Which discharge figures to return. The plain one is the headline value; the rest describe the spread across the ensemble.One or more of:
river_discharge(River discharge),river_discharge_mean(River discharge mean),river_discharge_median(River discharge median),river_discharge_max(River discharge maximum),river_discharge_min(River discharge minimum),river_discharge_p25(River discharge 25th percentile),river_discharge_p75(River discharge 75th percentile). Default:["river_discharge", "river_discharge_mean", "river_discharge_max", "river_discharge_min"]. - Forecast days
forecast_daysnumber - How many days ahead to return, from 1 to 366. Defaults to 92. Ignored when a start and end date are given.From 1 to 366. Default:
92. - Past days
past_daysnumber - How many days of already-issued forecasts to prepend, from 0 to 92. Defaults to 0. For measured weather further back, use the 'Get historical weather' action instead.From 0 to 92. Default:
0. - Start date
start_datetext - First day to return, as YYYY-MM-DD. Use with an end date to ask for a fixed range instead of a number of days either side of today.
- End date
end_datetext - Last day to return, as YYYY-MM-DD.
- Return every ensemble member
ensembletrue/false - Return each of the 50 GloFAS ensemble members as its own column rather than only the summary figures.Default:
false. - Model version
modelstext - Which GloFAS version to read. Leave blank for the current one.One or more of:
seamless_v4(GloFAS v4 seamless),forecast_v4(GloFAS v4 forecast),consolidated_v4(GloFAS v4 consolidated),seamless_v3(GloFAS v3 seamless),forecast_v3(GloFAS v3 forecast),consolidated_v3(GloFAS v3 consolidated). - Time zone
timezonetext - Time zone the timestamps are returned in, as a time-zone database name such as Europe/Berlin. Defaults to 'auto', which uses the local time zone of the location: the right choice for daily rows, which would otherwise be split across the wrong days.Default:
auto.
Outputs
countnumber- Number of rows returned
countrytext- Country of the resolved place
elevationnumber- Elevation of the grid-cell, in metres above sea level
entrieslistlatitudenumber- Latitude of the weather grid-cell used
locationtext- Resolved place name, or empty when coordinates were given
longitudenumber- Longitude of the weather grid-cell used
timezonetext- Time zone the timestamps are in, e.g. 'Europe/Berlin'
timezone_abbreviationtext- Abbreviation of that time zone, e.g. 'CEST'
unitsobject- Unit of each requested variable, keyed by variable name
utc_offset_secondsnumber- Offset of that time zone from UTC, in seconds
Example output
{
"count": 2,
"country": "Germany",
"elevation": 55.0,
"entries": [
{
"river_discharge": 664.27,
"river_discharge_max": 675.4,
"river_discharge_mean": 658.71,
"river_discharge_min": 641.02,
"time": "2026-07-24"
},
{
"river_discharge": 671.15,
"river_discharge_max": 698.3,
"river_discharge_mean": 663.88,
"river_discharge_min": 635.77,
"time": "2026-07-25"
}
],
"latitude": 50.925003,
"location": "Cologne",
"longitude": 6.925003,
"timezone": "Europe/Berlin",
"timezone_abbreviation": "GMT+2",
"units": {
"river_discharge": "m\u00b3/s",
"river_discharge_max": "m\u00b3/s",
"river_discharge_mean": "m\u00b3/s",
"river_discharge_min": "m\u00b3/s"
},
"utc_offset_seconds": 7200
}Get seasonal forecast
Look months ahead, out to about seven, with ECMWF's seasonal forecast. This answers a different question from a daily forecast: not what the weather will be on a given day, but how a whole week or month is leaning against its own long run normal. The anomaly variables carry that lean, which is what a planting date, a heating budget or a stock forecast turns on.
Inputs
- Location
locationtext - Place name to look up, for example 'Berlin' or 'Springfield, Illinois'. The closest match is used. Leave blank if you are providing latitude and longitude instead.
- Latitude
latitudenumber - Latitude of the location (-90 to 90). Use with longitude instead of a place name for an exact point.From -90 to 90.
- Longitude
longitudenumber - Longitude of the location (-180 to 180). Use with latitude instead of a place name for an exact point. Locations in the Americas take a negative longitude.From -180 to 180.
- Daily variables
daily_variablestext - Which readings to return per day. Used when nothing at all is ticked.One or more of:
temperature_2m_max(Maximum temperature (2 m)),temperature_2m_min(Minimum temperature (2 m)),temperature_2m_mean(Mean temperature (2 m)),precipitation_sum(Precipitation sum),weather_code(Weather code),sunrise,sunset,sunshine_duration(Sunshine duration),cloud_cover_mean(Mean cloud cover),dew_point_2m_mean(Mean dewpoint (2 m)), and 5 more. Default:["temperature_2m_max", "temperature_2m_min", "precipitation_sum"]. - Weekly variables
weekly_variablestext - Which readings to return per week. An 'anomaly' is the difference from that week's long run normal, so a temperature anomaly of 2 means two degrees warmer than usual for the time of year.One or more of:
temperature_2m_mean(Mean temperature (2 m)),temperature_2m_anomaly(Temperature anomaly (2 m)),precipitation_mean(Mean precipitation),precipitation_anomaly(Precipitation anomaly),dew_point_2m_mean(Mean dewpoint (2 m)),dew_point_2m_anomaly(Dewpoint anomaly (2 m)),cloud_cover_mean(Mean cloud cover),cloud_cover_anomaly(Cloud cover anomaly),sunshine_duration_mean(Mean sunshine duration),sunshine_duration_anomaly(Sunshine duration anomaly), and 10 more. - Monthly variables
monthly_variablestext - Which readings to return per calendar month, again with anomalies against the long run normal.One or more of:
temperature_2m_mean(Mean temperature (2 m)),temperature_2m_anomaly(Temperature anomaly (2 m)),precipitation_mean(Mean precipitation),precipitation_anomaly(Precipitation anomaly),dew_point_2m_mean(Mean dewpoint (2 m)),dew_point_2m_anomaly(Dewpoint anomaly (2 m)),cloud_cover_mean(Mean cloud cover),cloud_cover_anomaly(Cloud cover anomaly),sunshine_duration_mean(Mean sunshine duration),sunshine_duration_anomaly(Sunshine duration anomaly), and 10 more. - Additional daily variables
additional_daily_variablestext - Comma-separated Open-Meteo variable names to request on top of the ones ticked above, for example 'soil_temperature_0cm' or 'temperature_850hPa'. See the Open-Meteo docs for the full list.
- Forecast days
forecast_daysnumber - How far ahead to look, from 1 to 217 days. Defaults to 183, about six months.From 1 to 217. Default:
183. - Include every member
include_memberstrue/false - Return each ensemble member's own value alongside the summary. Off by default: fifty members across a long forecast is a very large response, and the lowest, highest and mean are what most workflows act on.Default:
false. - Temperature unit
temperature_unittext - Unit for every temperature in the response. Defaults to Celsius.One of:
celsius(Celsius (°C)),fahrenheit(Fahrenheit (°F)). Default:celsius. - Wind speed unit
wind_speed_unittext - Unit for every wind speed in the response. Defaults to km/h.One of:
kmh(Kilometres per hour (km/h)),ms(Metres per second (m/s)),mph(Miles per hour (mph)),kn(Knots (kn)). Default:kmh. - Precipitation unit
precipitation_unittext - Unit for rain, showers, and snowfall amounts. Defaults to millimetres.One of:
mm(Millimetres (mm)),inch(Inches (in)). Default:mm. - Time zone
timezonetext - Time zone the timestamps are returned in, as a time-zone database name such as Europe/Berlin. Defaults to 'auto', which uses the local time zone of the location: the right choice for daily rows, which would otherwise be split across the wrong days.Default:
auto. - Seasonal models
modelstext - Which seasonal model to run. Leave blank for the best available. A model ending in '_ensemble_mean' returns the members already averaged, so it carries no spread.One or more of:
ecmwf_seasonal_seamless(ECMWF seasonal, seamless),ecmwf_seas5(ECMWF SEAS5 (out to 7 months)),ecmwf_ec46(ECMWF EC46 (out to 6 weeks)),ecmwf_seasonal_ensemble_mean_seamless(ECMWF seasonal, ensemble mean),ecmwf_seas5_ensemble_mean(ECMWF SEAS5, ensemble mean),ecmwf_ec46_ensemble_mean(ECMWF EC46, ensemble mean).
Outputs
countrytext- Country of the resolved place
dailyobject- One row per timestep. Each variable carries how far the ensemble members disagreed at that timestep rather than a single number
elevationnumber- Elevation of the grid-cell, in metres above sea level
latitudenumber- Latitude of the weather grid-cell used
locationtext- Resolved place name, or empty when coordinates were given
longitudenumber- Longitude of the weather grid-cell used
monthlyobject- One row per timestep, each carrying every requested variable, plus the units the values are in
timezonetext- Time zone the timestamps are in, e.g. 'Europe/Berlin'
timezone_abbreviationtext- Abbreviation of that time zone, e.g. 'CEST'
utc_offset_secondsnumber- Offset of that time zone from UTC, in seconds
weeklyobject- One row per timestep, each carrying every requested variable, plus the units the values are in
Example output
{
"country": "Germany",
"daily": {
"count": 0,
"entries": [],
"members": 0,
"units": {},
"variables": []
},
"elevation": 38.0,
"latitude": 52.412178,
"location": "Berlin",
"longitude": 13.695653,
"monthly": {
"count": 1,
"entries": [
{
"precipitation_anomaly": -1.4,
"time": "2026-08-01"
}
],
"units": {
"precipitation_anomaly": "mm"
}
},
"timezone": "Europe/Berlin",
"timezone_abbreviation": "GMT+2",
"utc_offset_seconds": 7200,
"weekly": {
"count": 2,
"entries": [
{
"temperature_2m_anomaly": 0.3,
"temperature_2m_mean": 15.5,
"time": "2026-07-20"
},
{
"temperature_2m_anomaly": 1.4,
"temperature_2m_mean": 17.1,
"time": "2026-07-27"
}
],
"units": {
"temperature_2m_anomaly": "K",
"temperature_2m_mean": "\u00b0C"
}
}
}Get solar radiation
Read solar irradiance as weather satellites actually measured it, rather than as a weather model predicted it, going back as far as 1983. This is the number a solar yield or panel performance calculation wants. Set the tilt and the compass bearing of an array to get the irradiance falling on the panels rather than on flat ground.
Inputs
- Location
locationtext - Place name to look up, for example 'Berlin' or 'Springfield, Illinois'. The closest match is used. Leave blank if you are providing latitude and longitude instead.
- Latitude
latitudenumber - Latitude of the location (-90 to 90). Use with longitude instead of a place name for an exact point.From -90 to 90.
- Longitude
longitudenumber - Longitude of the location (-180 to 180). Use with latitude instead of a place name for an exact point. Locations in the Americas take a negative longitude.From -180 to 180.
- Hourly variables
variablestext - Which irradiance readings to return hour by hour.One or more of:
shortwave_radiation(Global horizontal irradiance (GHI)),direct_radiation(Direct horizontal irradiance),diffuse_radiation(Diffuse horizontal irradiance (DHI)),direct_normal_irradiance(Direct normal irradiance (DNI)),global_tilted_irradiance(Global tilted irradiance (GTI)),shortwave_radiation_clear_sky(Clear sky shortwave radiation),terrestrial_radiation(Terrestrial radiation),sunshine_duration(Sunshine duration),is_day(Is day or night). Default:["shortwave_radiation", "direct_radiation", "diffuse_radiation", "direct_normal_irradiance"]. - Daily variables
daily_variablestext - Which readings to total or summarise per day.One or more of:
shortwave_radiation_sum(Shortwave radiation sum),sunshine_duration(Sunshine duration),daylight_duration(Daylight duration),sunrise,sunset. - Additional variables
additional_variablestext - Comma-separated Open-Meteo variable names to request on top of the ones ticked above, for example 'soil_temperature_0cm' or 'temperature_850hPa'. See the Open-Meteo docs for the full list.
- Start date
start_datetext - First day to return, as YYYY-MM-DD. Use with an end date to read a fixed past range instead of a window around today.
- End date
end_datetext - Last day to return, as YYYY-MM-DD.
- Forecast days
forecast_daysnumber - How many days ahead to forecast, from 1 to 16. Defaults to 7.From 1 to 16. Default:
7. - Past days
past_daysnumber - How many days of already-issued forecasts to prepend, from 0 to 92. Defaults to 0. For measured weather further back, use the 'Get historical weather' action instead.From 0 to 92. Default:
0. - Panel tilt
tiltnumber - Angle of the panels from horizontal, 0 to 90 degrees. 0 is flat. Needed for the tilted irradiance variable.From 0 to 90. Default:
0. - Panel bearing
azimuthnumber - Compass bearing the panels face, 0 to 360 degrees, where 0 is south, 90 is west and 270 is east.From 0 to 360. Default:
0. - Satellites
modelstext - Which satellite to read. Leave blank to let Open-Meteo pick whichever one watches the location. Each watches its own part of the globe and its own span of years.One or more of:
satellite_radiation_seamless(Whichever covers the location),eumetsat_sarah3(EUMETSAT SARAH3 (Europe, from 1983)),eumetsat_msg(EUMETSAT MSG (Europe and Africa)),eumetsat_iodc(EUMETSAT IODC (Indian Ocean)),jma_jaxa_himawari(JMA JAXA Himawari (Asia Pacific)). - Time step
temporal_resolutiontext - How closely spaced the rows are. 'Native' keeps whatever the model produces. The others resample to that many hours, which is a way to cut a long series down to a readable size.One of:
native(As the model produces it),hourly_1(Every hour),hourly_3(Every 3 hours),hourly_6(Every 6 hours). Default:native. - Time zone
timezonetext - Time zone the timestamps are returned in, as a time-zone database name such as Europe/Berlin. Defaults to 'auto', which uses the local time zone of the location: the right choice for daily rows, which would otherwise be split across the wrong days.Default:
auto.
Outputs
countrytext- Country of the resolved place
dailyobject- One row per timestep, each carrying every requested variable, plus the units the values are in
elevationnumber- Elevation of the grid-cell, in metres above sea level
hourlyobject- One row per timestep, each carrying every requested variable, plus the units the values are in
latitudenumber- Latitude of the weather grid-cell used
locationtext- Resolved place name, or empty when coordinates were given
longitudenumber- Longitude of the weather grid-cell used
timezonetext- Time zone the timestamps are in, e.g. 'Europe/Berlin'
timezone_abbreviationtext- Abbreviation of that time zone, e.g. 'CEST'
utc_offset_secondsnumber- Offset of that time zone from UTC, in seconds
Example output
{
"country": "Germany",
"daily": {
"count": 1,
"entries": [
{
"shortwave_radiation_sum": 16.57,
"time": "2026-06-01"
}
],
"units": {
"shortwave_radiation_sum": "MJ/m\u00b2"
}
},
"elevation": 38.0,
"hourly": {
"count": 1,
"entries": [
{
"diffuse_radiation": 214.0,
"direct_normal_irradiance": 806.3,
"direct_radiation": 528.0,
"shortwave_radiation": 742.0,
"time": "2026-06-01T12:00"
}
],
"units": {
"diffuse_radiation": "W/m\u00b2",
"direct_normal_irradiance": "W/m\u00b2",
"direct_radiation": "W/m\u00b2",
"shortwave_radiation": "W/m\u00b2"
}
},
"latitude": 52.54833,
"location": "Berlin",
"longitude": 13.407822,
"timezone": "Europe/Berlin",
"timezone_abbreviation": "GMT+2",
"utc_offset_seconds": 7200
}Search locations
Search the GeoNames database for places matching a name and get back their coordinates, elevation, time zone, region, and population. Useful for pinning an exact point to reuse, or for telling same-named towns apart.
Inputs
- Place name
nametextRequired - Name to search for. Three or more characters enables fuzzy matching; shorter terms must match exactly.
- Max results
countnumber - How many matches to return, from 1 to 100. Defaults to 10.From 1 to 100. Default:
10. - Language
languagetext - Two-letter language code for the returned place and country names, such as en, de, fr, es, or ja. Defaults to English.Default:
en. - Country
country_codetext - Restrict the search to one country, as a two-letter ISO-3166-1 alpha-2 code such as US or DE.
Outputs
countnumber- Number of matches returned
locationslist
Example output
{
"count": 2,
"locations": [
{
"admin1": "Berlin",
"country": "Germany",
"country_code": "DE",
"elevation": 74.0,
"feature_code": "PPLC",
"id": 2950159,
"latitude": 52.52437,
"longitude": 13.41053,
"name": "Berlin",
"population": 3426354,
"timezone": "Europe/Berlin"
},
{
"admin1": "New Jersey",
"country": "United States",
"country_code": "US",
"elevation": 27.0,
"feature_code": "PPL",
"id": 4348599,
"latitude": 39.79178,
"longitude": -75.21797,
"name": "Berlin",
"population": 7588,
"timezone": "America/New_York"
}
]
}