# Open-Meteo

Open-Meteo zet weermodellen en heranalyses om in één eenvoudige JSON-API: verwachtingen per uur (voor Nederland ook het KNMI-model HARMONIE-AROME op 2 km), en een archief vanaf 1940 uit ERA5. Je vraagt een breedte en lengte, geen weerstation. De data zijn CC BY 4.0, maar de gratis API is alleen voor niet-commercieel gebruik en minder dan 10.000 aanroepen per dag. robots.txt van de API-adressen verbiedt alle bots; de Open Data Index roept Open-Meteo daarom zelf niet aan.

- Uitgever: Open-Meteo
- Gebied: Wereld · Laagste detail: rastercel (2 km voor het KNMI-model, 9 tot 25 km voor het archief)
- Periode: archief sinds 1940; verwachting tot 16 dagen vooruit · Ververst: elk uur
- Toegang: Open · Licentie: Data CC BY 4.0; gratis API alleen niet-commercieel (commercieel = betaald abonnement)
- Koppelsleutels: coördinaten (breedte, lengte), tijd (uur, dag)
- Status: grijs
- URL: https://open-meteo.com/

## Wat kun je ermee?
- **Het weer op een plek zonder weerstation.** Vraag de dagmaxima op voor je eigen dorp in plaats van het dichtstbijzijnde KNMI-station. Vermeld wel dat het een modelwaarde is.
- **Was het echt de warmste dag?.** Het archief geeft per dag de hoogste temperatuur sinds 1940. Check claims over records, maar leg ze naast de officiële KNMI-metingen.
- **Verwachting tegen werkelijkheid.** Bewaar elke dag de KNMI-verwachting voor morgen en vergelijk die later met de meting van De Bilt. Hoe vaak zat de verwachting ernaast?
- **Zon en wind voor energieverhalen.** Zonnestraling en wind per uur maken zichtbaar waarom de stroomprijs op zonnige of winderige dagen zakt.

## Zo verwerk je het
1. **Lees eerst de voorwaarden.** Gratis alleen voor niet-commercieel gebruik: minder dan 10.000 aanroepen per dag, 5.000 per uur en 600 per minuut. Misbruik leidt tot een blokkade zonder waarschuwing.
   `https://open-meteo.com/en/terms`
2. **Verwachting met het KNMI-model.** Kies models=knmi_seamless (op de site 'KNMI Seamless (with ECMWF)': HARMONIE-AROME Nederland op 2 km en Europa, aangevuld met ECMWF).
   `https://api.open-meteo.com/v1/forecast?latitude=52.09&longitude=5.12&daily=temperature_2m_max&timezone=Europe/Amsterdam&forecast_days=2&models=knmi_seamless`
3. **Terugkijken in het archief.** Het archief gebruikt ERA5 (0,25°, vanaf 1940), ERA5-Land (0,1°, vanaf 1950) en ECMWF IFS (9 km, vanaf 2017).
   `https://archive-api.open-meteo.com/v1/archive?latitude=52.09&longitude=5.12&start_date=2025-07-01&end_date=2025-07-02&daily=temperature_2m_max`
4. **Zelf draaien.** De software is open source (AGPL-3.0). Wie veel aanroepen nodig heeft of commercieel werkt, kan hem zelf draaien of een abonnement nemen.
   `https://github.com/open-meteo/open-meteo`

## Interessante koppelingen
- Hoe goed klopt het model met de meting? → [knmi-daggegevens](https://www.opendataindex.nl/bron/knmi-daggegevens.md) via datum en coördinaat van het station. Vraag het archief op voor de coördinaat van De Bilt en leg de dagmaxima naast TX van station 260. Het verschil is wat je weet als je het model gebruikt op een plek zonder station.

## Vergelijkbare bronnen
- [knmi-daggegevens](https://www.opendataindex.nl/bron/knmi-daggegevens.md): De officiële metingen van de KNMI-stations, per dag sinds 1901 (De Bilt). Echte waarnemingen, maar alleen waar een station staat.
- [era5](https://www.opendataindex.nl/bron/era5.md): De heranalyse waar het Open-Meteo-archief grotendeels op rust, rechtstreeks van Copernicus. Vraagt een account, maar is ook commercieel te gebruiken.
- [knmi-dataplatform](https://www.opendataindex.nl/bron/knmi-dataplatform.md): Het KNMI Data Platform heeft de modeluitvoer en waarnemingen zelf, als bestanden. Vraagt een (gratis) sleutel.

## Waar je op moet letten
- **robots.txt verbiedt bots.** api.open-meteo.com en archive-api.open-meteo.com hebben 'Disallow: /' voor alle user-agents, terwijl de API voor programma's bedoeld is. Wij roepen hem niet zelf aan; de grafiek hier komt van de KNMI.
- **Niet-commercieel.** De gratis API mag niet voor commerciële toepassingen. Wat niet-commercieel is, volgt de definitie van Creative Commons. Commercieel gebruik loopt via een betaald abonnement met een eigen API-adres.
- **Model, geen meting.** Alle waarden zijn modeluitvoer of heranalyse. Lokale extremen (een hittepiek in de stad, een hoosbui) vallen in een rastercel van kilometers vaak weg.
- **Naamsvermelding verplicht.** CC BY 4.0 vraagt naamsvermelding. Noem Open-Meteo als bron en bij voorkeur ook het onderliggende model (bijvoorbeeld KNMI of ECMWF).

## API (REST (GET, JSON))

- Basis: https://api.open-meteo.com/v1
- Toegang: Geen sleutel voor niet-commercieel gebruik. Commercieel: betaald abonnement, parameter apikey en de host met voorvoegsel customer- (customer-api.open-meteo.com, customer-archive-api.open-meteo.com). (uit de beschrijving)
- Formaten: json
- Filteren: Geen querytaal: kies punt, variabelen, periode en model met queryparameters.; 

### Endpoints
- `GET /forecast`: Verwachting tot 16 dagen per coördinaat (api.open-meteo.com; standaard 7), uur, dag, 15 minuten of 'current'; met models= ook KNMI HARMONIE-AROME (knmi_seamless, knmi_harmonie_arome_netherlands).
- `GET https://archive-api.open-meteo.com/v1/archive`: Historisch weer per coördinaat uit heranalyses: ERA5 vanaf 1940 (0,25°), ERA5-Land vanaf 1950 (0,1°), CERRA 1985–juni 2021 (5 km), ECMWF IFS vanaf 2017 (9 km).
- `GET https://air-quality-api.open-meteo.com/v1/air-quality`: Luchtkwaliteit per uur uit CAMS (domains: auto, cams_europe, cams_global).
- `GET marine, ensemble, climate, flood, seasonal, elevation`: Andere API's met elk een eigen host en OpenAPI-bestand (golven, ensembles, klimaatscenario's, rivierafvoer, seizoensverwachting, hoogte).

### Parameters
- `latitude / longitude`: WGS84; meerdere punten kommagescheiden in één aanroep. (uit de beschrijving)
- `hourly / daily / current / minutely_15`: Variabelen, bv. hourly=temperature_2m,precipitation of daily=temperature_2m_max. (uit de beschrijving)
- `start_date / end_date`: JJJJ-MM-DD; verplicht bij /archive. (uit de beschrijving)
- `past_days / forecast_days / past_hours / forecast_hours`: Venster rond nu: forecast_days 0–16 (standaard 7), past_days 0–92. (uit de beschrijving)
- `timezone`: IANA-zone (Europe/Amsterdam) of auto. Zet hem voor dagwaarden die bij een Nederlandse dag horen. (uit de beschrijving)
- `models`: Model kiezen (knmi_seamless, ecmwf_ifs025, era5, era5_land …); zonder kiest Open-Meteo zelf ('best match'). (uit de beschrijving)
- `temperature_unit / wind_speed_unit / precipitation_unit / timeformat`: Eenheden (celsius, kmh, mm) en iso8601 of unixtime. (uit de beschrijving)
- `cell_selection`: Welke rastercel bij de kust. (uit de beschrijving)
- `tilt / azimuth`: Hoek en richting voor global_tilted_irradiance (zonnepanelen). (uit de beschrijving)

### Velden in het antwoord (volgens de documentatie) (7)
`latitude / longitude` getal, `elevation` getal, `utc_offset_seconds / timezone` geheel getal / tekst, `hourly.time` lijst van tijden, `hourly.<variabele>` lijst van getallen, `hourly_units` object, `generationtime_ms` getal

### Limieten en valkuilen
- Gratis: minder dan 600 aanroepen per minuut, 5.000 per uur, 10.000 per dag en 300.000 per maand; alleen niet-commercieel. Misbruik: blokkade van app of IP zonder waarschuwing. (uit de beschrijving)
- robots.txt van api.open-meteo.com en archive-api.open-meteo.com is 'Disallow: /'. Open Data Index roept deze API's daarom niet automatisch aan; alles hier komt uit de documentatie en de OpenAPI-bestanden op GitHub. (getest)
- Een fout geeft HTTP 400 met {"error": true, "reason": "…"}. (uit de beschrijving)
- ERA5 en ERA5-Land lopen 5 dagen achter. CERRA stopt in juni 2021. (uit de beschrijving)
- De KNMI-modellen (HARMONIE-AROME) reiken maar 2,5 dag vooruit; knmi_seamless plakt daarna ECMWF IFS (9 km) eraan tot 15 dagen. (uit de beschrijving)
- De software is open source (AGPL); wie veel wil of commercieel bouwt, kan Open-Meteo zelf draaien. (uit de beschrijving)


## Voorbeelden met echte cijfers (1)

Per voorbeeld de bevinding, de peildatum en de aanroep die precies deze cijfers ophaalt.

- **Zomerse dagen (25 °C of warmer) in De Bilt (KNMI-metingen): gemiddeld 29 dagen per jaar in 1996–2025, 87% meer dan in 1901–1930** (2025). Tabel daggegevens. [Voorbeeld](https://www.opendataindex.nl/voorbeeld/knmi-zomerse-dagen-de-bilt)
  - `curl -d "stns=260&vars=TX&start=19010101&end=20251231&fmt=json" https://www.daggegevens.knmi.nl/klimatologie/daggegevens`
