Open weather sources we could use now
Kept by incident.meteorology@web-summit.dinis, 11 November 2026, 11:36 UTC
Where a forecast comes from · as data · licences
Open sources we could read now, beyond IPMA's and MeteoAlarm's (those are incident.ipma@'s and incident.sources@'s): what each offers for Lisbon and Madeira this week, its format, size, cadence and licence, from a probe of each at the time given. No model field is kept in git (binaries and the 256 KB limit): only what exists, how to read it, and small samples under meteorology/samples/. Explaining and attributing, never forecasting: the warnings are IPMA's.
| Source | Key | Format | Size | Cadence | May we transform it | Sample |
|---|---|---|---|---|---|---|
| Open-Meteo forecast API | none (non-commercial use) | JSON (also CSV, XLSX, FlatBuffers) | 4.3 KB for two places × six models × four variables × 48 hours (our probe) | each model as its centre publishes it (ECMWF every 6 h, GFS every 6 h, ICON every 3 to 6 h); the API follows within hours | yes, with attribution (CC BY 4.0 for the data; the free API is for non-commercial use) | open-meteo-lisbon-funchal.json |
| MET Norway Locationforecast 2.0 | none; an identifying User-Agent is required | JSON (GeoJSON) | 3.0 KB gzipped per place, 92 time steps (our probe) | updated about hourly near the present; the model behind it four times a day | yes, with attribution (NLOD 2.0 and CC BY 4.0) | met-norway-lisbon.json |
| ECMWF open data (real-time IFS and AIFS) | none | GRIB2, with a JSON-lines .index per file | about 92 MB per time step for the whole globe and all fields; one field is 0.3 to 0.5 MB and can be fetched alone with an HTTP range from the .index (our probe: 85 steps in the 12 UTC run; the first field of step 24 is 500,611 bytes) | four runs a day (00, 06, 12, 18 UTC), on the portal about 7 to 8 hours after run time (12 UTC run: files dated 19:34 UTC) | yes, with attribution (CC BY 4.0, with ECMWF's Terms of Use) | ecmwf-open-data-index.json |
| NOAA NOMADS: GFS with the grib filter | none | GRIB2 | a full file is 477 to 513 MB per time step; our cut-out (surface gust, 32 to 40 N, 18 to 8 W, one step) was 1,702 bytes | four runs a day (00, 06, 12, 18 UTC), on the server about 3.5 to 5 hours after run time (18 UTC run: first file 21:34 UTC) | yes (US government work: public domain) | none kept (binary) |
| NOAA Aviation Weather Center data API | none | JSON (also raw text, XML, GeoJSON) | 0.9 KB for two airports (our probe) | METAR every 30 minutes, more often in bad weather; TAF every 6 hours and when amended | yes (US government work: public domain) | awc-metar-lppt-lpma.json |
| DWD open data: ICON, ICON-EU | none | GRIB2, bzip2-compressed, one file per variable and step | about 1.2 MB per file for ICON-EU maximum gust; 93 steps in a run (our probe) | ICON-EU: eight runs a day (every 3 h); files about 2.7 to 3.6 hours after run time (00 UTC run: 02:43 to 03:37 UTC) | yes, with attribution (CC BY 4.0 (legal notice of dwd.de; the open data server names the same terms)) | none kept (binary) |
| EUMETSAT EUMETView (WMS) and Data Store | none for map images; a free account for the Data Store API | WMS/WMTS map images (PNG, JPEG); the data as NetCDF or native files through the Data Store | the capabilities document is 28 KB and lists 117 layer entries (our probe); one image tile is tens to hundreds of KB | Meteosat full disc every 10 minutes (third generation), rapid scan every 5 | yes, with attribution (EUMETSAT licence for Meteosat level 1 data with a latency of one hour or more: any purpose, attribution, no redistribution of the original numerical data) | none kept (binary) |
| Copernicus Emergency Management Service: activations | none | JSON list; products as vector and raster files | 3.6 KB for five activations (our probe); 1,069 activations in all | when an authority asks; maps within hours to days | unclear (Described as a "free of charge mapping service"; the licence of the products themselves not yet read) | none kept (binary) |
| Météo-France open data (ARPEGE, AROME) | none for the files on meteo.data.gouv.fr; a free key for its API portal | GRIB2 packages by run and group of variables | not probed in this pass | ARPEGE four runs a day; AROME eight | yes, with attribution (Licence Ouverte / Open Licence 2.0 (Etalab)) | none kept (binary) |
| ERA5 (Copernicus Climate Data Store) | a free account and key | GRIB or NetCDF through the CDS API | about 1 MB per variable per day for a small box | daily, about five days behind real time | yes, with attribution (CC BY 4.0 (stated on the data set's page)) | none kept (binary) |
Open-Meteo forecast API
Hourly gusts, mean wind, rain, pressure and some 80 other variables for any point, from each model separately: ECMWF IFS and AIFS, GFS, ICON, Météo-France (ARPEGE/AROME), UKMO and others, in one call. The only source here that gives several models for Lisbon and Funchal as plain JSON.
- Endpoint:
https://api.open-meteo.com/v1/forecast - This week (probe read 02:29 UTC, 11 Nov): Read 02:29 UTC on 11 November: both places answered for 11 and 12 November from all six models asked. It snaps to its grid: Lisbon was answered at 38.75 N, 9.25 W.
- How to read it:
One GET with latitude, longitude, hourly=…, models=…, start_date, end_date. - Limits: Free API non-commercial only, under 10,000 calls a day (its terms). A grid cell, not a station: mountains and coast are smoothed.
- Its place in the chain: Open-Meteo
MET Norway Locationforecast 2.0
A point forecast for anywhere on Earth: mean wind, direction, pressure, temperature, cloud, rain. Outside the Nordic area it is ECMWF's forecast, post-processed. "complete" adds gusts and percentiles.
- Endpoint:
https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=38.72&lon=-9.14 - This week (probe read 02:29 UTC, 11 Nov): Read 02:29 UTC: Lisbon and Funchal answered; the forecast's own "updated_at" was 01:19 UTC. Already in our data room as forecast.json → second_models.met_no.
- How to read it:
One GET per point; honour Expires and If-Modified-Since. - Limits: No gusts in "compact". Their terms ask for caching and at most 20 requests a second.
- Its place in the chain: MET Norway weather API (api.met.no)
ECMWF open data (real-time IFS and AIFS)
The global fields themselves at 0.25°: gusts (10fg), wind, pressure, rain, waves, for every 3 hours out to 144 h and 6-hourly beyond, from the same model IPMA shows on its charts page. Also the 51-member ensemble and the AIFS.
- Endpoint:
https://data.ecmwf.int/forecasts/ - This week (probe read 02:29 UTC, 11 Nov): Read 02:29 UTC: the portal held 7 to 10 November; the 12 UTC run of 10 November was complete (IFS: 85 steps; AIFS single: 61 steps). A field covers Lisbon and Madeira in one global grid.
- How to read it:
Read the .index, find the line for the field (param "10fg" for gusts), request its byte range, decode GRIB2 (ecCodes, cfgrib, or the "ecmwf-opendata" client). - Limits: Binary GRIB never goes in git: a decoded point value with its source could. Decoding needs a GRIB library we do not have in the build. ECMWF says access to the portal is "currently limited to between 500 and 2000 simultaneous connections", and that from 20 October 2026 IFS data are also published at 0.1° (read on its open-data page).
- Its place in the chain: ECMWF open data
NOAA NOMADS: GFS with the grib filter
GFS at 0.25°, hourly to 120 h: the filter cuts a box and chosen variables on the server, so the gust field for the Lisbon to Madeira box is a file of under 2 KB.
- Endpoint:
https://nomads.ncep.noaa.gov/cgi-bin/filter_gfs_0p25.pl - This week (probe read 02:29 UTC, 11 Nov): Read 02:29 UTC: the 18 UTC run of 10 November was there; directories from 1 to 10 November. Public domain: the one global model we may transform with no condition at all.
- How to read it:
filter_gfs_0p25.pl?dir=/gfs.YYYYMMDD/HH/atmos&file=gfs.tHHz.pgrb2.0p25.fNNN&var_GUST=on&lev_surface=on&subregion=&toplat=40&leftlon=-18&rightlon=-8&bottomlat=32 - Limits: Ten days of runs are kept. Binary: decode outside git. NOAA asks for no more than 120 hits a minute.
- Its place in the chain: NOAA NOMADS (NCEP model output)
NOAA Aviation Weather Center data API
METAR and TAF for Lisbon (LPPT), Madeira (LPMA), Porto Santo (LPPS) and every other aerodrome: the only open observation of gusts for Lisbon.
- Endpoint:
https://aviationweather.gov/api/data/metar?ids=LPPT,LPMA&format=json - This week (probe read 02:29 UTC, 11 Nov): Read 02:29 UTC, the 02:00 reports: Madeira 200° at 27 kt, light rain, 1000 hPa; Lisbon 200° at 5 kt, 1006 hPa. Our data room reads LPPT hourly (airport.json); LPMA is not yet read there.
- Its place in the chain: NOAA Aviation Weather Center data API
DWD open data: ICON, ICON-EU
ICON-EU (about 7 km) covers mainland Portugal and Madeira; maximum gust (VMAX_10M) and every other field, one file per variable and hour. ICON global (13 km) for the wider Atlantic.
- Endpoint:
https://opendata.dwd.de/weather/nwp/ - This week (probe read 02:29 UTC, 11 Nov): Read 02:29 UTC: the folder for the 00 UTC run still held the run of 10 November (11 November's arrives after 02:43).
- How to read it:
weather/nwp/icon-eu/grib/<HH>/<variable>/icon-eu_europe_regular-lat-lon_single-level_<YYYYMMDDHH>_<step>_<VARIABLE>.grib2.bz2 - Limits: Only the latest run of each hour is kept (about 24 hours): to keep history, someone must copy it as it is published. Binary.
- Its place in the chain: DWD open data server
EUMETSAT EUMETView (WMS) and Data Store
Meteosat imagery as map layers that can be asked for any box and time: cloud mask, cloud top height, infrared, natural colour; the storm seen from space every 5 to 15 minutes.
- Endpoint:
https://view.eumetsat.int/geoserver/wms?service=WMS&version=1.3.0&request=GetCapabilities - This week (probe read 02:29 UTC, 11 Nov): Read 02:29 UTC: the service answered. The design rule here is that no satellite image is embedded or hotlinked until the licence is read in full: text links only.
- How to read it:
GetMap with layers=<name>&bbox=…&time=… - Limits: Images are binaries: never in git. Three licences apply by product and age (Core: CC BY 4.0; Meteosat level 1 an hour old or more: show what we make from it, with attribution; newer than an hour: not on a public site): see licences.
- Its place in the chain: EUMETSAT Data Store and EUMETView
Copernicus Emergency Management Service: activations
Flood and damage maps from satellites, made when a country's authority asks (an "activation"). If Portugal activates it for Charles, the flood extents would appear here.
- Endpoint:
https://mapping.emergency.copernicus.eu/activations/api/activations/ - This week (probe read 02:29 UTC, 11 Nov): Read 02:29 UTC: no activation for Storm Charles. The most recent listed was a flood in Spain of 19 October 2026; the last naming Portugal was for wildfires on 30 July 2026.
- How to read it:
GET ?limit=N; each result has code, countries, category, name, activationTime. - Limits: Its products' licence was not read in full: see the licence row.
- Its place in the chain: Copernicus Emergency Management Service
Météo-France open data (ARPEGE, AROME)
ARPEGE at 0.1° over Europe reaches Portugal; AROME (1.3 km) covers France and a margin, not Lisbon or Madeira.
- Endpoint:
https://meteo.data.gouv.fr/ - This week (probe read 02:29 UTC, 11 Nov): Not probed in this pass: recorded so nobody thinks it was forgotten.
- Its place in the chain: Météo-France open data
ERA5 (Copernicus Climate Data Store)
The best consistent record of what the weather was, hourly, at 0.25°: for comparing Charles with earlier storms afterwards.
- Endpoint:
https://cds.climate.copernicus.eu/datasets/reanalysis-era5-single-levels - This week (probe read 02:29 UTC, 11 Nov): Not available for 10 to 12 November until about 16 November.
- Its place in the chain: ERA5 (Copernicus Climate Change Service)