303,525 datasets indexed1,419 publishers
Open Data IndexThe index of open data about the Netherlands
Sources›Climate and environment
Rijkswaterstaat
Dutch source

Waterinfo and Water Web Services

Rijkswaterstaat's measurements in the major rivers, along the coast and in the North Sea: water level, discharge, water temperature, waves and more. A new value every ten minutes, and for some stations a series going back to 1900. Waterinfo is the website, the Water Web Services are the API behind it.

Climate and environmentOpenAPIReal timeNetherlands · monitoring location, per 10 minutes
Up to date · updated less than an hour ago · checked 17:23

Rhine discharge at Lobith (monthly mean): 683 cubic metres per second in September 2026, 61% less than in September 2025

Rhine discharge at Lobith (monthly mean), September 2025 – September 2026, in cubic metres per second. The highest point was February 2026 (3,269). Figures marked * are provisional.

Source: Rijkswaterstaat, Waterwebservices (DDAPI 2.0), Lobith (Bovenrijn, Tolkamer) · opgehaald 25 oktober 2026 · selection: ProcesType: meting; maandgemiddelde van tienminutenwaardenOpen the table Single block

What you can build with it1

What can you do with it?4 ideas

Getting started

How much higher than the tide?

Besides the measurement, Rijkswaterstaat provides the astronomical water level: what the tide alone would give. The difference is the surge caused by wind and air pressure. In a storm you see the surge build up over hours.

Getting started

The Rhine at Lobith

Follow the discharge in cubic metres per second where the Rhine enters the Netherlands. Put a dry summer next to a wet winter and you see how far apart they are.

Advanced

Sea level since 1900

Calculate annual mean water levels at Hoek van Holland from 1900. Mind the switch in method from manual readings to automatic ten-minute values.

Advanced

Wind and water level

Join the highest water level per day to the wind KNMI measured at Hoek van Holland. Which wind direction and strength give the highest surge?

How to process it4 steps

  1. Fetch the catalogue

    One POST with JSON returns all monitoring locations (2,499 on 15 October 2026) and the combinations of quantity, unit and compartment. That is how you find a location code, for example hoekvanholland or lobith.bovenrijn.tolkamer. The response is about 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. Request the latest value

    OphalenLaatsteWaarnemingen returns the last value per series. Old series come along too (the last manual reading from 1900, 1953 …). Keep only ProcesType meting and take the newest timestamp.

    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. Fetch a period, with ProcesType

    OphalenWaarnemingen returns all values between start and end. Set ProcesType to meting, otherwise you also get the forecast and the astronomical tide.

    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. Count first, then fetch

    OphalenAantalWaarnemingen counts how many values there are per year or month. One year of ten-minute values is 52,561 values per series. Fetch long series one year at a time.

    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

Interesting combinations

Similar sources

What to watch out for

  • Times without summer time

    The API uses fixed Dutch winter time (+01:00), also in summer. You must give start and end times that way too, or you get an error.

  • Unchecked, checked, final

    Every value has a Statuswaarde. Recent measurements are unchecked. On 15 October 2026 the 2025 values for Hoek van Holland were checked.

  • Nothing before 1900

    A start date before 1900 gives an error, even if you only want to know whether data exists.

  • Large responses

    One year of water levels at Hoek van Holland is about 32 MB of JSON, because measurement, forecast and astronomical tide are all included and every value carries the full metadata.

  • Old example code no longer works

    The old address waterwebservices.rijkswaterstaat.nl redirects to a page about the switch. Use ddapi20-waterwebservices.rijkswaterstaat.nl. Many scripts and packages online still use the old address.

APIREST (POST met JSON), DDAPI 2.0 · read 16 Oct 2026

StandardREST (POST met JSON), DDAPI 2.0docs
Access no key

No key or account (tested). tested

Size2,499

monitoring locations in the catalogue, with 202 quantity/unit/compartment combinations (137 quantities) and 21,085 location × measurement links (16 Oct 2026) tested

Formats

json

Base URL

https://ddapi20-waterwebservices.rijkswaterstaat.nl

Endpoints 5

  • POST/METADATASERVICES/OphalenCatalogusWhole catalogue (~1.75 MB): LocatieLijst, AquoMetadataLijst, AquoMetadataLocatieLijst (which measurement where), status values, reference levels, commissioning bodies.
  • POST/ONLINEWAARNEMINGENSERVICES/OphalenLaatsteWaarnemingenLatest value per series for one or more locations and quantities (LocatieLijst + AquoPlusWaarnemingMetadataLijst).
  • POST/ONLINEWAARNEMINGENSERVICES/OphalenWaarnemingenAll values in a period for one location and quantity (Locatie + AquoPlusWaarnemingMetadata + Periode).
  • POST/ONLINEWAARNEMINGENSERVICES/OphalenAantalWaarnemingenNumber of values per year or month (Groeperingsperiode), separately per ProcesType and instrument.
  • POST/ONLINEWAARNEMINGENSERVICES/CheckWaarnemingenAanwezigAre there values in this period? Answer {"WaarnemingenAanwezig": "true"} (a string, not a boolean).

Filtering tested

No query language: the JSON body names the location(s), the Aquo metadata (compartment, quantity, process type …) and the period.

Parameters 7

Locatie.Code / LocatieLijst[].CodeLocation code from the catalogue, lower case: hoekvanholland, lobith.bovenrijn.tolkamer. Unknown code: 400 with 'Locatie … niet gevonden'.tested
AquoMetadata.Compartiment.CodeOW = surface water (also LT air, BS soil …).tested
AquoMetadata.Grootheid.CodeWATHTE water level, Q discharge, T temperature, Hm0 wave height … (137 codes).tested
AquoMetadata.ProcesTypeWithout it you get measurement, forecast and astronomical tide mixed together.tested
Periode.Begindatumtijd / EinddatumtijdISO 8601 with time and zone (2026-10-15T00:00:00.000+01:00; Z and +02:00 are converted). Date only: 400. End is inclusive.tested
GroeperingsperiodeOnly for OphalenAantalWaarnemingen.experience
CatalogusFilterWhich lists the catalogue returns, each true/false: Grootheden, Eenheden, Compartimenten, Hoedanigheden, Parameters, ProcesTypes, Typeringen, Organen, BioTaxon, Groeperingen, WaardeBewerkingsMethoden.from the description

Fields in the OphalenWaarnemingen response (selection) 7

NameTypeMeaning
Locatie.Code / Naam / Lat / Lontekst / getal · ETRS89 (graden)Meetlocatie
AquoMetadata.Grootheid / Eenheid / Hoedanigheidcode + omschrijvingWat er gemeten is, in welke eenheid (cm, m3/s …) en ten opzichte van wat (NAP)
MetingenLijst[].Tijdstipdatetime · +01:00 (wintertijd, het hele jaar)Tijdstip van de waarde
MetingenLijst[].Meetwaarde.Waarde_NumeriekgetalDe waarde (Waarde_Alfanumeriek als tekst)
WaarnemingMetadata.StatuswaardetekstOngecontroleerd, Gecontroleerd of Definitief
WaarnemingMetadata.Kwaliteitswaardecodetekst00 = normaal; andere codes markeren twijfelachtige waarden
AquoMetadata.WaardeBepalingsMethodecode + omschrijvingHoe de waarde tot stand kwam (bv. gemiddelde over 10 minuten)

Limits and pitfalls

  • No limit seen, but every value comes with full metadata: one year of Hoek van Holland water levels (3 series × ~52,600) is ~32 MB. Request per year or month and count first with OphalenAantalWaarnemingen. experience
  • Dates before 1900 give a parse error. experience
  • Response times are always in +01:00, also in summer. Convert to Europe/Amsterdam yourself. tested
  • OphalenLaatsteWaarnemingen also returns closed series (last manual reading from 1900, 1953 …): take the newest timestamp. experience
  • Sometimes two series for the same quantity (BemonsteringsSoort SB continuous and NVT with Bemonsteringshoogte -999999999); at Lobith NVT gave a tenth of SB. Use SB. experience
  • Errors come as JSON with a Dutch message ('Het parsen van Begindatumtijd is mislukt …', 'Locatie … niet gevonden'). No OpenAPI; GET on the paths returns 404 problem+json. tested
  • The old host waterwebservices.rijkswaterstaat.nl redirects to a migration page; old scripts must move to DDAPI 2.0. experience

Try it HTTP 200 · 515 ms · 16 Oct

curl -X POST "https://ddapi20-waterwebservices.rijkswaterstaat.nl/ONLINEWAARNEMINGENSERVICES/OphalenWaarnemingen" \
  -d '{"Locatie":{"Code":"hoekvanholland"},"AquoPlusWaarnemingMetadata":{"AquoMetadata":{"Compartiment":{"Code":"OW"},"Grootheid":{"Code":"WATHTE"},"ProcesType":"meting"}},"Periode":{"Begindatumtijd":"2026-10-15T00:00:00.000+01:00","Einddatumtijd":"2026-10-15T00:30:00.000+01:00"}}'
{
  "Succesvol": true,
  "WaarnemingenLijst": [
    {
      "AquoMetadata": {
        "BemonsteringsApparaat": {
          "Code": "8000",
          "Omschrijving": "NVT"
        },
        "BemonsteringsMethode": {
          "Code": "NVT",
          "Omschrijving": "NVT"
        },
        "BemonsteringsSoort": {
          "Code": "SB",
          "Omschrijving": "Steekbemonstering"
        },
        "BioTaxon": {
          "Code": "NVT",
          "Omschrijving": "NVT"
        },
        "BioTaxonType": {
          "Code": "",
          "Omschrijving": ""
        },
        "Compartiment": {
          "Code": "OW",
          "Omschrijving": "Oppervlaktewater"
        },
        "Eenheid": {
          "Code": "cm",
          "Omschrijving": "centimeter"
        },
        "Groepering": {
          "Code": "",
          "Omschrijving": ""
        },
        "Grootheid": {
          "Code": "WATHTE",
          "Omschrijving": "Waterhoogte"

Shortened response, saved at harvest time. Click the URL for the real, current response.

Read from The catalogue itself (POST): locations, quantities, units, compartments and which combination is measured where · ddlpy (Deltares, Python): the DDAPI 2.0 endpoints with example requests. RWS's own documentation on rijkswaterstaatdata.nl was not read: robots.txt forbids everything there. Labels: from the description stated in what the api itself publishes. tested from our own small call. platform applies to every api on this platform, per its documentation. experience learned while building open data index.

How to fetch it

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

More from Rijkswaterstaat in our index

6,621 datasets in Nationaal Georegister, data.overheid.nl, ArcGIS Online Rijkswaterstaat, 4TU.ResearchData (via DataCite). These changed most recently.

All about Rijkswaterstaat

More in this topic

See how this page is built
bron: rws-waterinfo
blokken: []
secties:
  - ideeen
  - verwerken
  - koppelingen
  - vergelijkbaar
  - beperkingen
  - code
cache:
  tag: bron:rws-waterinfo
  ververs: na statuscheck, als de bron nieuwer is
statuscheck:
  methode: nieuwste gemeten waterhoogte in Hoek van Holland (OphalenLaatsteWaarnemingen)
  verwacht: elk uur

Source: content/bronnen/rws-waterinfo.yaml · Markdown