data.overheid.nl API
Free Dutch government open data API with no key: 20,000+ datasets tagged with full EU DCAT-AP vocabulary URIs for language, access rights and authority. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the data.overheid.nl API?
data.overheid.nl is the Netherlands' national open data register, exposing a free, key-free CKAN API with more than 20,000 datasets. Its records are unusually strict about EU vocabularies: language, access rights and authority are all recorded as Publications Office URIs rather than free text.
Where most CKAN portals leave metadata as loose strings, the Dutch register commits to controlled vocabularies. `metadata_language` is a URI under `publications.europa.eu/resource/authority/language/`, `access_rights` points at the EU access-right authority list, and `authority` resolves into the Dutch OWMS terms register naming the exact body — `RDW_(Dienst_Wegverkeer)` for the vehicle authority, for instance. If you are building anything that has to reconcile datasets across EU member states, these URIs are worth far more than the human-readable names beside them.
One operational note. The `data.overheid.nl` certificate chain is rejected by some older trust stores, including Python installations without an up-to-date CA bundle, while browsers, curl and Node all accept it. If your client reports a self-signed certificate in the chain, the problem is your bundle, not the host. Also note the portal sends no CORS headers, so browser JavaScript needs a server-side proxy, and the `help` URL in every response leaks an internal hostname — ignore it and keep using the public one.
Quick facts
- Base URL
https://data.overheid.nl/data/api/3/action- Authentication
- No API key for reads. Publishing is restricted to registered Dutch public bodies.
- Rate limit
- No published limit. Reasonable paging expected.
- Pricing
- Free. CC0 and CC BY dominate; `license_title` is populated far more consistently than on most portals.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the data.overheid.nl API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Search Dutch government datasets
GET https://data.overheid.nl/data/api/3/action/package_search?rows=1
curl 'https://data.overheid.nl/data/api/3/action/package_search?rows=1'const res = await fetch("https://data.overheid.nl/data/api/3/action/package_search?rows=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://data.overheid.nl/data/api/3/action/package_search?rows=1", timeout=20)
res.raise_for_status()
print(res.json()){
"help": "https://dataportal-ckan.koop-donl-prd.prod5.s15m.nl/api/3/action/help_show?name=package_search",
"success": true,
"result": {
"count": 20381,
"sort": "score desc, metadata_modified desc",
"facets": {},
"results": [
{
"dataset_status": "http://data.overheid.nl/status/beschikbaar",
"maintainer": null,
"referentie_data": "false",
"contact_point_email": "woopublicaties@utrecht.nl",
"authority": "http://standaarden.overheid.nl/owms/terms/Utrecht_(gemeente)",
"maintainer_email": null,
"num_tags": 7,
"frequency": "http://publications.europa.eu/resource/authority/frequency/UNKNOWN",
"metadata_language": "http://publications.europa.eu/resource/authority/language/NLD",
"high_value": "true",
"contact_point_name": "Woopublicaties",
"metadata_created": "2026-04-28T11:34:54.017853",
"metadata_modified": "2026-08-21T07:54:35.569326",
"author": null,
"author_email": null,
"access_rights": "http://publications.europa.eu/resource/authority/access-right/PUBLIC",
"id": "6d8a4fcd-cdb3-40b0-84c6-a74f3b5783fe",
"theme": [
"http://standaarden.overheid.nl/owms/terms/Bestuursrecht",
"http://standaarden.overheid.nl/owms/terms/Gemeenten"
],
"state": "active",
"relationships_as_object": [],
"license_id": "http://creativecommons.org/publicdomain/zero/1.0/deed.nl",
"type": "dataset",
"resources": [
{
"cache_last_updated": null,Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
q | query | Optional | Free-text Solr query in Dutch across titles, notes and tags. verkeer |
rows | query | Optional | Datasets per page. Defaults to 20. 1 |
start | query | Optional | Pagination offset. 0 |
fq | query | Optional | Filter query. `high_value:true` narrows to EU high-value datasets. high_value:true |
sort | query | Optional | Sort order; the default is `score desc, metadata_modified desc`. metadata_modified desc |
Response fields
successboolean- CKAN's own flag. Check it independently of the HTTP status.
result.countinteger- Total matching datasets — 20,381 unfiltered when tested.
results[].authoritystring- OWMS terms URI identifying the publishing body precisely, for example the RDW vehicle authority.
results[].metadata_languagestring- EU Publications Office language URI, not an ISO code — expect `.../language/NLD`.
results[].access_rightsstring- EU access-right URI; `.../access-right/PUBLIC` marks openly available data.
results[].high_valuestring- `"true"` or `"false"` as a string, not a boolean. Marks EU Open Data Directive high-value datasets.
results[].issuedstring- Original publication date, distinct from `metadata_created`.
results[].license_titlestring- Human licence label such as `CC-0 (1.0)`, reliably populated here.
results[].contact_point_namestring- Named contact team at the publishing body.
What you can build with the data.overheid.nl API
- Filter Dutch datasets to those the EU classifies as high-value
- Reconcile Dutch datasets against other EU catalogues using shared vocabulary URIs
- Track a specific authority such as the RDW or CBS for new releases
- Build a Dutch-language dataset discovery tool
Common errors and how to fix them
Self-signed certificate in certificate chain
An outdated CA bundle in your HTTP client, not a problem at the host.
Fix: Update your trust store, or use a client with a current bundle — browsers, curl and Node all accept this chain.
CORS error in the browser
No Access-Control-Allow-Origin header is sent.
Fix: Proxy the request through your own backend.
high_value comparison always false
The field is the string `"true"`, not a boolean.
Fix: Compare against the string, or coerce before testing.
HTTP 200 with success false
CKAN rejected your parameters.
Fix: Read `error.message` in the body.
data.overheid.nl API — frequently asked questions
Is the data.overheid.nl API free?
Yes. All read operations are free and key-free. Publishing is limited to registered Dutch public bodies.
Why do the fields contain URIs instead of plain values?
The register follows DCAT-AP and uses EU Publications Office authority lists for language, access rights and frequency. The URIs are stable identifiers you can join on across member-state catalogues, which plain strings never allow.
Why does my HTTP client reject the TLS certificate?
Some older CA bundles do not carry the intermediate this host serves. Browsers, curl and current Node accept it without complaint, so refresh your trust store rather than disabling verification.
What is a high-value dataset?
A category from the EU Open Data Directive covering geospatial, earth observation, meteorological, statistical, company and mobility data that member states must publish free and machine-readable. Filter with `fq=high_value:true`, remembering the value is a string.
Tools that pair with this API
CSV to JSON Converter
Convert CSV to a JSON array of objects online. Header-row detection, comma/semicolon/tab delimiters and pretty-printed output — 100% in your browser.
JSON Path Finder
Evaluate a dot/bracket path against your JSON and list every leaf path for discovery. Free online JSON path finder that runs 100% in your browser.
CSV Viewer & Table
View CSV as a clean HTML table online. Live search filter, row and column counts, delimiter and header options — all processed locally in your browser.
data.overheid.nl is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.