# Natura 2000 sites

The official boundaries of all Natura 2000 sites in the Netherlands: the nature protected under the EU Birds Directive and Habitats Directive. There are 162 sites, three of them in the North Sea. Each site has its number, the European site code, the type of protection and the designation decision. Via PDOK as WFS, OGC API and download.

- Publisher: Ministerie van Landbouw, Visserij, Voedselzekerheid en Natuur, Publieke Dienstverlening Op de Kaart
- Area: Netherlands · Finest detail: site (boundary)
- Period: huidige grenzen (besluiten 2008 – 2024) · Refreshed: yearly
- Access: Open · Licence: Publiek domein (CC0 volgens de WFS, PDM volgens de metadata)
- Join keys: gebiedsnummer (nr), sitecode (NL…), naam
- Status: ok (2026-01-27) · Natura 2000-gebieden, GeoPackage
- URL: https://www.pdok.nl

## What can you do with it?
- **How far do you live from Natura 2000?.** Calculate for each address or neighbourhood the distance to the nearest site. That makes the nitrogen debate concrete for your own region.
- **Birds, habitats or both.** The beschermin field says what a site is designated for: VR (Birds Directive), HR (Habitats Directive) or VR+HR. Colour the map by it.
- **Nitrogen per site.** Lay the boundaries over RIVM's nitrogen maps and calculate the average deposition per site. Compare with what RIVM reports in its nitrogen monitor.
- **Which species are observed there?.** Use one site's boundary as a search area in GBIF and count observations per species and per year.

## How to process it
1. **Everything at once, as GeoPackage.** The download is one GeoPackage of just over 9 MB in RD (EPSG:28992). This is the easiest route for a map of the whole country.
   `https://service.pdok.nl/rvo/natura2000/atom/downloads/natura2000.gpkg`
2. **One site via the OGC API.** The OGC API can filter by name (naam_n2k). Veluwe returns two features: a small separate part and the main site of over 88,000 hectares. The response is over 3 MB because of the geometry.
   `https://api.pdok.nl/rvo/natura2000/ogc/v1/collections/natura2000/items?f=json&naam_n2k=Veluwe`
3. **Or via the WFS.** The WFS has one layer, natura2000:natura2000, with 209 features for 162 sites: some sites consist of several parts. Merge them on nr before counting per site.
   `https://service.pdok.nl/rvo/natura2000/wfs/v1_0?request=GetFeature&service=WFS&version=2.0.0&typeNames=natura2000:natura2000&outputFormat=application/json&srsName=EPSG:4326&count=1`
4. **Mind the field names.** WFS and OGC API name the same fields differently: naamN2K versus naam_n2k, sitecodeH versus sitecode_h. Choose one route and stick to it.

## Interesting combinations
- Which species have been seen in this site over the past ten years? → [gbif](https://www.opendataindex.nl/en/bron/gbif.md) via geometrie van het gebied. Simplify the boundary to a polygon in WGS84 (EPSG:4326) and use it as search area in the GBIF API. Simplify large sites first, otherwise the query becomes too long.
- How does the vegetation in a site change? → [copernicus-sentinel2](https://www.opendataindex.nl/en/bron/copernicus-sentinel2.md) via begrenzing (bbox). Search scenes within the site's bbox and compare a greenness index (NDVI) per season, only within the boundary.

## Similar sources
- [Natura 2000 Network Viewer (EEA)](https://natura2000.eea.europa.eu): All Natura 2000 sites in Europe, with the species and habitats each site is designated for.
- [Monitor stikstofdepositie in Natura 2000-gebieden (RIVM)](https://data.overheid.nl/dataset/82617-monitor-stikstofdepositie-in-natura-2000-gebieden): How much nitrogen lands on the sites, now and in projections. The boundaries themselves are not included.
- [esa-worldcover](https://www.opendataindex.nl/en/bron/esa-worldcover.md): What actually grows or stands there (forest, grass, cropland, buildings), not what is protected.

## What to watch out for
- **Not every site is formally designated.** According to the service description, it contains the boundaries of formally designated sites, and for the others the boundary from the draft decision or as reported to the European Commission. Read the status field per site.
- **Dates in the metadata are off.** The NGR record gives a revision date in 2028 and a next update in 2018. For the version, rely on the date in the ATOM feed (27 January 2026).
- **Site is not the same as habitat.** The boundary shows where the site is, not which habitat types or species occur where within it. Those are in the provinces' habitat type maps and in the management plans.
- **Two projections.** By default everything comes in RD (EPSG:28992). For a web map, request EPSG:4326 or EPSG:3857.

## API (OGC WFS 2.0.0)

- Base: https://service.pdok.nl/rvo/natura2000/wfs/v1_0
- Access: No key. Fees: none; access constraints: https://creativecommons.org/publicdomain/zero/1.0/deed.nl. (from the description)
- Formats: application/gml+xml; version=3.2, text/xml; subtype=gml/3.2.1, text/xml; subtype=gml/3.1.1, application/json; subtype=geojson, application/json
- Size: 209 features in natura2000:natura2000 (tested)
- Filtering: OGC Filter Encoding (FES 2.0); PropertyIsEqualTo, PropertyIsNotEqualTo, PropertyIsLessThan, PropertyIsGreaterThan, PropertyIsLessThanOrEqualTo, PropertyIsGreaterThanOrEqualTo, PropertyIsLike, PropertyIsBetween, PropertyIsNull, Equals, Disjoint, Touches, Within, Overlaps, Crosses, Intersects, Contains, DWithin, Beyond, BBOX, During

### Endpoints
- `GET ?request=GetCapabilities`: service description
- `GET ?request=DescribeFeatureType`: fields of a layer (XSD)
- `GET ?request=GetFeature`: the features themselves, with geometry
- `GET ?request=ListStoredQueries`: stored queries
- `GET ?request=DescribeStoredQueries`: stored query details

### Parameters
- `typeNames`: which layer: natura2000:natura2000 (from the description)
- `outputFormat`: e.g. application/json for GeoJSON (from the description)
- `srsName`: projection, e.g. EPSG:4326 for web maps (default EPSG:28992, RD) (from the description)
- `count / startIndex`: paging (from the description)
- `filter`: FES XML filter on fields or geometry (from the description)
- `bbox`: box in the chosen projection (platform)

### Fields (11)
`geom` geometrie, `naamN2K` string, `vhnNew` integer, `nr` integer, `beschermin` string, `sitecodeV` string, `sitecodeH` string, `status` string, `kadaster` string, `staatscour` string, `fuuid` string

### Limits and pitfalls
- At most 1,000 features per request (CountDefault). (from the description)
- Paging supported: count and startIndex (ImplementsResultPaging). (from the description)
- A single feature with geometry is easily tens of KB (Coepelduynen: 24 KB); all 209 features together are over 22 MB as GeoJSON. For the whole country, use the GeoPackage (9.3 MB). (tested)
- propertyName does not drop the geometry in this service: even without geom in the list, the full boundary is returned. (tested)
- 209 features for 162 sites (unique nr). Merge on nr for counts per site. (tested)
- The status field is free text with the decision, for example 'Natura 2000-besluit 7 mei 2013, wijzigingsbesluit okt 2014'. There is no separate date field. (tested)
- The OGC API at api.pdok.nl/rvo/natura2000/ogc/v1 uses different field names (naam_n2k) and can only filter on naam_n2k. (tested)

### Example
```
https://service.pdok.nl/rvo/natura2000/wfs/v1_0?request=GetFeature&service=WFS&version=2.0.0&typeNames=natura2000:natura2000&outputFormat=application/json&srsName=EPSG:4326&count=1
```

## How to fetch it

### curl
```bash
curl -o natura2000.gpkg "https://service.pdok.nl/rvo/natura2000/atom/downloads/natura2000.gpkg"
```

### python
```python
import requests

# Eén gebied via de OGC API van PDOK, in WGS84
r = requests.get("https://api.pdok.nl/rvo/natura2000/ogc/v1/collections/natura2000/items",
                 params={"f": "json", "naam_n2k": "Veluwe"})
for f in r.json()["features"]:
    p = f["properties"]
    print(p["naam_n2k"], p["nr"], p["beschermin"], round(p["shape_area"] / 10_000), "ha")
```

## What you can build with it
- [Nature in your neighbourhood: which species were seen and how green is it?](https://www.opendataindex.nl/en/bouwen/biodiversiteit-buurt.md): An app that shows, for any point in the Netherlands, which plants and animals were observed within 1 km, how much of the land is green and how far away the nearest Natura 2000 site is.


## Examples with real figures (1)

For each example the finding, the reference date and the call that fetches exactly these figures.

- **Natura 2000 sites by EU directive: Habitats Directive only is the largest part, 52% in January 2026** (januari 2026). Table natura2000:natura2000. [Example](https://www.opendataindex.nl/en/voorbeeld/natura2000-richtlijnen)
  - `https://service.pdok.nl/rvo/natura2000/wfs/v1_0?service=WFS&version=2.0.0&request=GetPropertyValue&typeNames=natura2000:natura2000&valueReference=beschermin&sortBy=fuuid`
  - `https://service.pdok.nl/rvo/natura2000/wfs/v1_0?service=WFS&version=2.0.0&request=GetPropertyValue&typeNames=natura2000:natura2000&valueReference=nr&sortBy=fuuid`
