# Waterinfo en Waterwebservices

De metingen van Rijkswaterstaat in de grote rivieren, de kust en de Noordzee: waterhoogte, afvoer, watertemperatuur, golven en meer. Elke tien minuten een nieuwe waarde, en voor sommige meetpunten een reeks die teruggaat tot 1900. Waterinfo is de website, de Waterwebservices zijn de API erachter.

- Uitgever: Rijkswaterstaat
- Gebied: Nederland · Laagste detail: meetlocatie, per 10 minuten
- Periode: 1900 – heden (verschilt per meetpunt) · Ververst: elk uur
- Toegang: Open · Licentie: Publiek domein (Public Domain Mark)
- Koppelsleutels: locatiecode, grootheid (WATHTE, Q, T), tijdstip
- Status: ok (2026-10-16) · waterhoogte Hoek van Holland 38 cm t.o.v. NAP (ongecontroleerd)
- URL: https://waterinfo.rws.nl

## Wat kun je ermee?
- **Hoeveel hoger dan het getij?.** Rijkswaterstaat levert naast de meting ook de astronomische waterhoogte: wat het getij alleen zou geven. Het verschil is de opzet door wind en luchtdruk. Bij een storm zie je die opzet in uren oplopen.
- **De Rijn bij Lobith.** Volg de afvoer in kubieke meter per seconde waar de Rijn Nederland binnenkomt. Zet een droge zomer naast een natte winter en je ziet hoe ver die uit elkaar liggen.
- **Zeespiegel sinds 1900.** Bereken jaargemiddelden van de waterhoogte in Hoek van Holland vanaf 1900. Let op de wissel in meetmethode van handmatig aflezen naar automatische tienminutenwaarden.
- **Wind en waterstand.** Koppel de hoogste waterstand per dag aan de wind die het KNMI in Hoek van Holland mat. Welke windrichting en -kracht geven de hoogste opzet?

## Zo verwerk je het
1. **Haal de catalogus op.** Eén POST met JSON geeft alle meetlocaties (2.499 op 15 oktober 2026) en de combinaties van grootheid, eenheid en compartiment. Zo vind je de code van een locatie, bijvoorbeeld hoekvanholland of lobith.bovenrijn.tolkamer. Het antwoord is ongeveer 1,75 MB.
   `curl -X POST -H 'Content-Type: application/json' -d '{"CatalogusFilter":{"Grootheden":true,"Eenheden":true,"Compartimenten":true}}' https://ddapi20-waterwebservices.rijkswaterstaat.nl/METADATASERVICES/OphalenCatalogus`
2. **Vraag de nieuwste waarde op.** OphalenLaatsteWaarnemingen geeft per reeks de laatste waarde. Er komen ook oude reeksen mee (de laatste handmatige aflezing uit 1900, 1953 …). Neem alleen ProcesType meting en daarvan het nieuwste tijdstip.
   `curl -X POST -H 'Content-Type: application/json' -d '{"LocatieLijst":[{"Code":"hoekvanholland"}],"AquoPlusWaarnemingMetadataLijst":[{"AquoMetadata":{"Compartiment":{"Code":"OW"},"Grootheid":{"Code":"WATHTE"}}}]}' https://ddapi20-waterwebservices.rijkswaterstaat.nl/ONLINEWAARNEMINGENSERVICES/OphalenLaatsteWaarnemingen`
3. **Haal een periode op, met ProcesType.** OphalenWaarnemingen geeft alle waarden tussen begin en einde. Zet ProcesType op meting, anders krijg je ook de verwachting en het astronomische getij erbij.
   `curl -X POST -H 'Content-Type: application/json' -d '{"Locatie":{"Code":"lobith.bovenrijn.tolkamer"},"AquoPlusWaarnemingMetadata":{"AquoMetadata":{"Compartiment":{"Code":"OW"},"Grootheid":{"Code":"Q"},"ProcesType":"meting"}},"Periode":{"Begindatumtijd":"2026-10-14T00:00:00.000+01:00","Einddatumtijd":"2026-10-14T01:00:00.000+01:00"}}' https://ddapi20-waterwebservices.rijkswaterstaat.nl/ONLINEWAARNEMINGENSERVICES/OphalenWaarnemingen`
4. **Tel eerst, haal daarna op.** OphalenAantalWaarnemingen telt per jaar of maand hoeveel waarden er zijn. Een jaar tienminutenwaarden is 52.561 waarden per reeks. Haal lange reeksen per jaar op.
   `curl -X POST -H 'Content-Type: application/json' -d '{"LocatieLijst":[{"Code":"hoekvanholland"}],"AquoMetadataLijst":[{"Compartiment":{"Code":"OW"},"Grootheid":{"Code":"WATHTE"}}],"Groeperingsperiode":"Jaar","Periode":{"Begindatumtijd":"2020-01-01T00:00:00.000+01:00","Einddatumtijd":"2026-01-01T00:00:00.000+01:00"}}' https://ddapi20-waterwebservices.rijkswaterstaat.nl/ONLINEWAARNEMINGENSERVICES/OphalenAantalWaarnemingen`

## Interessante koppelingen
- Welke wind geeft de hoogste waterstand? → [knmi-daggegevens](https://www.opendataindex.nl/bron/knmi-daggegevens.md) via datum (station 330, Hoek van Holland). Neem per dag de hoogste gemeten waterhoogte en koppel die aan FHX (hoogste uurgemiddelde wind) en DDVEC (windrichting) van KNMI-station 330.
- Welke uiterwaarden lopen onder bij deze waterstand? → [ahn](https://www.opendataindex.nl/bron/ahn.md) via hoogte t.o.v. NAP. Beide zijn in centimeters of meters ten opzichte van NAP. Leg de gemeten rivierstand op het hoogtemodel en kijk welk land lager ligt. Dat is een eerste schatting: dijken en stroming tellen niet mee.

## Vergelijkbare bronnen
- [PEGELONLINE (Wasserstraßen- und Schifffahrtsverwaltung)](https://www.pegelonline.wsv.de): Waterstanden op de Duitse rivieren, met een eenvoudige REST-API. Emmerich ligt net boven Lobith: daar zie je de Rijn aankomen.
- [PSMSL (Permanent Service for Mean Sea Level)](https://psmsl.org): Maand- en jaargemiddelden van de zeespiegel wereldwijd, al opgeschoond. Minder detail, makkelijker voor trends.
- [knmi-daggegevens](https://www.opendataindex.nl/bron/knmi-daggegevens.md): Weer in plaats van water. Nodig om hoge waterstanden te verklaren.

## Waar je op moet letten
- **Tijden zonder zomertijd.** De API werkt met vaste Nederlandse wintertijd (+01:00), ook in de zomer. Begin- en eindtijd moet je ook zo opgeven, anders volgt een foutmelding.
- **Ongecontroleerd, gecontroleerd, definitief.** Elke waarde heeft een Statuswaarde. Recente metingen zijn ongecontroleerd. Op 15 oktober 2026 waren de waarden van 2025 in Hoek van Holland gecontroleerd.
- **Niets van vóór 1900.** Een begindatum vóór 1900 geeft een foutmelding, ook als je alleen wilt weten of er data is.
- **Grote antwoorden.** Eén jaar waterhoogte in Hoek van Holland is als JSON zo'n 32 MB, omdat meting, verwachting en astronomisch getij er alle drie in zitten en elke waarde de volledige metadata meekrijgt.
- **Oude voorbeeldcode werkt niet meer.** Het oude adres waterwebservices.rijkswaterstaat.nl stuurt door naar een pagina over de overstap. Gebruik ddapi20-waterwebservices.rijkswaterstaat.nl. Veel scripts en pakketten op internet gebruiken nog het oude adres.

## API (REST (POST met JSON), DDAPI 2.0)

- Basis: https://ddapi20-waterwebservices.rijkswaterstaat.nl
- Toegang: Geen sleutel of account (getest). (getest)
- Formaten: json
- Omvang: 2499 meetlocaties in de catalogus, met 202 combinaties van grootheid/eenheid/compartiment (137 grootheden) en 21.085 koppelingen locatie × meting (16 okt 2026) (getest)
- Filteren: Geen querytaal: je beschrijft in de JSON-body welke locatie(s), welke Aquo-metadata (compartiment, grootheid, procestype …) en welke periode.; 

### Endpoints
- `POST /METADATASERVICES/OphalenCatalogus`: Hele catalogus (~1,75 MB): LocatieLijst, AquoMetadataLijst, AquoMetadataLocatieLijst (welke meting waar), Statuswaarden, Referentievlakken, opdrachtgevers.
- `POST /ONLINEWAARNEMINGENSERVICES/OphalenLaatsteWaarnemingen`: Laatste waarde per reeks voor een of meer locaties en grootheden (LocatieLijst + AquoPlusWaarnemingMetadataLijst).
- `POST /ONLINEWAARNEMINGENSERVICES/OphalenWaarnemingen`: Alle waarden in een periode voor één locatie en grootheid (Locatie + AquoPlusWaarnemingMetadata + Periode).
- `POST /ONLINEWAARNEMINGENSERVICES/OphalenAantalWaarnemingen`: Aantal waarden per jaar of maand (Groeperingsperiode), apart per ProcesType en meetapparaat.
- `POST /ONLINEWAARNEMINGENSERVICES/CheckWaarnemingenAanwezig`: Zijn er waarden in deze periode? Antwoord {"WaarnemingenAanwezig": "true"} (een tekst, geen boolean).

### Parameters
- `Locatie.Code / LocatieLijst[].Code`: Locatiecode uit de catalogus, kleine letters: hoekvanholland, lobith.bovenrijn.tolkamer. Onbekende code: 400 met 'Locatie … niet gevonden'. (getest)
- `AquoMetadata.Compartiment.Code`: OW = oppervlaktewater (ook LT lucht, BS bodem …). (getest)
- `AquoMetadata.Grootheid.Code`: WATHTE waterhoogte, Q afvoer, T temperatuur, Hm0 golfhoogte … (137 codes). (getest)
- `AquoMetadata.ProcesType`: Zonder krijg je meting, verwachting én astronomisch getij door elkaar. (getest)
- `Periode.Begindatumtijd / Einddatumtijd`: ISO 8601 met tijd en zone (2026-10-15T00:00:00.000+01:00; Z en +02:00 worden omgerekend). Alleen een datum: 400. Einde telt mee. (getest)
- `Groeperingsperiode`: Alleen bij OphalenAantalWaarnemingen. (ervaring)
- `CatalogusFilter`: Welke lijsten de catalogus meegeeft, elk true/false: Grootheden, Eenheden, Compartimenten, Hoedanigheden, Parameters, ProcesTypes, Typeringen, Organen, BioTaxon, Groeperingen, WaardeBewerkingsMethoden. (uit de beschrijving)

### Velden in het antwoord van OphalenWaarnemingen (selectie) (7)
`Locatie.Code / Naam / Lat / Lon` tekst / getal, `AquoMetadata.Grootheid / Eenheid / Hoedanigheid` code + omschrijving, `MetingenLijst[].Tijdstip` datetime, `MetingenLijst[].Meetwaarde.Waarde_Numeriek` getal, `WaarnemingMetadata.Statuswaarde` tekst, `WaarnemingMetadata.Kwaliteitswaardecode` tekst, `AquoMetadata.WaardeBepalingsMethode` code + omschrijving

### Limieten en valkuilen
- Geen limiet gezien, maar elke waarde komt met alle metadata: één jaar waterhoogte Hoek van Holland (3 reeksen × ~52.600) is ~32 MB. Vraag per jaar of per maand en tel eerst met OphalenAantalWaarnemingen. (ervaring)
- Datums vóór 1900 geven een parseerfout. (ervaring)
- Antwoordtijden staan altijd in +01:00, ook in de zomer. Reken zelf om naar Europe/Amsterdam. (getest)
- OphalenLaatsteWaarnemingen geeft ook afgesloten reeksen (laatste handmatige aflezing uit 1900, 1953 …): neem het nieuwste tijdstip. (ervaring)
- Soms twee reeksen voor dezelfde grootheid (BemonsteringsSoort SB doorlopend en NVT met Bemonsteringshoogte -999999999); bij Lobith gaf NVT een tiende van SB. Gebruik SB. (ervaring)
- Fouten komen als JSON met een Nederlandse melding ('Het parsen van Begindatumtijd is mislukt …', 'Locatie … niet gevonden'). Geen OpenAPI; GET op de paden geeft 404 problem+json. (getest)
- Het oude adres waterwebservices.rijkswaterstaat.nl stuurt door naar een overstappagina; oude scripts moeten naar DDAPI 2.0. (ervaring)

### Voorbeeld
```
https://ddapi20-waterwebservices.rijkswaterstaat.nl/ONLINEWAARNEMINGENSERVICES/OphalenWaarnemingen
```

## Zo haal je het op

### curl
```bash
curl -X POST -H 'Content-Type: application/json' -d '{"LocatieLijst":[{"Code":"hoekvanholland"}],"AquoPlusWaarnemingMetadataLijst":[{"AquoMetadata":{"Compartiment":{"Code":"OW"},"Grootheid":{"Code":"WATHTE"}}}]}' https://ddapi20-waterwebservices.rijkswaterstaat.nl/ONLINEWAARNEMINGENSERVICES/OphalenLaatsteWaarnemingen
```

### python
```python
import requests

r = requests.post(
    "https://ddapi20-waterwebservices.rijkswaterstaat.nl/ONLINEWAARNEMINGENSERVICES/OphalenWaarnemingen",
    json={
        "Locatie": {"Code": "lobith.bovenrijn.tolkamer"},
        "AquoPlusWaarnemingMetadata": {"AquoMetadata": {
            "Compartiment": {"Code": "OW"}, "Grootheid": {"Code": "Q"}, "ProcesType": "meting"}},
        "Periode": {"Begindatumtijd": "2026-10-14T00:00:00.000+01:00",
                    "Einddatumtijd": "2026-10-14T01:00:00.000+01:00"},
    },
)
for m in r.json()["WaarnemingenLijst"][0]["MetingenLijst"]:
    print(m["Tijdstip"], m["Meetwaarde"]["Waarde_Numeriek"], "m³/s")
```

## Wat je ermee kunt bouwen
- [Alert als de rivier bij jou te hoog of te laag staat](https://www.opendataindex.nl/bouwen/waterstand-alert.md): Een klein script dat elke paar uur de waterstand van Rijkswaterstaat ophaalt, de verwachting voor de komende dagen erbij zet en een melding geeft als de rivier buiten de normale band van de afgelopen tien jaar komt. Met de neerslag van het KNMI als verklaring.


## Voorbeelden met echte cijfers (1)

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

- **Afvoer van de Rijn bij Lobith (maandgemiddelde): 683 kubieke meter per seconde in september 2026, 61% minder dan in september 2025** (september 2026). Tabel lobith.bovenrijn.tolkamer Q. [Voorbeeld](https://www.opendataindex.nl/voorbeeld/rws-waterinfo-rijn-lobith)
  - `curl -X POST -H 'Content-Type: application/json' -d '{"Locatie":{"Code":"lobith.bovenrijn.tolkamer"},"AquoPlusWaarnemingMetadata":{"AquoMetadata":{"Compartiment":{"Code":"OW"},"Grootheid":{"Code":"Q"},"ProcesType":"meting"}},"Periode":{"Begindatumtijd":"2026-09-01T00:00:00.000+01:00","Einddatumtijd":"2026-10-01T00:00:00.000+01:00"}}' https://ddapi20-waterwebservices.rijkswaterstaat.nl/ONLINEWAARNEMINGENSERVICES/OphalenWaarnemingen`
