PDOK BAG NL Address Scraper
Pricing
from $1.24 / 1,000 results
PDOK BAG NL Address Scraper
Scrapes official Dutch address and building records from the PDOK BAG registry by search query. Returns each match as a flat row with full address fields, RD and WGS84 coordinates, and building metadata.
Pricing
from $1.24 / 1,000 results
Rating
0.0
(0)
Developer
ParseForge
Maintained by CommunityActor stats
1
Bookmarked
4
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
PDOK BAG NL Address Scraper
Scrape official Dutch address and building data from the BAG registry via PDOK, up to a million records per run. Every result comes with its full address, coordinates, building status, and administrative boundaries. No API key required. Export to CSV, JSON, Excel, or XML.
The Dutch Basisregistratie Adressen en Gebouwen (BAG) holds every address and building in the Netherlands, but querying it through the official PDOK API means paginating through GeoJSON responses and handling coordinate systems yourself. This Actor reads the PDOK BAG search endpoint directly, accepts a plain address, postcode, or city name, and returns each match in one flat, consistent row. You can filter by object type, from a single address up to a whole province.
| Who uses it | What they scrape PDOK BAG for |
|---|---|
| Real estate analysts | Compile a dataset of all addresses within a Dutch municipality for portfolio analysis. |
| Logistics planners | Validate and enrich delivery addresses against the official national registry. |
| GIS specialists | Pull building footprints and coordinates for an entire neighborhood into a single CSV. |
| Data journalists | Map the distribution of building types or construction years across a city. |
What it does
This Actor collects Dutch address and building records from the PDOK BAG registry by search query and returns each one as a flat row with full address fields, coordinates, and administrative metadata.
- 📍 Full address resolution: returns street, house number, postcode, city, municipality, and province for every match.
- 🗺️ Coordinate pairs: each record includes its Rijksdriehoeksstelsel (RD) coordinates and WGS84 latitude/longitude.
- 🏢 Building metadata: construction year, building status, surface area, and intended use are included when available.
- 🔍 Type filtering: restrict results to addresses, streets, postcodes, cities, municipalities, provinces, districts, or neighborhoods.
Results export to CSV, JSON, Excel, or XML, or straight from the API.
What you can do with PDOK BAG data
🏠 Validate a batch of Dutch addresses.
A logistics company runs the Actor with a postcode range to confirm every delivery address exists in the official BAG registry before dispatching.
📊 Map building ages across a municipality.
A city planner scrapes all addresses in Utrecht, filters by construction year, and builds a heatmap of pre-war versus post-war housing stock.
🗺️ Export a neighborhood to GIS.
A GIS analyst searches for a neighborhood name, collects every address with its RD coordinates, and loads the CSV straight into QGIS.
🔎 Find every address on a street.
A researcher types a street name, sets the type filter to 'Address', and gets every house number with its postcode and building status in one run.
Why choose this scraper
| What you get | |
|---|---|
| No API key | Queries the public PDOK Locatieserver; no registration, no authentication, no rate-limit headaches. |
| Flat output | Every BAG object, whether an address, street, or municipality, lands in the same column schema for easy analysis. |
| Dutch coordinates | RD (EPSG:28992) and WGS84 coordinates come standard, ready for GIS import without conversion. |
| Scalable | Collect up to a million records per run, enough for province-wide address inventories. |
How it compares
No other Store actor targets PDOK BAG the same way, so the honest comparison is with the alternatives teams actually weigh.
| PDOK BAG NL Address Scraper | Build it in-house | By hand | |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When PDOK BAG changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |
Configure the run
Drive the Actor with a single search query, an address, postcode, or city name, and optionally narrow results by object type so only the records you need reach your dataset. The Input tab lists every parameter.
A first run with the defaults:
{"maxItems": 10,"searchQuery": "Amsterdam"}
A larger pull:
{"maxItems": 200,"searchQuery": "Amsterdam"}
Pricing
Pay-per-result: $0.00268 per result collected. You pay only for the results written to your dataset.
| Results collected | Approximate cost |
|---|---|
| 100 results | $0.27 |
| 1,000 results | $2.68 |
| 10,000 results | $26.80 |
New Apify accounts start with $5 in free credit.
Free users
Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.
Run it
- Create a free Apify account with $5 in credit.
- Open the PDOK BAG NL Address Scraper.
- Set your inputs and any filters, then click Start.
- Export the results as CSV, Excel, JSON, or XML from the Dataset tab.
Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.
Use with AI agents (MCP)
Give an AI agent live access to PDOK BAG through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:
$claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/pdok-bag-nl-scraper"
Then prompt it in plain language to run the scraper and read back the results.
Troubleshooting
Why am I getting no results?
Check your search query spelling. Dutch place names use specific characters like 'ü' in 'Utrecht'. Try a broader query, like the city name, and set the Object Type to 'All' to see what the API returns.
The coordinates look wrong on my map.
The Actor returns both RD coordinates (which only make sense on a Dutch grid) and WGS84 lat/lon. Make sure your mapping tool is using the WGS84 fields, not the RD fields.
I hit the maximum items but I know there are more addresses.
Increase the 'Maximum addresses' value in the input, up to 1,000,000. If you need more, run the Actor multiple times with narrower queries, like one municipality per run.
The run stopped early with fewer results than expected.
The PDOK API may return fewer results than requested if your query is very specific. Try broadening the search term or switching the Object Type to 'All' to see what is available.
Some fields are empty in my dataset.
Not every BAG object has every field. A street record will not have a house number, and a municipality record will not have coordinates. Filter by object type to get consistent field populations.
FAQ
| Question | Answer |
|---|---|
| What is the BAG? | The Basisregistratie Adressen en Gebouwen is the official Dutch national registry of addresses and buildings, maintained by the municipalities and managed by Kadaster. It is the authoritative source for every address, postcode, and building footprint in the Netherlands. |
| Do I need a PDOK API key? | No. This Actor queries the public PDOK Locatieserver endpoint, which is open and requires no authentication. You can start scraping immediately. |
| What search terms can I use? | You can search by full address, street name, postcode, city, municipality, province, district, or neighborhood. Examples: 'Dam 1 Amsterdam', '1012JS', 'Utrecht', or 'Centrum'. |
| What coordinate system do the results use? | Each record includes both Rijksdriehoeksstelsel coordinates (RD, EPSG:28992) and WGS84 latitude/longitude, so you can use the data directly in Dutch GIS workflows or global mapping tools. |
| Can I filter by object type? | Yes. The Object Type dropdown lets you restrict results to addresses, streets, postcodes, cities, municipalities, provinces, districts, or neighborhoods. Leave it on 'All' to get everything matching your query. |
| How many addresses can I scrape in one run? | You set the maximum with the 'Maximum addresses' field, anywhere from 1 to 1,000,000. The Actor stops when it reaches that count or when the API has no more matches. |
| Does this return building footprints? | The Actor returns the centroid coordinates of each building. For full polygon geometries, you would need to query a different PDOK service. The results do include building metadata like surface area and construction year. |
| Is this the same data the Dutch government uses? | Yes. The BAG is the legally mandated registry that all Dutch government agencies, utilities, and emergency services rely on for address and building information. |
| Can I scrape an entire province? | Yes. Set the search query to a province name, choose 'Address' as the object type, and set a high maximum count. The Actor will collect every address the PDOK API returns for that province. |
| What export formats are supported? | You can export your dataset to CSV, JSON, Excel, or XML directly from the Apify platform. |
Related actors
Browse the full ParseForge collection for more scrapers.
🆘 Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.
⚠️ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Kadaster. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.
