Weather — entry 012 of 31
IPMA
IPMA's open-data service is a plain directory of continuously-refreshed static JSON files, not just a single forecast endpoint: it covers daily/hourly weather forecasts, real-time station observations, sea-area and district warnings for mainland Portugal, the Azores and Madeira, plus separate seismic and biology (pollen) datasets from the same institute. No registration is required, though IPMA asks heavy users to email its webmaster for usage statistics.
IPMA's open-data service is a plain directory of static JSON files rather than a query API — you fetch a location's daily forecast by its numeric globalIdLocal code, resolved ahead of time from a separate locations file.
GreatAPIs Score
Auth quickstart
- No API key required — requests are public and keyless.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
5-day daily forecast for Lisbon (globalIdLocal 1110600)
GEThttps://api.ipma.pt/open-data/forecast/meteorology/cities/daily/1110600.json
{
"owner": "IPMA",
"country": "PT",
"data": [
{
"precipitaProb": "0.0",
"tMin": "17.3",
"tMax": "29.4",
"predWindDir": "N",
"idWeatherType": 1,
"classWindSpeed": 2,
"longitude": "-9.1286",
"forecastDate": "2026-07-26",
"latitude": "38.7660"
},
{ "...": "4 more days in the 5-day window, same shape" }
],
"globalIdLocal": 1110600,
"dataUpdate": "2026-07-26T02:31:03"
}Developer reference
https://api.ipma.pt/open-dataGotchas & limits
- There's no name-based lookup on this endpoint — resolve a city to its numeric `globalIdLocal` first via `/open-data/distrits-islands.json` (1110600 maps to "Lisboa" there), then request `/forecast/meteorology/cities/daily/<globalIdLocal>.json`
- `idWeatherType` is a bare numeric code, not a description — cross-reference it against `/open-data/weather-type-classe.json`, which maps each code to `descWeatherTypeEN`/`descWeatherTypePT` (e.g. `-99` → "--", `0` → "No information")
- Forecast data only regenerates twice a day, tied to IPMA's own model runs: the 00 UTC run is normally available from 10:00 UTC and the 12 UTC run from 20:00 UTC, per the live api.ipma.pt homepage — polling more often just re-fetches the same file
- Despite `content-type: application/json`, numeric-looking fields such as `tMin`, `tMax`, and `precipitaProb` are JSON strings, not numbers — parse them explicitly rather than assuming a numeric type