# Crop parcels (BRP) and reference parcels

Every year farmers tell RVO which crop grows on their parcels. From those declarations RVO builds the crop parcel register: each parcel as a polygon, with crop, crop code and category (grassland, arable land, landscape feature, nature area …), reference date 15 May. The API holds the final 2025 edition with 2,331,084 parcels; the downloads go back to 2009 and a draft for 2026 is already available. Also the reference parcels: the outline of all agricultural land (2,358,200 polygons), formerly the Agrarisch Areaal Nederland. Via PDOK as OGC API, WFS, WMS and GeoPackage.

- Publisher: Rijksdienst voor Ondernemend Nederland, Publieke Dienstverlening Op de Kaart
- Area: Netherlands · Finest detail: parcel
- Period: 2009 tot en met 2025 (download), 2025 in de API, concept 2026 · Refreshed: yearly
- Access: Open · Licence: Public Domain Mark 1.0 (volgens de landing pages van beide OGC API's)
- Join keys: gewascode, jaar, coördinaten
- Status: ok (2026-05-15) · jaargang 2025 (definitief)
- URL: https://www.pdok.nl/introductie/-/article/basisregistratie-gewaspercelen-brp-

## What can you do with it?
- **Where are the maize, lilies and potatoes?.** Filter on crop or crop code and map the parcels. With the downloads of earlier years you can see how a region changes crops.
- **Grassland, arable land or ditch.** Of the 2.3 million parcels in 2025, 43% are landscape features (mostly ditches, also wooded banks and hedges), 39% grassland and 16% arable land. Also sum the area: the split looks very different then.
- **Farming next to nature.** Overlay the parcels on the Natura 2000 sites and count per site which crops grow within a kilometre. That makes the nitrogen debate concrete per place.
- **Fifteen years of crop rotation.** Compare the 2009 to 2025 editions at the same place. Parcel boundaries shift each year; join on location, not on an id.

## How to process it
1. **Parcels in an area.** The OGC API only filters by location (bbox in degrees), at most 1,000 per page; the next link gives the following page.
   `https://api.pdok.nl/rvo/gewaspercelen/ogc/v1/collections/brpgewas/items?f=json&limit=1000&bbox=5.60,52.50,5.65,52.53`
2. **Filter by crop or category.** For that you need the WFS (FES filter). With resultType=hits you get the count straight away.
   `https://service.pdok.nl/rvo/gewaspercelen/wfs/v1_0?service=WFS&version=2.0.0&request=GetFeature&resultType=hits&typeNames=BrpGewas&FILTER=%3CFilter%3E%3CPropertyIsEqualTo%3E%3CPropertyName%3Ecategory%3C/PropertyName%3E%3CLiteral%3EBouwland%3C/Literal%3E%3C/PropertyIsEqualTo%3E%3C/Filter%3E`
3. **Download earlier years.** The ATOM feed lists one file per year: GeoPackage from 2020 (2025 is 2.9 GB), ZIP for 2009 to 2019, and gewaspercelen_concept_2026.gpkg.
   `https://service.pdok.nl/rvo/brpgewaspercelen/atom/v1_0/basisregistratie_gewaspercelen_brp.xml`
4. **Reference parcels.** The outline of agricultural land, with type (e.g. Water) and the source of the boundary (versiebron, e.g. aerial photo). Here too only a bbox filter in the OGC API.
   `https://api.pdok.nl/rvo/referentiepercelen/ogc/v1/collections/referentiepercelen/items?f=json&limit=100&bbox=5.60,52.50,5.65,52.53`

## Interesting combinations
- Which farming surrounds a nature site? → [natura2000](https://www.opendataindex.nl/en/bron/natura2000.md) via coördinaten (ruimtelijk). Draw a one-kilometre buffer around each Natura 2000 site and count parcels per category or crop.
- Is the maize on high or low ground? → [ahn](https://www.opendataindex.nl/en/bron/ahn.md) via coördinaten. Compute each parcel's average height from the AHN and compare crops. Low, wet parcels are more often grassland.

## Similar sources
- [esa-worldcover](https://www.opendataindex.nl/en/bron/esa-worldcover.md): Land cover from satellite images at 10 metres, worldwide, but without crop or parcel boundary.
- [copernicus-sentinel2](https://www.opendataindex.nl/en/bron/copernicus-sentinel2.md): Shows how a parcel looks through the season; the BRP says what the farmer declared.
- [CBS Landbouwtelling](https://opendata.cbs.nl/statline/#/CBS/nl/dataset/80780ned/table): Area per crop per municipality or province, as a table. The BRP gives the location of every parcel.

## What to watch out for
- **What the farmer declared, not what grows.** The register is the user's declaration on the reference date of 15 May. Second crops and changes later in the year are not included.
- **The API holds one edition.** On 16 October 2026 only 2025 (status Definitief) was in the API and the WFS; earlier years and the 2026 draft only as downloads.
- **A parcel is not always a field.** 1,001,332 of the 2,331,084 parcels are landscape features: ditches, wooded banks, hedges, ponds. Counting parcels includes them.
- **Few filters in the OGC API.** For brpgewas and referentiepercelen only the geometry is queryable. Filter by crop or year via the WFS or after downloading.
- **Large files.** One year as a GeoPackage is almost 3 GB. For one region the API with a bbox is easier.

## API (OGC WFS 2.0.0)

- Base: https://service.pdok.nl/rvo/gewaspercelen/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: 2331084 features in brpgewaspercelen:BrpGewas (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: brpgewaspercelen:BrpGewas (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 (7)
`geom` geometrie, `category` string, `gewas` string, `gewascode` integer, `jaar` integer, `status` 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)
- An unfiltered count over all parcels takes about 12 seconds; with a filter on category about 5 seconds (16 Oct 2026). (tested)
- The OGC API (https://api.pdok.nl/rvo/gewaspercelen/ogc/v1) has the same edition but only filters by bbox and gives no total. (tested)

### Example
```
https://service.pdok.nl/rvo/gewaspercelen/wfs/v1_0?request=GetFeature&service=WFS&version=2.0.0&typeNames=brpgewaspercelen:BrpGewas&outputFormat=application/json&srsName=EPSG:4326&count=1&propertyName=gewas,gewascode,category,jaar
```

## How to fetch it

### curl
```bash
curl "https://api.pdok.nl/rvo/gewaspercelen/ogc/v1/collections/brpgewas/items?f=json&limit=10&bbox=5.60,52.50,5.65,52.53"
```

### python
```python
import requests, collections

url = "https://api.pdok.nl/rvo/gewaspercelen/ogc/v1/collections/brpgewas/items"
d = requests.get(url, params={"f": "json", "limit": 1000, "bbox": "5.60,52.50,5.65,52.53"}).json()
print(collections.Counter(f["properties"]["gewas"] for f in d["features"]).most_common(10))
```


## Examples with real figures (1)

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

- **Parcels in the crop parcel register by land type: landscape feature (ditch, hedge, wooded bank …) is the largest part, 43% in 2025** (2025). Table brpgewaspercelen:BrpGewas. [Example](https://www.opendataindex.nl/en/voorbeeld/rvo-gewaspercelen-categorie)
  - `https://service.pdok.nl/rvo/gewaspercelen/wfs/v1_0?service=WFS&version=2.0.0&request=GetFeature&resultType=hits&typeNames=BrpGewas&FILTER=%3CFilter%3E%3CPropertyIsEqualTo%3E%3CPropertyName%3Ecategory%3C%2FPropertyName%3E%3CLiteral%3EBouwland%3C%2FLiteral%3E%3C%2FPropertyIsEqualTo%3E%3C%2FFilter%3E`
  - `https://service.pdok.nl/rvo/gewaspercelen/wfs/v1_0?service=WFS&version=2.0.0&request=GetFeature&resultType=hits&typeNames=BrpGewas&FILTER=%3CFilter%3E%3CPropertyIsEqualTo%3E%3CPropertyName%3Ecategory%3C%2FPropertyName%3E%3CLiteral%3EGrasland%3C%2FLiteral%3E%3C%2FPropertyIsEqualTo%3E%3C%2FFilter%3E`
