NL Emission Zones Monitor (Milieuzones & Zero-Emission Zones)
Pricing
from $3.00 / 1,000 zone-results
NL Emission Zones Monitor (Milieuzones & Zero-Emission Zones)
Landelijke, live NDW-databron van alle Nederlandse milieuzones en zero-emissiezones per gemeente, met wijzigingsdetectie (nieuw/gewijzigd/ingetrokken) tussen runs.
Pricing
from $3.00 / 1,000 zone-results
Rating
0.0
(0)
Developer
Dennis
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
Share
NL Emission Zones Monitor (Milieuzones & Zero-Emission Zones) ๐ซ๐
Every Dutch environmental zone (milieuzone) and zero-emission zone in one call โ straight from NDW (Nationale Databank Wegverkeersgegevens), the official Dutch road-traffic-data cooperative of Rijkswaterstaat, provinces, and municipalities. No login, no API key, no scraping: this is a direct government GeoJSON feed, with built-in change detection between runs.
Why this actor?
The Netherlands is in the middle of an active regulatory wave: municipalities are rolling out zero-emission zones for delivery traffic in phases from 2025 through 2027, on top of existing classic environmental zones (milieuzones) that restrict older diesel trucks and vans. Every municipality used to publish this separately โ Amsterdam, Rotterdam, Utrecht, Den Haag, and 23 others each with their own dataset โ until NDW started aggregating all of them into a single national feed.
This actor turns that raw feed into a clean, filterable, monitorable dataset:
- ๐ณ๐ฑ Full national coverage, zero configuration โ 37 zones across 27 municipalities in one call, no pagination
- ๐ฆ Both zone types in one place โ
ZERO_EMISSION_ZONE(ZE zones for vans/trucks) andENVIRONMENTAL_ZONE(classic milieuzones) - ๐ Vehicle-type exemptions included โ per zone, which vehicle types (car/van/truck/bus) and Euro-classification are exempt
- ๐ Future zones already visible โ the source includes zones with a
validFromdate years ahead (e.g. Amersfoort/Apeldoorn/Deventer/Ede 2027), flagged as "not yet active" so you can plan ahead - ๐ Built-in change detection โ enable monitor mode to flag new, changed, or withdrawn zones between runs, instead of re-processing a static snapshot every time
- ๐ซ No personal data โ geographic zones, vehicle categories, and traffic orders only; no license plates or individual drivers
When should an AI agent use this?
- "Which Dutch cities have a zero-emission zone for delivery vans right now?"
- "Is there an environmental zone in Utrecht, and which vehicles are exempt?"
- "Which new emission zones are planned for 2027?"
- "Alert me if any Dutch municipality changes or withdraws an emission zone."
- "List every municipality with a milieuzone for trucks and the required Euro classification."
- "Compare zero-emission zone rollout dates across Dutch cities."
What this Actor does
- Fetches the full national zone feed from the NDW
emission-zones/v1/mapGeoJSON endpoint - Maps every raw feature into a flat, analysis-ready JSON object
- Flags zones whose
validFromdate is still in the future (isNogNietActief) - Filters by municipality, zone type, and/or active status
- Optional monitor mode: compares against the previous run (via the actor's key-value store) and marks each zone as new, changed, withdrawn, or unchanged
Input
| Field | Type | Description |
|---|---|---|
gemeenten | string[] | Exact municipality names (case-insensitive), e.g. "Amsterdam". Leave empty for all municipalities. |
zoneTypes | string[] | Filter on "ZERO_EMISSION_ZONE" and/or "ENVIRONMENTAL_ZONE". Leave empty for both. |
alleenActief | boolean | Hide zones not yet in effect (validFrom in the future). Default false. |
includeGeometrie | boolean | Include the raw GeoJSON polygon/multipolygon per zone. Increases payload size. Default false. |
maxResults | integer | Cap on output records per run (default 1000, max 5000). |
monitorMode | boolean | Compare against the previous run and flag new/changed/withdrawn zones. Default false. |
onlyChanges | boolean | With monitor mode on, only output changes, skip unchanged zones. Default false. |
Output
{"zoneId": "acbf0f7f-56a6-4b36-9a66-4b6d0c69d474","zoneNaam": "Milieuzone Amsterdam","zoneType": "ENVIRONMENTAL_ZONE","status": "DEFINITIVE","gemeente": "Amsterdam","gemeenteCode": "GM0363","geldigVanaf": "2025-01-01T00:00:00Z","geldigTot": "2030-01-01T00:00:00Z","isNogNietActief": false,"regulationId": "gmb-2024-272098","informatieUrl": "https://www.amsterdam.nl/verkeer-vervoer/milieuzone-uitstootvrijezone/","uitzonderingen": [{ "vehicleType": "CAR", "classification": "EURO5" },{ "vehicleType": "VAN", "classification": "EURO5" },{ "vehicleType": "TRUCK", "classification": "EURO6" },{ "vehicleType": "BUS", "classification": "EURO6" }],"bron": "NDW Emissiezones"}
With monitorMode: true, every record additionally includes a "wijziging" field: "nieuw", "gewijzigd", "ingetrokken", or "ongewijzigd".
Use cases
- Logistics & fleet planning โ check which cities restrict your fleet's vehicle types before routing
- Compliance / fleet-management software โ feed a single authoritative national dataset instead of maintaining 27 separate municipal integrations
- Change monitoring โ run weekly with
monitorMode: trueto get alerted the moment a new zone is announced or an existing one's dates change - AI agents & MCP tools โ flat JSON, small input schema, direct yes/no "is this zone active" signal
- Navigation apps / route planners โ build restriction layers from an authoritative government source
Pricing
This Actor uses Apify's Pay-Per-Event (PPE) pricing model.
- Actor Start: $0.00005 (Apify default)
- zone-result: $0.003 per plain zone record
- zone-wijziging-alert: $0.01 per zone flagged as new, changed, or withdrawn in monitor mode โ priced higher because this is the actionable signal, not just a data point
Legal
- Source: NDW (Nationale Databank Wegverkeersgegevens), a Dutch government road-traffic-data cooperative between Rijkswaterstaat, provinces, and municipalities. Documented at
docs.ndw.nu/en/producten/emissiezones/. - No authentication, no scraping โ this is a direct, public REST/GeoJSON API intended for reuse.
- No personal data of any kind. Zones, vehicle categories (not license plates), and public traffic orders only.
FAQ
Q: What's the difference between a "zero-emission zone" and an "environmental zone" (milieuzone)?
A: An environmental zone (ENVIRONMENTAL_ZONE) restricts older, more polluting vehicles based on Euro emission classification (e.g. no diesel trucks below Euro 6). A zero-emission zone (ZERO_EMISSION_ZONE) is stricter and, once fully in effect, only allows zero-emission vehicles for commercial/delivery traffic.
Q: A zone has validFrom in 2027 โ why is it already in the dataset?
A: NDW publishes confirmed future traffic orders as soon as the municipality's decision is definitive/planned, even years ahead. This actor surfaces that as isNogNietActief: true so you can plan for upcoming changes rather than being surprised by them.
Q: How does monitor mode work?
A: When monitorMode is enabled, the actor stores a snapshot (per-zone status + validity dates) in its key-value store after each run and compares against it on the next run. Set onlyChanges: true to only receive the zones that are new, changed, or withdrawn.
Q: How often does NDW update this feed?
A: Traffic orders don't change daily โ a weekly scheduled run with monitorMode: true is more than sufficient to catch new announcements.
Related Actors
Also by this developer:
- ../nl-parking-monitor โ same profile: a direct, authentication-free Dutch open road-traffic-data feed (RDW), no scraping involved.
- NL Ziekenhuis Wachttijden Monitor โ same profile: a direct, authentication-free Dutch government REST feed, no scraping involved.
Keywords: emissiezone, milieuzone, zero-emissiezone, ndw, low emission zone netherlands, environmental zone, ze-zone, dutch traffic regulation, fleet compliance.
Keywords
netherlands, environmental-zone, emission-zone, milieuzone, ndw, open-data, government-data, logistics, mcp-tool
Changelog
0.2.1 - Bugfix
- Fixed
monitorModechange detection never seeing prior-run state: the actor was reading/writing its snapshot to Apify's per-Run default key-value store, which is not shared between separate runs. Now uses a named, persistent key-value store. A new baseline will be captured on the next run.
0.2.0
- Change detection (
monitorMode) now also comparesuitzonderingen/exemptions between runs, not just status/validity dates โ a stricter Euro-class requirement for the same vehicle type now correctly triggers agewijzigdsignal. Comparison is order-independent (a different JSON array order alone is not a change). No pricing change.
0.1.0 - Initial release
- Fetch all Dutch environmental/zero-emission zones from the NDW national GeoJSON feed.
- Filter by municipality, zone type, and active status.
- Optional monitor mode with new/changed/withdrawn change detection via the key-value store.
- Pay-per-event pricing: base zone record vs. higher-value change alert.