303,525 datasets indexed1,419 publishers
Open Data IndexThe index of open data about the Netherlands
Sources›Housing and land

North Holland Province geoservices (ArcGIS REST)

The ArcGIS server of the province of North Holland, with nearly 200 services in the root and six subfolders. On 16 October 2026 we counted 3,843 leaf layers on the server; because the same layer recurs in many collection services, our index keeps 2,683 after deduplication. Three quarters sit in the oi_op folder (environmental information), including a time series of the provincial environmental regulation, the provincial monuments and the nature management plans per year. Almost none of this is on data.overheid.nl or in the National Georegister.

Housing and landClimate and environmentTraffic and transportOpenAPIMap layerNetherlands · feature (province of North Holland)
Reachable · checked 17:23
apps.vertigisstudio.eu
Screenshot of apps.vertigisstudio.eu

Everything that's in it2,732

All services and layers on this ArcGIS server, fetched every night. Every layer has its own page with fields, geometry and a query call.

2,732in total
2,616map layers
96rasters
0updated in the past 30 days

Provincial monuments in North Holland by type: most small objects (275 features), then Stelling van Amsterdam and flood defence elements

Provincial monuments in North Holland by type, oktober 2026, in features. Total: 761; the largest 6 of 6 categories are shown. Small objects is 36% of the total. Counted with one statistics query on the layer (field srt_monume). One monument can consist of several features (polygons). Some municipality names in the layer predate mergers (Zeevang, Graft-De Rijp).

Source: Provincie Noord-Holland, ArcGIS-dienst oi_dataservice_alg (laag Provinciale monumenten INSPIRE) · opgehaald 25 oktober 2026Open the table Single block

What can you do with it?3 ideas

Getting started

Provincial monuments on the map

The layer Provinciale monumenten INSPIRE has 761 features: 275 small objects, 224 parts of the Defence Line of Amsterdam, 150 flood defence elements and 102 hydraulic works. Fetch them as GeoJSON and plan a walk.

Getting started

A map image without code

Every MapServer also has a WMS. Paste the GetCapabilities url into QGIS and you have the layers as a map.

Advanced

How did the environmental regulation change?

The service oi_povnh_tijdreeks holds versions of the provincial environmental regulation side by side. Compare two versions of the same layer to see which areas were added or removed.

How to process it4 steps

  1. Browse by folder

    Mind the path: /ags/rest/services, not /arcgis/. The oi_op folder has most services; ondergronden holds aerial photos (rasters, not queryable).

    https://geoservices.noord-holland.nl/ags/rest/services/oi_op?f=json
  2. Fetch a layer as GeoJSON

    Filter with where and request degrees with outSR=4326. maxRecordCount differs per service (usually 1,000 or 2,000); check the layer JSON and page with resultOffset.

    https://geoservices.noord-holland.nl/ags/rest/services/oi_dataservice_alg/MapServer/31/query?where=srt_monume%3D%27Stelling+van+Amsterdam%27&outFields=element,plaats,gemeente&outSR=4326&resultRecordCount=5&f=geojson
  3. Count per category

    Statistics work: a single call returns the number of monument features per type.

    https://geoservices.noord-holland.nl/ags/rest/services/oi_dataservice_alg/MapServer/31/query?where=1%3D1&outStatistics=%5B%7B%22statisticType%22%3A%22count%22%2C%22onStatisticField%22%3A%22objectid%22%2C%22outStatisticFieldName%22%3A%22n%22%7D%5D&groupByFieldsForStatistics=srt_monume&f=json
  4. Or as WMS

    The same service as WMS 1.3.0 for QGIS or a web map.

    https://geoservices.noord-holland.nl/ags/services/oi_dataservice_alg/MapServer/WMSServer?request=GetCapabilities&service=WMS

Interesting combinations

Similar sources

  • data.overheid.nl

    North Holland lists 94 datasets on data.overheid.nl (mostly public domain); only a few layers of this server appear there too.

  • Dataportaal Noord-Holland not in the index yet

    The province's own viewer on the same services, to browse and download without an API.

What to watch out for

  • Licence not established, partly Geo Gedeeld

    The server says nothing about reuse. In the NGR, 50 of North Holland's 61 records carry the Geo Gedeeld licence, which is not open. Check per layer.

  • Many duplicate layers

    The same layer sits in several collection services (oi_dataportaal_geoweb, oi_ilc, oi_gezonde_leefomgeving …). Deduplicate on layer name plus fields: 3,843 leaf layers become 2,683.

  • Dates only in the description

    Layers carry no modification date. A few services state in their description that they were 'published by script on 07-07-2025'; that is the publication, not the content.

  • Outdated municipality names

    The monument layer lists municipalities that no longer exist (Zeevang, Graft-De Rijp), and the municipality is blank for 382 features.

APIArcGIS REST · read 16 Oct 2026

StandardArcGIS RESTdocs
Access no key

No key or token: the directory and all calls below worked anonymously. tested

Size3,852

leaf layers in 194 queryable services; about 2,140 unique layer names (the same layer sits in several services) tested

Formats

jsongeojsonpbfpng (export, WMS)xml/geojson (WFS)

Base URL

https://geoservices.noord-holland.nl/ags/rest/services

Endpoints 9

  • GET?f=jsonDirectory: version, folders and services (name + type).
  • GET/{map}?f=jsonServices in one folder.
  • GET/{dienst}/MapServer?f=jsonService: layers and tables (id, name, group layer or not), maxRecordCount, capabilities, projection, description.
  • GET/{dienst}/MapServer/{laag}?f=jsonLayer: fields (name, type, alias, length), geometry type, maxRecordCount, supportedQueryFormats and advancedQueryCapabilities (pagination, statistics, orderBy, distinct).
  • GET/{dienst}/MapServer/{laag}/queryQuery features with a where clause or spatial filter; also count (returnCountOnly) and group (outStatistics). Response in JSON, GeoJSON or PBF.
  • GET/{dienst}/MapServer/legend?f=jsonLegend per layer: labels and symbols (PNG as base64).
  • GET/{dienst}/MapServer/export?bbox=…&bboxSR=4326&size=600,400&format=png&f=imageMap image as PNG for a rectangle; with f=json you get a link to the image. Without bbox: error 'bbox must be specified'.
  • GEThttps://geoservices.noord-holland.nl/ags/services/{map}/{dienst}/MapServer/WMSServer?request=GetCapabilities&service=WMSWMS 1.3.0 of the same MapServer: path without /rest/ and with /WMSServer. Only for services whose supportedExtensions lists WMSServer.
  • GEThttps://geoservices.noord-holland.nl/ags/services/{map}/{dienst}/MapServer/WFSServer?service=WFS&request=GetCapabilitiesWFS 2.0 of the same MapServer (only if supportedExtensions lists WFSServer); GetFeature with outputFormat=GEOJSON.

Filtering platform

SQL-like where clause on the layer's fields, plus an optional spatial filter (geometry). Group and count with outStatistics.

=<>>>=<<=LIKEINIS NULLBETWEENANDORNOT

Parameters 13

whereCondition in SQL-92 style: 1=1 for everything, text in single quotes (GEMEENTE='Zwolle'), LIKE with %, AND/OR, dates as DATE 'YYYY-MM-DD'. Required when there is no other filter.tested
outFieldsFields in the response, comma-separated, or * for all fields.tested
returnGeometryfalse = attributes only (much smaller response).tested
outSRProjection of the geometry in the response; 4326 = degrees (WGS84). Default is the layer's projection, here RD (28992).tested
fFormat: json (Esri JSON), geojson, pbf (protobuf), pjson (indented) or html (browse in the browser).tested
resultOffsetPagination: number of features to skip (from 0). Use together with orderByFields for a stable order.tested
resultRecordCountMaximum number of features in this response (capped at the layer's maxRecordCount).tested
orderByFieldsSort order, e.g. 'OBJECTID' or 'n DESC' (also on a statistics field).tested
returnCountOnlytrue = only the number of features matching where: {"count": …}.tested
outStatisticsServer-side statistics: list of {statisticType, onStatisticField, outStatisticFieldName}; statisticType count, sum, min, max, avg, stddev or var. URL-encode it.tested
groupByFieldsForStatisticsFields to group by with outStatistics (like GROUP BY).tested
returnDistinctValuestrue with outFields and returnGeometry=false: the unique values of those fields.tested
geometrySpatial filter: a point 'x,y' or envelope 'xmin,ymin,xmax,ymax', with geometryType (esriGeometryPoint, esriGeometryEnvelope), inSR (input projection), spatialRel (esriSpatialRelIntersects) and optionally distance + units (esriSRUnit_Meter) for a radius.platform

Fields of the example layer 10 · oi_op/oi_dataportaal_geoweb/MapServer/23 (66 zonneparken)

NameTypeMeaning
objectidOIDObjectsleutel
naamStringNaam van het park
categorieStringZonnepark op veld of op parkeren
gemeentenaamStringGemeente
ingebruikname_jaarIntegerJaar van ingebruikname
netto_opp_park_haString · haNetto oppervlakte (tekstveld)
geschatte_vermogen_mwString · MWGeschat vermogen (tekstveld: '0.08')
geschatte_opbrengst_gwh_jrString · GWhGeschatte opbrengst per jaar (tekstveld)
sde_vermogen_mwString · MWVermogen volgens de SDE-projectenlijst
peildatumStringHerkomst en peildatum als tekst ('SDE-lijst (jan 2022), OSM (juli 2022) …')

Limits and pitfalls

  • At most 1.000 tot 2.000.000 (oi_dataportaal_geoweb: 2.000.000; per laag nakijken) features per response (the layer's maxRecordCount; varies per layer, see /{layer}?f=json). If there are more, the response has exceededTransferLimit: true: fetch the rest with resultOffset and resultRecordCount. tested
  • No key and no documented rate limit. Take it easy (a few requests per second) and prefer statistics or counts over fetching all features. experience
  • Note /ags/ in the address (not /arcgis/). WMS and WFS are at /ags/services/…/MapServer/WMSServer and /WFSServer, only for services whose supportedExtensions list them (oi_dataservice_alg: both; oi_dataportaal_geoweb: WFS only). tested
  • On 16 Oct 2026 around 23:30 every query on oi_dataservice_alg returned 'Underlying DBMS error [no connection to the server]' (with HTTP 200), while other services worked. Individual services can be down temporarily. tested
  • Errors come back with HTTP 200 and a JSON object {"error": {"code": 400, …}} ('Failed to execute query.' for an unknown field in where). Always check for an error field, not just the status code. tested
  • Numbers are sometimes stored as text (Zonneparken: geschatte_vermogen_mw '0.08'): sum in outStatistics then fails. Count or group on text fields, do the arithmetic yourself. tested
  • The same layer appears in several collection services (oi_dataportaal_geoweb, oi_dataservice_alg, thematic atlas services). Deduplicate on layer name and fields. experience
  • Dates only sometimes appear in the service description ('published by script on 07-07-2025 16:05:15'); otherwise no editingInfo. experience
  • Group layers (with subLayerIds) have no query; query the leaf layers below them. Raster layers have no fields and no count. platform

Try it HTTP 200 · 411 ms · 16 Oct

https://geoservices.noord-holland.nl/ags/rest/services/oi_op/oi_dataportaal_geoweb/MapServer/23/query?where=1%3D1&outStatistics=[{"statisticType"%3A"count"%2C"onStatisticField"%3A"objectid"%2C"outStatisticFieldName"%3A"n"}]&groupByFieldsForStatistics=categorie&orderByFields=n DESC&f=json
{
  "displayFieldName": "",
  "fieldAliases": {
    "categorie": "categorie",
    "n": "n"
  },
  "fields": [
    {
      "name": "categorie",
      "type": "esriFieldTypeString",
      "alias": "categorie",
      "length": 200
    },
    {
      "name": "n",
      "type": "esriFieldTypeBigInteger",
      "alias": "n"
    }
  ],
  "features": [
    {
      "attributes": {
        "categorie": "Zonnepark op veld",
        "n": 59
      }
    },
    {
      "attributes": {
        "categorie": "Zonnepark op parkeren",
        "n": 7
      }
    }
  ]
}

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

Read from Directory: 7 folders and 9 services in the root · Collection service of the data portal (214 layers) · Layer Zonneparken: fields · Esri: query operation (all parameters). 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 "https://geoservices.noord-holland.nl/ags/rest/services/oi_dataservice_alg/MapServer/31/query?where=1%3D1&outFields=element,srt_monume,plaats&outSR=4326&resultRecordCount=1000&f=geojson"

Used by

More from Noord-Holland in our index

2,887 datasets in Geoservices Provincie Noord-Holland, data.overheid.nl, Nationaal Georegister. These changed most recently.

All about Noord-Holland

More in this topic

See how this page is built
bron: geoservices-noord-holland
blokken: []
secties:
  - ideeen
  - verwerken
  - koppelingen
  - vergelijkbaar
  - beperkingen
  - code
  - gebruiktDoor
cache:
  tag: bron:geoservices-noord-holland
  ververs: na statuscheck, als de bron nieuwer is
statuscheck:
  methode: services-directory (?f=json) bereikbaar, aantal diensten als noot; de
    server geeft geen datums
  verwacht: jaarlijks

Source: content/bronnen/geoservices-noord-holland.yaml · Markdown