Windy

App · Weather & Space · 16 actions

Read Windy's weather in a workflow. Get a point forecast for any coordinates from 21 models (temperature, wind and gusts, rain and snow, cloud, humidity and pressure), a marine forecast with waves, swell and ocean currents, and an air quality forecast with the US AQI, pollutants and European pollen. Also search Windy's worldwide webcam collection by place or category and get each camera's still image, live stream and timelapse links.

Actions

ActionWhat it does
Find webcams in an areaFind the webcams inside a rectangle on the map, given its north, east, south and west edges.
Find webcams nearbyFind the webcams around a point, within a radius you choose.
Get a webcamGet one webcam by its id, with its current still image, its live and timelapse player links, where it is and when it last refreshed.
Get air quality forecastGet the air quality forecast for a point: the US Air Quality Index with the band it falls in, fine and coarse particulates, nitrogen dioxide, ozone, sulfur dioxide, carbon monoxide and dust.
Get current weatherGet the conditions at a point right now, or at a time you choose.
Get marine forecastGet the sea forecast for a point: wave height, period and direction, wind waves, primary and secondary swell, and (with the Copernicus model) ocean surface and tidal currents.
Get raw point forecastGet raw forecast values for a point: pick any of Windy's 21 models, any of its 39 parameters and, for temperature, dew point, humidity, wind and geopotential height, any pressure level.
Get several webcamsGet up to 50 webcams at once by their ids, each with its location, still image and player links.
Get weather forecastGet the weather forecast for a point on the map, step by step: temperature, wind speed and direction, gusts, rain and snow, cloud cover, humidity and pressure.
Get webcams for a mapGet webcams spread evenly across a map view, for a rectangle and a zoom level, so pins do not pile up on top of each other.
List webcam categoriesList the categories a webcam can be filed under, with their names in the language you choose.
List webcam citiesList the city codes the webcam filters accept, with their localised names.
List webcam continentsList the continent codes the webcam filters accept, with their localised names.
List webcam countriesList the country codes the webcam filters accept, with their localised names.
List webcam regionsList the region codes the webcam filters accept, with their localised names.
Search webcamsSearch Windy's worldwide webcam collection by category and place.

Find webcams in an area

Find the webcams inside a rectangle on the map, given its north, east, south and west edges. Use it to cover a region, a coastline or a mountain range rather than a single point.

Inputs

North edge (latitude)north_latitudenumberRequired
Latitude of the top edge of the area, between -90 and 90.From -90 to 90.
East edge (longitude)east_longitudenumberRequired
Longitude of the right edge of the area, between -180 and 180.From -180 to 180.
South edge (latitude)south_latitudenumberRequired
Latitude of the bottom edge of the area, between -90 and 90.From -90 to 90.
West edge (longitude)west_longitudenumberRequired
Longitude of the left edge of the area, between -180 and 180.From -180 to 180.
Categoriescategoriestext
Only return webcams in these categories, at most 10.One or more of: airport, beach, building, city, coast, forest, indoor, lake, landscape, meteo (Weather station), and 8 more.
How many webcamslimitnumber
How many webcams to return, from 1 to 50.From 1 to 50. Default: 10.
Skip this manyoffsetnumber
Where to start in the result list, for paging. The free Webcams plan stops at 1000 and the professional plan at 10000.From 0 to 100000. Default: 0.
Details to includeincludetext
Which parts of each webcam record to fetch. Everything is included when nothing is chosen.One or more of: categories, images (Still images), location, player (Live and timelapse players), urls (Links).
Languagelanguagetext
Language for webcam titles, category names and place names. Defaults to English.

Outputs

bounding_boxobject
The area that was searched
limitnumber
The limit that was applied
returnednumber
How many are in this result
totalnumber
How many webcams are in the box
webcamslist
The webcams inside the area
Example output
{
  "bounding_box": {
    "east_longitude": 13.0,
    "north_latitude": 47.9,
    "south_latitude": 45.8,
    "west_longitude": 6.0
  },
  "limit": 10,
  "returned": 1,
  "total": 340,
  "webcams": [
    {
      "categories": [
        {
          "id": "landscape",
          "name": "Landscape"
        }
      ],
      "category_ids": [
        "landscape"
      ],
      "detail_url": "https://www.windy.com/webcams/1179853135",
      "images": {
        "current": {
          "preview": "https://images-webcams.windy.com/35/1179853135/current/preview/1179853135.jpg",
          "thumbnail": "https://images-webcams.windy.com/35/1179853135/current/thumbnail/1179853135.jpg"
        },
        "daylight": {},
        "sizes": {
          "preview": {
            "height": 224,
            "width": 400
          }
        }
      },
      "last_updated_on": "2026-08-19T14:52:11.000Z",
      "latitude": -33.84903,
      "live_stream_url": "https://webcams.windy.com/webcams/public/embed/player/1179853135/live",
      "location": {
        "city": "Sydney",
        "city_code": "AU.02.Sydney",
        "continent": "Oceania",
        "continent_code": "OC",
        "country": "Australia",
        "country_code": "AU",
        "latitude": -33.84903,
        "longitude": 151.21559,
        "region": "New South Wales",
        "region_code": "AU.02"
      },
      "longitude": 151.21559,
      "place": "Sydney, Australia",
      "player": {
        "day": "https://webcams.windy.com/webcams/public/embed/player/1179853135/day",
        "lifetime": "https://webcams.windy.com/webcams/public/embed/player/1179853135/lifetime",
        "live": "https://webcams.windy.com/webcams/public/embed/player/1179853135/live",
        "month": "https://webcams.windy.com/webcams/public/embed/player/1179853135/month",
        "year": "https://webcams.windy.com/webcams/public/embed/player/1179853135/year"
      },
      "preview_image_url": "https://images-webcams.windy.com/35/1179853135/current/preview/1179853135.jpg",
      "provider_url": "https://www.example-webcam-owner.com/",
      "status": "active",
      "title": "Sydney: Sydney Harbour Bridge - Sydney Opera House",
      "view_count": 1282618,
      "webcam_id": 1179853135
    }
  ]
}

Find webcams nearby

Find the webcams around a point, within a radius you choose. Give it the coordinates of a place and it answers with the cameras looking at it, each with its location, still image and player links.

Inputs

LatitudelatitudenumberRequired
Latitude of the point, between -90 and 90.From -90 to 90.
LongitudelongitudenumberRequired
Longitude of the point, between -180 and 180.From -180 to 180.
Radius (km)radius_kmnumber
How far around the point to search, in kilometres.From 0.1 to 500.0. Default: 25.0.
Categoriescategoriestext
Only return webcams in these categories, at most 10.One or more of: airport, beach, building, city, coast, forest, indoor, lake, landscape, meteo (Weather station), and 8 more.
How many webcamslimitnumber
How many webcams to return, from 1 to 50.From 1 to 50. Default: 10.
Details to includeincludetext
Which parts of each webcam record to fetch. Everything is included when nothing is chosen.One or more of: categories, images (Still images), location, player (Live and timelapse players), urls (Links).
Languagelanguagetext
Language for webcam titles, category names and place names. Defaults to English.

Outputs

latitudenumber
Latitude searched around
limitnumber
The limit that was applied
longitudenumber
Longitude searched around
radius_kmnumber
Radius searched, in km
returnednumber
How many are in this result
totalnumber
How many webcams are in range
webcamslist
The webcams in range
Example output
{
  "latitude": -33.8688,
  "limit": 10,
  "longitude": 151.2093,
  "radius_km": 25.0,
  "returned": 1,
  "total": 12,
  "webcams": [
    {
      "categories": [
        {
          "id": "landscape",
          "name": "Landscape"
        }
      ],
      "category_ids": [
        "landscape"
      ],
      "detail_url": "https://www.windy.com/webcams/1179853135",
      "images": {
        "current": {
          "preview": "https://images-webcams.windy.com/35/1179853135/current/preview/1179853135.jpg",
          "thumbnail": "https://images-webcams.windy.com/35/1179853135/current/thumbnail/1179853135.jpg"
        },
        "daylight": {},
        "sizes": {
          "preview": {
            "height": 224,
            "width": 400
          }
        }
      },
      "last_updated_on": "2026-08-19T14:52:11.000Z",
      "latitude": -33.84903,
      "live_stream_url": "https://webcams.windy.com/webcams/public/embed/player/1179853135/live",
      "location": {
        "city": "Sydney",
        "city_code": "AU.02.Sydney",
        "continent": "Oceania",
        "continent_code": "OC",
        "country": "Australia",
        "country_code": "AU",
        "latitude": -33.84903,
        "longitude": 151.21559,
        "region": "New South Wales",
        "region_code": "AU.02"
      },
      "longitude": 151.21559,
      "place": "Sydney, Australia",
      "player": {
        "day": "https://webcams.windy.com/webcams/public/embed/player/1179853135/day",
        "lifetime": "https://webcams.windy.com/webcams/public/embed/player/1179853135/lifetime",
        "live": "https://webcams.windy.com/webcams/public/embed/player/1179853135/live",
        "month": "https://webcams.windy.com/webcams/public/embed/player/1179853135/month",
        "year": "https://webcams.windy.com/webcams/public/embed/player/1179853135/year"
      },
      "preview_image_url": "https://images-webcams.windy.com/35/1179853135/current/preview/1179853135.jpg",
      "provider_url": "https://www.example-webcam-owner.com/",
      "status": "active",
      "title": "Sydney: Sydney Harbour Bridge - Sydney Opera House",
      "view_count": 1282618,
      "webcam_id": 1179853135
    }
  ]
}

Get a webcam

Get one webcam by its id, with its current still image, its live and timelapse player links, where it is and when it last refreshed. Image links are signed and expire (15 minutes on the free plan), so read this action again when you need a fresh one.

Inputs

Webcam idwebcam_idnumberRequired
Windy's id for the webcam, from any of the search actions.
Details to includeincludetext
Which parts of each webcam record to fetch. Everything is included when nothing is chosen.One or more of: categories, images (Still images), location, player (Live and timelapse players), urls (Links).
Languagelanguagetext
Language for webcam titles, category names and place names. Defaults to English.

Outputs

categorieslist
Categories the webcam is filed under
category_idslist
Just the category ids
cluster_sizenumber
On the map action only: how many webcams this one stands in for
detail_urltext
The webcam's page on windy.com
imagesobject
Windy's image URLs by size, as returned
last_updated_ontext
When the image last refreshed
latitudenumber
Latitude of the webcam
live_stream_urltext
Embeddable live player link, when the webcam has a live stream
locationobject
longitudenumber
Longitude of the webcam
placetext
Readable place, for example 'Sydney, Australia'
playerobject
Embeddable player links: live, day, month, year and lifetime
preview_image_urltext
Still image URL. Signed and short-lived, so fetch it when you need it
provider_urltext
The webcam owner's own page
statustext
active, inactive or another Windy status
titletext
Webcam title
view_countnumber
Views since the webcam was added
webcam_idnumber
Windy's id for this webcam
Example output
{
  "categories": [
    {
      "id": "landscape",
      "name": "Landscape"
    }
  ],
  "category_ids": [
    "landscape"
  ],
  "detail_url": "https://www.windy.com/webcams/1179853135",
  "images": {
    "current": {
      "preview": "https://images-webcams.windy.com/35/1179853135/current/preview/1179853135.jpg",
      "thumbnail": "https://images-webcams.windy.com/35/1179853135/current/thumbnail/1179853135.jpg"
    },
    "daylight": {},
    "sizes": {
      "preview": {
        "height": 224,
        "width": 400
      }
    }
  },
  "last_updated_on": "2026-08-19T14:52:11.000Z",
  "latitude": -33.84903,
  "live_stream_url": "https://webcams.windy.com/webcams/public/embed/player/1179853135/live",
  "location": {
    "city": "Sydney",
    "city_code": "AU.02.Sydney",
    "continent": "Oceania",
    "continent_code": "OC",
    "country": "Australia",
    "country_code": "AU",
    "latitude": -33.84903,
    "longitude": 151.21559,
    "region": "New South Wales",
    "region_code": "AU.02"
  },
  "longitude": 151.21559,
  "place": "Sydney, Australia",
  "player": {
    "day": "https://webcams.windy.com/webcams/public/embed/player/1179853135/day",
    "lifetime": "https://webcams.windy.com/webcams/public/embed/player/1179853135/lifetime",
    "live": "https://webcams.windy.com/webcams/public/embed/player/1179853135/live",
    "month": "https://webcams.windy.com/webcams/public/embed/player/1179853135/month",
    "year": "https://webcams.windy.com/webcams/public/embed/player/1179853135/year"
  },
  "preview_image_url": "https://images-webcams.windy.com/35/1179853135/current/preview/1179853135.jpg",
  "provider_url": "https://www.example-webcam-owner.com/",
  "status": "active",
  "title": "Sydney: Sydney Harbour Bridge - Sydney Opera House",
  "view_count": 1282618,
  "webcam_id": 1179853135
}

Get air quality forecast

Get the air quality forecast for a point: the US Air Quality Index with the band it falls in, fine and coarse particulates, nitrogen dioxide, ozone, sulfur dioxide, carbon monoxide and dust. The European model (camsEu) adds the six pollen counts.

Inputs

LatitudelatitudenumberRequired
Latitude of the point, between -90 and 90.From -90 to 90.
LongitudelongitudenumberRequired
Longitude of the point, between -180 and 180.From -180 to 180.
Air quality modelmodeltext
Which air quality model to read. CAMS covers the whole world; the European model adds pollen.One of: cams (Global air quality (cams, free key)), camsEu (Europe, air quality including pollen (camsEu)). Default: cams.
Hours aheadhours_aheadnumber
How far into the future to return, in hours. The models run from about 2 days (high resolution) to about 10 days out; anything past the end of the run simply returns fewer steps.From 1 to 384. Default: 24.

Outputs

forecast_endtext
Time of the last step (UTC)
forecast_starttext
Time of the first step (UTC)
hours_aheadnumber
Requested window, in hours
latitudenumber
Latitude the forecast is for
longitudenumber
Longitude the forecast is for
modeltext
Forecast model used
model_coveragetext
What the model covers, for example 'Global'
row_countnumber
How many forecast steps returned
rowslist
One entry per forecast step, earliest first
unitsobject
Windy's own unit for each raw response key
Example output
{
  "forecast_end": "2026-08-20T15:00:00Z",
  "forecast_start": "2026-08-19T15:00:00Z",
  "hours_ahead": 24,
  "latitude": 50.088,
  "longitude": 14.42,
  "model": "cams",
  "model_coverage": "Global air quality",
  "row_count": 1,
  "rows": [
    {
      "aqi": 42.0,
      "aqi_category": "Good",
      "carbon_monoxide": 118.2,
      "dust": 2.4,
      "nitrogen_dioxide": 12.1,
      "ozone": 61.3,
      "pm10": 16.4,
      "pm2_5": 9.8,
      "sulfur_dioxide": 1.7,
      "time": "2026-08-19T15:00:00Z",
      "timestamp_ms": 1787151600000
    }
  ],
  "units": {
    "pm2p5-surface": "\u00b5g*m-3"
  }
}

Get current weather

Get the conditions at a point right now, or at a time you choose. Windy publishes forecast runs rather than live observations, so this returns the forecast step nearest the moment asked for and says how far from it that step is.

Inputs

LatitudelatitudenumberRequired
Latitude of the point, between -90 and 90.From -90 to 90.
LongitudelongitudenumberRequired
Longitude of the point, between -180 and 180.From -180 to 180.
Forecast modelmodeltext
Which weather model to read. GFS covers the whole world; the others are sharper but regional.One of: arome (France and surrounding areas (arome, free key)), aromeAntilles (French Antilles (aromeAntilles)), aromeFrance (Metropolitan France (aromeFrance)), aromeReunion (Réunion island (aromeReunion)), icon (Global (ICON-Global) (icon)), iconD2 (Germany, Austria and Switzerland, high resolution (iconD2)), iconEu (Europe and surrounding areas (iconEu, free key)), gfs (Global (gfs, free key)), namConus (Continental USA and surrounding areas (namConus, free key)), namHawaii (Hawaii (namHawaii, free key)), and 4 more. Default: gfs.
At this timeat_timedate and time
The moment to report on. Leave empty for right now. Times are handled in UTC.

Outputs

conditionsobject
forecast_timetext
The forecast step returned, in UTC
latitudenumber
Latitude reported on
longitudenumber
Longitude reported on
modeltext
Forecast model used
model_coveragetext
What the model covers
offset_minutesnumber
How far the step is from the moment asked for
requested_timetext
The moment asked for, in UTC
unitsobject
Windy's own units
Example output
{
  "conditions": {
    "cape_j_per_kg": 118.0,
    "convective_precipitation_mm": 0.0,
    "dew_point_c": 12.1,
    "dew_point_f": 53.8,
    "high_cloud_percent": 21.0,
    "humidity_percent": 47.0,
    "low_cloud_percent": 12.0,
    "medium_cloud_percent": 3.0,
    "precipitation_mm": 0.0,
    "precipitation_type": "No precipitation",
    "pressure_hpa": 1016.4,
    "snow_mm": 0.0,
    "temperature_c": 24.3,
    "temperature_f": 75.7,
    "time": "2026-08-19T15:00:00Z",
    "timestamp_ms": 1787151600000,
    "wind_direction": "WSW",
    "wind_direction_degrees": 245.0,
    "wind_gust_kmh": 29.5,
    "wind_gust_knots": 15.9,
    "wind_gust_ms": 8.2,
    "wind_speed_kmh": 16.6,
    "wind_speed_knots": 8.9,
    "wind_speed_ms": 4.6
  },
  "forecast_time": "2026-08-19T15:00:00Z",
  "latitude": 50.088,
  "longitude": 14.42,
  "model": "gfs",
  "model_coverage": "Global",
  "offset_minutes": -12,
  "requested_time": "2026-08-19T15:12:00Z",
  "units": {
    "temp-surface": "K"
  }
}

Get marine forecast

Get the sea forecast for a point: wave height, period and direction, wind waves, primary and secondary swell, and (with the Copernicus model) ocean surface and tidal currents.

Inputs

LatitudelatitudenumberRequired
Latitude of the point, between -90 and 90.From -90 to 90.
LongitudelongitudenumberRequired
Longitude of the point, between -180 and 180.From -180 to 180.
Sea modelmodeltext
Which sea model to read. The wave models carry waves and swell; the Copernicus model (cmems) carries ocean currents instead.One of: gfsWave (Global waves (excludes parts of Hudson Bay, the Black and Caspian Seas and most of the Arctic Ocean) (gfsWave, free key)), iconWave (Global waves (ICON-GWAM) (iconWave)), iconEuWave (European seas (ICON-EWAM) (iconEuWave)), canRdwpsWave (Canadian waters (canRdwpsWave)), cmems (Global ocean currents (Copernicus Marine Service) (cmems)). Default: gfsWave.
Hours aheadhours_aheadnumber
How far into the future to return, in hours. The models run from about 2 days (high resolution) to about 10 days out; anything past the end of the run simply returns fewer steps.From 1 to 384. Default: 24.

Outputs

forecast_endtext
Time of the last step (UTC)
forecast_starttext
Time of the first step (UTC)
hours_aheadnumber
Requested window, in hours
latitudenumber
Latitude the forecast is for
longitudenumber
Longitude the forecast is for
modeltext
Forecast model used
model_coveragetext
What the model covers, for example 'Global'
row_countnumber
How many forecast steps returned
rowslist
One entry per forecast step, earliest first
unitsobject
Windy's own unit for each raw response key
Example output
{
  "forecast_end": "2026-08-20T15:00:00Z",
  "forecast_start": "2026-08-19T15:00:00Z",
  "hours_ahead": 24,
  "latitude": 36.0,
  "longitude": -9.5,
  "model": "gfsWave",
  "model_coverage": "Global waves",
  "row_count": 1,
  "rows": [
    {
      "swell_direction": "WNW",
      "swell_direction_degrees": 301.0,
      "swell_height_m": 1.28,
      "swell_period_s": 9.1,
      "time": "2026-08-19T15:00:00Z",
      "timestamp_ms": 1787151600000,
      "wave_direction": "WNW",
      "wave_direction_degrees": 292.0,
      "wave_height_m": 1.42,
      "wave_period_s": 7.4,
      "wave_power": 8.6,
      "wave_power_unit": "kW*m-1",
      "wind_wave_direction": "W",
      "wind_wave_direction_degrees": 268.0,
      "wind_wave_height_m": 0.61,
      "wind_wave_period_s": 3.9
    }
  ],
  "units": {
    "waves_height-surface": "m"
  }
}

Get raw point forecast

Get raw forecast values for a point: pick any of Windy's 21 models, any of its 39 parameters and, for temperature, dew point, humidity, wind and geopotential height, any pressure level. Values come back under Windy's own keys with the units it reports them in. Use this when the weather, marine and air quality actions do not carry the value you need.

Inputs

LatitudelatitudenumberRequired
Latitude of the point, between -90 and 90.From -90 to 90.
LongitudelongitudenumberRequired
Longitude of the point, between -180 and 180.From -180 to 180.
ModelmodeltextRequired
Which of Windy's models to read. Each publishes its own set of parameters; anything the model does not publish is reported back as skipped.
ParametersparameterslistRequired
Which values to fetch. Pick as many as the model publishes.
Altitude levelslevelstext
Which pressure levels to read, for the parameters that have them (temperature, dew point, humidity, wind and geopotential height). Surface is used when nothing is chosen, and for every other parameter.One or more of: surface, 1000h (1000 hPa), 950h (950 hPa), 925h (925 hPa), 900h (900 hPa), 850h (850 hPa), 800h (800 hPa), 700h (700 hPa), 600h (600 hPa), 500h (500 hPa), and 4 more.
Hours aheadhours_aheadnumber
How far into the future to return, in hours. The models run from about 2 days (high resolution) to about 10 days out; anything past the end of the run simply returns fewer steps.From 1 to 384. Default: 24.

Outputs

forecast_endtext
Time of the last step (UTC)
forecast_starttext
Time of the first step (UTC)
hours_aheadnumber
Requested window, in hours
latitudenumber
Latitude the forecast is for
levelslist
Levels that were requested
longitudenumber
Longitude the forecast is for
modeltext
Forecast model used
model_coveragetext
What the model covers, for example 'Global'
parameters_returnedlist
Parameters this model publishes and returned
parameters_skippedlist
Requested parameters this model does not publish
row_countnumber
How many forecast steps returned
rowslist
One entry per forecast step, carrying 'time', 'timestamp_ms' and one field per value key
unitsobject
Windy's own unit for each raw response key
value_keyslist
The keys each row carries, for example 'temp-surface'
Example output
{
  "forecast_end": "2026-08-20T15:00:00Z",
  "forecast_start": "2026-08-19T15:00:00Z",
  "hours_ahead": 24,
  "latitude": 50.088,
  "levels": [
    "surface",
    "800h"
  ],
  "longitude": 14.42,
  "model": "gfs",
  "model_coverage": "Global",
  "parameters_returned": [
    "temp",
    "rh"
  ],
  "parameters_skipped": [
    "waves"
  ],
  "row_count": 1,
  "rows": [
    {
      "rh-800h": 38.0,
      "rh-surface": 47.0,
      "temp-800h": 285.12,
      "temp-surface": 297.45,
      "time": "2026-08-19T15:00:00Z",
      "timestamp_ms": 1787151600000
    }
  ],
  "units": {
    "rh-surface": "%",
    "temp-surface": "K"
  },
  "value_keys": [
    "temp-surface",
    "temp-800h",
    "rh-surface",
    "rh-800h"
  ]
}

Get several webcams

Get up to 50 webcams at once by their ids, each with its location, still image and player links. Windy ignores every other filter when ids are given, so this is a lookup rather than a search.

Inputs

Webcam idswebcam_idslistRequired
The ids to fetch, at most 50. Accepts a list or a comma-separated string.
Details to includeincludetext
Which parts of each webcam record to fetch. Everything is included when nothing is chosen.One or more of: categories, images (Still images), location, player (Live and timelapse players), urls (Links).
Languagelanguagetext
Language for webcam titles, category names and place names. Defaults to English.

Outputs

limitnumber
How many ids were asked for
requested_idslist
The ids that were asked for
returnednumber
How many are in this result
totalnumber
How many Windy matched
webcamslist
The webcams found
Example output
{
  "limit": 1,
  "requested_ids": [
    1179853135
  ],
  "returned": 1,
  "total": 1,
  "webcams": [
    {
      "categories": [
        {
          "id": "landscape",
          "name": "Landscape"
        }
      ],
      "category_ids": [
        "landscape"
      ],
      "detail_url": "https://www.windy.com/webcams/1179853135",
      "images": {
        "current": {
          "preview": "https://images-webcams.windy.com/35/1179853135/current/preview/1179853135.jpg",
          "thumbnail": "https://images-webcams.windy.com/35/1179853135/current/thumbnail/1179853135.jpg"
        },
        "daylight": {},
        "sizes": {
          "preview": {
            "height": 224,
            "width": 400
          }
        }
      },
      "last_updated_on": "2026-08-19T14:52:11.000Z",
      "latitude": -33.84903,
      "live_stream_url": "https://webcams.windy.com/webcams/public/embed/player/1179853135/live",
      "location": {
        "city": "Sydney",
        "city_code": "AU.02.Sydney",
        "continent": "Oceania",
        "continent_code": "OC",
        "country": "Australia",
        "country_code": "AU",
        "latitude": -33.84903,
        "longitude": 151.21559,
        "region": "New South Wales",
        "region_code": "AU.02"
      },
      "longitude": 151.21559,
      "place": "Sydney, Australia",
      "player": {
        "day": "https://webcams.windy.com/webcams/public/embed/player/1179853135/day",
        "lifetime": "https://webcams.windy.com/webcams/public/embed/player/1179853135/lifetime",
        "live": "https://webcams.windy.com/webcams/public/embed/player/1179853135/live",
        "month": "https://webcams.windy.com/webcams/public/embed/player/1179853135/month",
        "year": "https://webcams.windy.com/webcams/public/embed/player/1179853135/year"
      },
      "preview_image_url": "https://images-webcams.windy.com/35/1179853135/current/preview/1179853135.jpg",
      "provider_url": "https://www.example-webcam-owner.com/",
      "status": "active",
      "title": "Sydney: Sydney Harbour Bridge - Sydney Opera House",
      "view_count": 1282618,
      "webcam_id": 1179853135
    }
  ]
}

Get weather forecast

Get the weather forecast for a point on the map, step by step: temperature, wind speed and direction, gusts, rain and snow, cloud cover, humidity and pressure. Values arrive in everyday units (°C and °F, km/h and knots, mm, hPa), and the forecast model decides the coverage and resolution.

Inputs

LatitudelatitudenumberRequired
Latitude of the point, between -90 and 90.From -90 to 90.
LongitudelongitudenumberRequired
Longitude of the point, between -180 and 180.From -180 to 180.
Forecast modelmodeltext
Which weather model to read. GFS covers the whole world; the others are sharper but regional. Models marked 'free key' are the ones a free Windy Point Forecast key can request.One of: arome (France and surrounding areas (arome, free key)), aromeAntilles (French Antilles (aromeAntilles)), aromeFrance (Metropolitan France (aromeFrance)), aromeReunion (Réunion island (aromeReunion)), icon (Global (ICON-Global) (icon)), iconD2 (Germany, Austria and Switzerland, high resolution (iconD2)), iconEu (Europe and surrounding areas (iconEu, free key)), gfs (Global (gfs, free key)), namConus (Continental USA and surrounding areas (namConus, free key)), namHawaii (Hawaii (namHawaii, free key)), and 4 more. Default: gfs.
Hours aheadhours_aheadnumber
How far into the future to return, in hours. The models run from about 2 days (high resolution) to about 10 days out; anything past the end of the run simply returns fewer steps.From 1 to 384. Default: 24.

Outputs

forecast_endtext
Time of the last step (UTC)
forecast_starttext
Time of the first step (UTC)
hours_aheadnumber
Requested window, in hours
latitudenumber
Latitude the forecast is for
longitudenumber
Longitude the forecast is for
modeltext
Forecast model used
model_coveragetext
What the model covers, for example 'Global'
row_countnumber
How many forecast steps returned
rowslist
One entry per forecast step, earliest first
unitsobject
Windy's own unit for each raw response key
Example output
{
  "forecast_end": "2026-08-20T15:00:00Z",
  "forecast_start": "2026-08-19T15:00:00Z",
  "hours_ahead": 24,
  "latitude": 50.088,
  "longitude": 14.42,
  "model": "gfs",
  "model_coverage": "Global",
  "row_count": 1,
  "rows": [
    {
      "cape_j_per_kg": 118.0,
      "convective_precipitation_mm": 0.0,
      "dew_point_c": 12.1,
      "dew_point_f": 53.8,
      "high_cloud_percent": 21.0,
      "humidity_percent": 47.0,
      "low_cloud_percent": 12.0,
      "medium_cloud_percent": 3.0,
      "precipitation_mm": 0.0,
      "precipitation_type": "No precipitation",
      "pressure_hpa": 1016.4,
      "snow_mm": 0.0,
      "temperature_c": 24.3,
      "temperature_f": 75.7,
      "time": "2026-08-19T15:00:00Z",
      "timestamp_ms": 1787151600000,
      "wind_direction": "WSW",
      "wind_direction_degrees": 245.0,
      "wind_gust_kmh": 29.5,
      "wind_gust_knots": 15.9,
      "wind_gust_ms": 8.2,
      "wind_speed_kmh": 16.6,
      "wind_speed_knots": 8.9,
      "wind_speed_ms": 4.6
    }
  ],
  "units": {
    "pressure-surface": "Pa",
    "temp-surface": "K"
  }
}

Get webcams for a map

Get webcams spread evenly across a map view, for a rectangle and a zoom level, so pins do not pile up on top of each other. Where several webcams sit close together one stands in for the group and carries how many it represents. The rectangle may not be wider than the zoom level allows: 22.5° of latitude at zoom 4, halving with every level in.

Inputs

North edge (latitude)north_latitudenumberRequired
Latitude of the top edge of the area, between -90 and 90.From -90 to 90.
East edge (longitude)east_longitudenumberRequired
Longitude of the right edge of the area, between -180 and 180.From -180 to 180.
South edge (latitude)south_latitudenumberRequired
Latitude of the bottom edge of the area, between -90 and 90.From -90 to 90.
West edge (longitude)west_longitudenumberRequired
Longitude of the left edge of the area, between -180 and 180.From -180 to 180.
Zoom levelzoomnumberRequired
Map zoom level, 4 (continents) to 18 (streets). It decides how many webcams are grouped together, and how wide the rectangle may be.From 4 to 18. Default: 8.
Details to includeincludetext
Which parts of each webcam record to fetch. Everything is included when nothing is chosen.One or more of: categories, images (Still images), location, player (Live and timelapse players), urls (Links).
Languagelanguagetext
Language for webcam titles, category names and place names. Defaults to English.

Outputs

bounding_boxobject
The area covered
returnednumber
How many webcams returned
webcamslist
The webcams, each possibly standing in for a cluster
zoomnumber
The zoom level used
Example output
{
  "bounding_box": {
    "east_longitude": 9.0,
    "north_latitude": 47.0,
    "south_latitude": 46.0,
    "west_longitude": 7.0
  },
  "returned": 1,
  "webcams": [
    {
      "categories": [
        {
          "id": "landscape",
          "name": "Landscape"
        }
      ],
      "category_ids": [
        "landscape"
      ],
      "cluster_size": 14,
      "detail_url": "https://www.windy.com/webcams/1179853135",
      "images": {
        "current": {
          "preview": "https://images-webcams.windy.com/35/1179853135/current/preview/1179853135.jpg",
          "thumbnail": "https://images-webcams.windy.com/35/1179853135/current/thumbnail/1179853135.jpg"
        },
        "daylight": {},
        "sizes": {
          "preview": {
            "height": 224,
            "width": 400
          }
        }
      },
      "last_updated_on": "2026-08-19T14:52:11.000Z",
      "latitude": -33.84903,
      "live_stream_url": "https://webcams.windy.com/webcams/public/embed/player/1179853135/live",
      "location": {
        "city": "Sydney",
        "city_code": "AU.02.Sydney",
        "continent": "Oceania",
        "continent_code": "OC",
        "country": "Australia",
        "country_code": "AU",
        "latitude": -33.84903,
        "longitude": 151.21559,
        "region": "New South Wales",
        "region_code": "AU.02"
      },
      "longitude": 151.21559,
      "place": "Sydney, Australia",
      "player": {
        "day": "https://webcams.windy.com/webcams/public/embed/player/1179853135/day",
        "lifetime": "https://webcams.windy.com/webcams/public/embed/player/1179853135/lifetime",
        "live": "https://webcams.windy.com/webcams/public/embed/player/1179853135/live",
        "month": "https://webcams.windy.com/webcams/public/embed/player/1179853135/month",
        "year": "https://webcams.windy.com/webcams/public/embed/player/1179853135/year"
      },
      "preview_image_url": "https://images-webcams.windy.com/35/1179853135/current/preview/1179853135.jpg",
      "provider_url": "https://www.example-webcam-owner.com/",
      "status": "active",
      "title": "Sydney: Sydney Harbour Bridge - Sydney Opera House",
      "view_count": 1282618,
      "webcam_id": 1179853135
    }
  ],
  "zoom": 8
}

List webcam categories

List the categories a webcam can be filed under, with their names in the language you choose. These are the values the category filters accept.

Inputs

Languagelanguagetext
Language for webcam titles, category names and place names. Defaults to English.

Outputs

categorieslist
The categories
returnednumber
How many categories
Example output
{
  "categories": [
    {
      "id": "beach",
      "name": "Beach"
    },
    {
      "id": "mountain",
      "name": "Mountain"
    }
  ],
  "returned": 2
}

List webcam cities

List the city codes the webcam filters accept, with their localised names. Search by name or code to find one.

Inputs

Searchsearchtext
Only return entries whose name or code contains this text.
How many to returnlimitnumber
How many entries to return after the search filter, from 1 to 5000.From 1 to 5000. Default: 250.
Languagelanguagetext
Language for webcam titles, category names and place names. Defaults to English.

Outputs

citieslist
The cities, code and name
matchednumber
How many matched the search
returnednumber
How many are in this result
totalnumber
How many Windy publishes in all
Example output
{
  "cities": [
    {
      "code": "AU.02.Sydney",
      "name": "Sydney"
    }
  ],
  "matched": 1,
  "returned": 1,
  "total": 21453
}

List webcam continents

List the continent codes the webcam filters accept, with their localised names.

Inputs

Searchsearchtext
Only return entries whose name or code contains this text.
How many to returnlimitnumber
How many entries to return after the search filter, from 1 to 5000.From 1 to 5000. Default: 250.
Languagelanguagetext
Language for webcam titles, category names and place names. Defaults to English.

Outputs

continentslist
The continents, code and name
matchednumber
How many matched the search
returnednumber
How many are in this result
totalnumber
How many Windy publishes in all
Example output
{
  "continents": [
    {
      "code": "EU",
      "name": "Europe"
    },
    {
      "code": "OC",
      "name": "Oceania"
    }
  ],
  "matched": 7,
  "returned": 2,
  "total": 7
}

List webcam countries

List the country codes the webcam filters accept, with their localised names. Search by name or code to find one.

Inputs

Searchsearchtext
Only return entries whose name or code contains this text.
How many to returnlimitnumber
How many entries to return after the search filter, from 1 to 5000.From 1 to 5000. Default: 250.
Languagelanguagetext
Language for webcam titles, category names and place names. Defaults to English.

Outputs

countrieslist
The countries, code and name
matchednumber
How many matched the search
returnednumber
How many are in this result
totalnumber
How many Windy publishes in all
Example output
{
  "countries": [
    {
      "code": "AU",
      "name": "Australia"
    }
  ],
  "matched": 1,
  "returned": 1,
  "total": 214
}

List webcam regions

List the region codes the webcam filters accept, with their localised names. Regions are states and provinces, coded like 'AU.02'; search by name or code to find one.

Inputs

Searchsearchtext
Only return entries whose name or code contains this text.
How many to returnlimitnumber
How many entries to return after the search filter, from 1 to 5000.From 1 to 5000. Default: 250.
Languagelanguagetext
Language for webcam titles, category names and place names. Defaults to English.

Outputs

matchednumber
How many matched the search
regionslist
The regions, code and name
returnednumber
How many are in this result
totalnumber
How many Windy publishes in all
Example output
{
  "matched": 1,
  "regions": [
    {
      "code": "AU.02",
      "name": "New South Wales"
    }
  ],
  "returned": 1,
  "total": 3894
}

Search webcams

Search Windy's worldwide webcam collection by category and place. Filter by what the camera looks at (beach, mountain, traffic and so on) and by continent, country, region or city, and sort by popularity or by when the webcam was added. Each result carries its location, still image, live and timelapse player links and its page on windy.com.

Inputs

Categoriescategoriestext
Only return webcams in these categories, at most 10.One or more of: airport, beach, building, city, coast, forest, indoor, lake, landscape, meteo (Weather station), and 8 more.
Category matchingcategory_operationtext
Whether a webcam has to be in every chosen category or just one of them. Only applies when categories are chosen; every category by default.One of: and (Match every chosen category), or (Match any chosen category).
Continentscontinentstext
Only return webcams on these continents, at most 2.One or more of: AF (Africa), AN (Antarctica), AS (Asia), EU (Europe), NA (North America), OC (Oceania), SA (South America).
Countriescountrieslist
Only return webcams in these countries, at most 10.
Regionsregionslist
Only return webcams in these regions (states or provinces), at most 10.
Citiescitieslist
Only return webcams in these cities, at most 10.
Sort bysort_bytext
How to order the results. Windy's own order is used when this is empty.One of: popularity, createdOn (When it was added).
Sort directionsort_directiontext
Which end of the sort to start from. Only applies when a sort is chosen; highest or newest first by default.One of: desc (Highest or newest first), asc (Lowest or oldest first).
How many webcamslimitnumber
How many webcams to return, from 1 to 50.From 1 to 50. Default: 10.
Skip this manyoffsetnumber
Where to start in the result list, for paging. The free Webcams plan stops at 1000 and the professional plan at 10000.From 0 to 100000. Default: 0.
Details to includeincludetext
Which parts of each webcam record to fetch. Everything is included when nothing is chosen.One or more of: categories, images (Still images), location, player (Live and timelapse players), urls (Links).
Languagelanguagetext
Language for webcam titles, category names and place names. Defaults to English.

Outputs

filtersobject
The filters that were applied
limitnumber
The limit that was applied
returnednumber
How many are in this result
totalnumber
How many webcams match the filters in all
webcamslist
The matching webcams
Example output
{
  "filters": {
    "categories": [
      "beach"
    ],
    "cities": [],
    "continents": [],
    "countries": [
      "AU"
    ],
    "regions": []
  },
  "limit": 10,
  "returned": 1,
  "total": 1284,
  "webcams": [
    {
      "categories": [
        {
          "id": "landscape",
          "name": "Landscape"
        }
      ],
      "category_ids": [
        "landscape"
      ],
      "detail_url": "https://www.windy.com/webcams/1179853135",
      "images": {
        "current": {
          "preview": "https://images-webcams.windy.com/35/1179853135/current/preview/1179853135.jpg",
          "thumbnail": "https://images-webcams.windy.com/35/1179853135/current/thumbnail/1179853135.jpg"
        },
        "daylight": {},
        "sizes": {
          "preview": {
            "height": 224,
            "width": 400
          }
        }
      },
      "last_updated_on": "2026-08-19T14:52:11.000Z",
      "latitude": -33.84903,
      "live_stream_url": "https://webcams.windy.com/webcams/public/embed/player/1179853135/live",
      "location": {
        "city": "Sydney",
        "city_code": "AU.02.Sydney",
        "continent": "Oceania",
        "continent_code": "OC",
        "country": "Australia",
        "country_code": "AU",
        "latitude": -33.84903,
        "longitude": 151.21559,
        "region": "New South Wales",
        "region_code": "AU.02"
      },
      "longitude": 151.21559,
      "place": "Sydney, Australia",
      "player": {
        "day": "https://webcams.windy.com/webcams/public/embed/player/1179853135/day",
        "lifetime": "https://webcams.windy.com/webcams/public/embed/player/1179853135/lifetime",
        "live": "https://webcams.windy.com/webcams/public/embed/player/1179853135/live",
        "month": "https://webcams.windy.com/webcams/public/embed/player/1179853135/month",
        "year": "https://webcams.windy.com/webcams/public/embed/player/1179853135/year"
      },
      "preview_image_url": "https://images-webcams.windy.com/35/1179853135/current/preview/1179853135.jpg",
      "provider_url": "https://www.example-webcam-owner.com/",
      "status": "active",
      "title": "Sydney: Sydney Harbour Bridge - Sydney Opera House",
      "view_count": 1282618,
      "webcam_id": 1179853135
    }
  ]
}

On this page