Vastgoeddossier XXL — PDOK + CBS + Klimaat + Fundering
Pricing
from $20.00 / 1,000 dossier-resultaats
Vastgoeddossier XXL — PDOK + CBS + Klimaat + Fundering
Samengesteld Nederlands vastgoed-indicatiedossier per adres: PDOK-geocoding, CBS-buurtcijfers, overstromingsrisico (RWS) en funderingsaandachtsgebied (RVO) in één genormaliseerd JSON-record. Combineert meerdere officiële open-databronnen die los al gratis zijn, maar nooit samen worden aangeboden.
Pricing
from $20.00 / 1,000 dossier-resultaats
Rating
0.0
(0)
Developer
Dennis
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Vastgoeddossier XXL — PDOK + CBS + Klimaat + Fundering + Geluid + Veiligheid 🇳🇱🏠
One request per Dutch address → a combined property-risk dossier assembled from seven official open data sources: PDOK geocoding, CBS neighbourhood statistics, CBS proximity-to-amenities figures, RIVM noise-exposure mapping, CBS registered-crime figures, RWS flood-risk zoning, and RVO foundation (subsidence) attention areas. Every single source is free and public on its own — nobody combines, normalizes and caches them into one address-level record. That combination is the product.
When should an AI agent use this?
- "Build a property dossier for this address: location, neighbourhood stats, flood risk, foundation risk."
- "Screen these 10 candidate properties for climate and foundation risk before a viewing."
- "Does this address sit in a flood-risk zone or a pre-1970 foundation attention area?"
- "Get CBS neighbourhood income/density figures plus climate risk for this postcode in one call."
- "Pre-screen a shortlist of addresses for a real estate due-diligence report."
- "How school-friendly, walkable and green is this neighbourhood — is there a school, GP and supermarket nearby?"
- "How noisy is this address — road, rail or air traffic — before I book a viewing?"
- "How does this municipality's registered crime rate compare to the national average?"
What this Actor does
- Geocodes your input (address, postcode, place name, or
"lat,lon") via the official PDOK Locatieserver, matched toadres-level by default so postcode/neighbourhood codes are always present - Enriches with CBS Kerncijfers Wijken en Buurten (population, income, households, urbanity) for the matched neighbourhood/district/municipality
- Enriches with CBS Nabijheid van voorzieningen (road-distance in km to the nearest school, GP
practice, large supermarket, train station, motorway access, childcare, and public green space) for the
matched municipality, plus a derived
schoolomgeving_score(school-proximity rating) - Checks RWS Richtlijn Overstromingsrisico (ROR) via a live PDOK WMS lookup: does this point sit in a flood-risk zone, and what's the qualitative classification/description
- Checks the RVO "Indicatieve aandachtsgebieden funderingsproblematiek" layer via PDOK WMS: what percentage of buildings in this address's postcode area (PC6) were built before 1970 — the standard proxy for wooden pile-foundation vulnerability
- Checks the RIVM Atlas Leefomgeving basisgeluidkaart (Lden 2020) via four live WMS lookups: modelled
noise exposure from road traffic, rail traffic, and air traffic individually, plus a cumulative total and
a plain-language
geluidsniveauclassification (laag/gemiddeld/hoog/zeer hoog) - Enriches with CBS Geregistreerde criminaliteit (registered crime) for the matched municipality:
crimes per 1,000 residents, total registered count, clearance rate, plus a derived
veiligheidsniveauclassification - Adds a
samenvatting(summary) block per dossier: a plain risk-level rollup (laag/middel/hoog/onbekend) so you don't have to inspect nested objects to see whether an address stands out - Processes multiple addresses per run, in parallel, fail-safe per item (one bad address never blocks the
batch), with a free
RUN_SUMMARYwritten to the key-value store at the end of every run - Honest about lookup failures: if a flood-risk, foundation-area, noise, or crime-data check itself fails
(e.g. a temporary outage), the field is
nullwith_status: "onbekend"— never silently reported as "no risk found"
Who is this for?
- Real estate agents & buyers — a fast, structured first-pass dossier before a viewing or offer
- Mortgage advisors & insurers — a documented, source-attributed risk signal to support (not replace) formal underwriting
- Property developers & investors — batch-screen a shortlist of addresses in one run
- AI agents — structured JSON, ideal as a due-diligence tool in an agentic property-research workflow
Input
| Field | Type | Description |
|---|---|---|
query / queries | string / array | Address(es), postcode(s), place name(s), or "lat,lon" — see the .actor/input_schema.json for the full bulk-item format |
lookupId / datasetId | string | Direct PDOK object-ID lookup, or a linked Apify dataset as bulk input |
mode | string | auto (default), forward, reverse, or lookup |
typeFilter | string | PDOK object-type filter for forward search, default adres (recommended — see FAQ) |
enrichWithCbs | boolean | Add CBS neighbourhood statistics (default true) |
enrichWithNabijheid | boolean | Add CBS proximity-to-amenities figures (school/GP/supermarket/station/motorway/childcare/green-space distances + school-proximity score, default true) |
enrichWithVeiligheid | boolean | Add CBS registered-crime figures (crimes per 1,000 residents, total count, clearance rate + classification, default true) |
includeKlimaat | boolean | Add the flood-risk-zone check (default true) |
includeFundering | boolean | Add the foundation-attention-area check (default true) |
includeGeluid | boolean | Add the noise-exposure check (road/rail/air traffic + cumulative total + classification, default true) |
concurrency | integer | Addresses processed in parallel, 1-20 (default 5) |
Output
One dossier per input address:
{"input_query": "Damrak 1 Amsterdam","mode": "forward","basis": {"weergavenaam": "Damrak 1, 1012LG Amsterdam","postcode": "1012LG","gemeente": "Amsterdam","provincie": "Noord-Holland","lat": 52.37714446,"lon": 4.89803846,"buurtcode": "BU0363AD03","match_kwaliteit": "hoog","_bron": "PDOK Locatieserver (Kadaster/BZK)"},"cbs": {"_bron": "CBS StatLine 86165NED (CC-BY, cbs.nl)","aantal inwoners": 934526,"gemiddeld inkomen per inwoner": null,"huishoudens totaal": 516096,"stedelijkheid": 1},"nabijheid": {"_bron": "CBS StatLine 80305NED (CC-BY, cbs.nl), jaargang 2025JJ00","afstand tot school": 0.6,"afstand tot huisartsenpraktijk": 0.6,"afstand tot grote supermarkt": 0.6,"afstand tot treinstations totaal": 2.8,"afstand tot oprit hoofdverkeersweg": 2.2,"afstand tot kinderdagverblijf": 0.4,"afstand tot openbaar groen totaal": null,"schoolomgeving_score": "dichtbij (<1km)","_status": "ok","_disclaimer": "Gemiddelde afstand voor de hele GEMEENTE, niet per buurt of specifiek adres — CBS publiceert deze nabijheidscijfers niet op een fijnere schaal."},"geluid": {"geluid_totaal_db": 68,"geluid_wegverkeer_db": 68,"geluid_treinverkeer_db": 57,"geluid_vliegverkeer_db": 44,"geluidsniveau": "hoog","_status": "ok","_bron": "RIVM Atlas Leefomgeving basisgeluidkaart (Lden 2020) WMS, data.rivm.nl/geo/alo/wms","_disclaimer": "Gemodelleerde jaargemiddelde geluidsbelasting (Lden, RIVM basisgeluidkaart 2020) per bron — geen meting op dit specifieke adres. Een waarde van 0 betekent \"geen bron van dit type gemodelleerd op deze locatie\", niet noodzakelijk stilte."},"veiligheid": {"geregistreerde misdrijven per 1000 inw": 87.4,"totaal geregistreerde misdrijven": 81685,"opgehelderde misdrijven, relatief": 21,"veiligheidsniveau": "zeer hoog","_status": "ok","_bron": "CBS StatLine 83648NED (CC-BY, cbs.nl), jaargang 2025JJ00","_disclaimer": "Gemiddelde voor de hele GEMEENTE, niet per buurt of specifiek adres. Betreft GEREGISTREERDE misdrijven (bij de politie bekend/aangegeven), niet alle daadwerkelijk voorgevallen criminaliteit — er is altijd een mate van ondermelding."},"klimaat": {"overstroming_risicogebied": true,"overstroming_classificatie": "Area of Potential Significant Flood Risk","overstroming_omschrijving": "Rijn type B - beschermd langs hoofdwatersysteem","_status": "ok","_bron": "RWS Richtlijn Overstromingsrisico (ROR) WMS, service.pdok.nl/rws/overstromingen-risicogebied"},"fundering": {"funderingsaandachtsgebied": true,"funderingsgebied_postcode": "1012JS","funderingsgebied_gemeente": "Amsterdam","funderingsgebied_percentage_voor_1970": 75,"funderingsgebied_aantal_panden": 8,"_status": "ok","_bron": "RVO Indicatieve aandachtsgebieden funderingsproblematiek WMS, service.pdok.nl/rvo/indgebfunderingsproblematiek","_disclaimer": "Percentage/aantal panden geldt voor het POSTCODEGEBIED, niet per se voor dit specifieke pand. Grove indicatie, geen funderingsonderzoek."},"samenvatting": {"risiconiveau": "hoog","omschrijving": "Let op: overstromingsrisicogebied, funderingsaandachtsgebied, geluidsbelasting, veiligheidsrisico.","aantal_aandachtspunten": 4,"aandachtspunten": ["overstromingsrisicogebied", "funderingsaandachtsgebied", "geluidsbelasting", "veiligheidsrisico"],"onvolledige_modules": [],"_disclaimer": "Grove, opgetelde indicatie op basis van het aantal gevonden aandachtspunten — geen gewogen of gevalideerd risicomodel."},"_dossier_disclaimer": "Dit dossier combineert publieke open-databronnen (PDOK, CBS, RWS, RVO) en is uitsluitend indicatief. Het is geen taxatie, bouwkundige keuring of formeel risico-advies, en schept geen aansprakelijkheid voor koop-, verhuur-, verzekerings- of financieringsbeslissingen. Raadpleeg voor dergelijke beslissingen altijd een professioneel adviseur.","error": null}
-
samenvatting.risiconiveauis a coarse, purely additive rollup (0 flags →laag, 1 →middel, 2 or more →hoog;onbekendif a module's lookup failed and there are otherwise no flags;niet gecontroleerdifincludeKlimaat/includeFundering/includeGeluid/enrichWithVeiligheidare all disabled, so nothing was actually checked) — not a weighted or validated risk model. Always check the underlyingklimaat/fundering/geluid/veiligheidfields for detail. Ageluidsbelastingflag is added whengeluid.geluidsniveauis"hoog"or"zeer hoog"; aveiligheidsrisicoflag is added whenveiligheid.veiligheidsniveauis"hoog"or"zeer hoog". -
_status: "onbekend"onklimaat/fundering/geluid/veiligheidmeans the underlying lookup itself failed (e.g. a temporary outage) — the corresponding fields arenullin that case, never a silentfalse/0. This is different from a confirmed "no risk found" (_status: "ok"). -
A free
RUN_SUMMARYobject is written to the run's key-value store at the end of every run (batch totals, counts per flag, average pre-1970 percentage, risk-level distribution) — no extra charge, useful when screening many addresses in one run. -
match_kwaliteit("hoog"/"middel"/"laag"/"onbekend") is a best-effort classification based on PDOK's own relevance score — not a guarantee. A"laag"value means "verify this address manually", not "this address doesn't exist". -
nabijheiddistances are gemeente (municipality)-level averages, not per-neighbourhood or per-address — CBS publishes this dataset (80305NED) at municipality granularity only, coarser than the neighbourhood-levelcbsblock. Stated explicitly innabijheid._disclaimeron every result. -
schoolomgeving_score("dichtbij (<1km)"/"gemiddeld (1-3km)"/"ver (>3km)"/"onbekend") is a plain-language rating derived fromafstand tot school— a rough rule of thumb, not a validated scoring model. -
geluidsniveau("laag"/"gemiddeld"/"hoog"/"zeer hoog"/"geen bron gemodelleerd"/"onbekend") is a rough rule-of-thumb classification ofgeluid_totaal_db— not a legal noise-limit threshold."geen bron gemodelleerd"(value0) means RIVM did not map a significant source at this exact location, not that it is measured as silent. -
veiligheidsniveau("laag"/"gemiddeld"/"hoog"/"zeer hoog"/"onbekend") is a rough rule-of-thumb classification ofgeregistreerde misdrijven per 1000 inw, calibrated against the national average (~45 per 1,000 residents, live-verified 2026-08-05) — not a validated risk score. -
veiligheidfigures are gemeente (municipality)-level averages, not per-neighbourhood or per-address (same CBS-methodology caveat asnabijheid), and cover registered crime only — there is always some under-reporting, stated explicitly inveiligheid._disclaimer. -
klimaat/fundering/geluidarenullif the correspondinginclude*flag is off, or if no coordinate was available (failed geocoding).nabijheid/veiligheidarenullifenrichWithNabijheid/enrichWithVeiligheidare off, or if the matched address has no gemeentecode (failed geocoding). -
funderingsgebied_*fields are area-level (per PC6 postcode), not building-specific — there is no landelijk (nationwide) foundation register at the individual-address level. This is stated explicitly in_disclaimeron every result and must not be read as a building-specific foundation assessment. -
klimaathas no water-depth scenario — despite being commonly shown on flood-risk maps, there is no single nationwide PDOK layer with per-coordinate water-depth scenarios (verified live 2026-07-18); only a qualitative risk-zone classification exists at national scale. -
If geocoding fails entirely,
basisisnullanderrorexplains why — no charge is made for that item.
Use cases
Single-address dossier before a viewing:
{ "query": "Damrak 1 Amsterdam" }
Batch-screen a shortlist:
{ "queries": ["Damrak 1 Amsterdam", "Markt 1, Gouda", "52.3789,4.8952"] }
Pricing
This Actor uses Apify's Pay-Per-Event (PPE) pricing model.
- Actor Start: $0.00005 (Apify default)
dossier-resultaat: $0.02 per address successfully geocoded and assembled into a dossier (includes the PDOK basis, flood-risk check, and foundation-area check — the core combined value of this actor). Failed geocodes are never charged.cbs-verrijking: $0.006 extra, only whenenrichWithCbsis enabled and CBS data was actually found for the matched neighbourhood/municipality.nabijheid-verrijking: $0.006 extra, only whenenrichWithNabijheidis enabled and proximity data was actually found for the matched municipality.geluid-verrijking: $0.006 extra, only whenincludeGeluidis enabled and a noise-exposure figure was actually found for the matched coordinate.veiligheid-verrijking: $0.006 extra, only whenenrichWithVeiligheidis enabled and registered-crime data was actually found for the matched municipality.
Legal
- Data sources: PDOK Locatieserver (Kadaster/BZK), CBS StatLine (CC-BY — neighbourhood statistics, proximity-to-amenities, and registered-crime datasets), RIVM Atlas Leefomgeving basisgeluidkaart (public WMS service), RWS Richtlijn Overstromingsrisico (public PDOK WMS service), and RVO Indicatieve aandachtsgebieden funderingsproblematiek (public PDOK WMS service). All public government data, no authentication required, no personal data involved (property/area/municipality-level only).
- This is not a valuation, structural survey, or formal risk assessment. It combines public
indicators into one convenient lookup and is explicitly disclaimed as such on every single result
(
_dossier_disclaimer). It creates no liability for property, rental, insurance, or financing decisions — always consult a qualified professional (taxateur, bouwkundig inspecteur, hypotheekadviseur) before acting on this data. - Foundation-risk data is area-level (postcode), not building-specific, and flood-risk data is a qualitative zone classification, not a water-depth or probability forecast — both are stated explicitly in the output, never silently implied to be more precise than they are.
FAQ
Q: Why does typeFilter default to "adres" instead of matching anything?
A: PDOK's /free endpoint does fuzzy, best-effort matching across all object types. For a query like
"Damrak 1 Amsterdam", it can match the street ("weg") instead of the specific address if no type filter
is applied — that loses postcode/neighbourhood data and degrades the whole dossier. Filtering to adres
(the default) fixes this; clear the field only if you deliberately want postcode/place-level dossiers.
Q: Why is there no flood water-depth or probability percentage? A: There is no single nationwide PDOK layer that publishes water-depth scenarios per coordinate — that data exists only fragmented per waterschap/dijkring (e.g. via LIWO), not as one generically queryable service. This actor only reports the confirmed, nationwide Richtlijn Overstromingsrisico zone classification.
Q: Why is geluid_wegverkeer_db sometimes 0 at an address I know is quiet, but not null?
A: RIVM's basisgeluidkaart only models noise above a mapped threshold for each source — 0 means "no
significant source of this type was modelled here", which is usually a genuinely quiet result, but it is
technically "not calculated" rather than a measured 0 dB. null means the WMS lookup itself failed
(geluid._status: "onbekend") — a materially different, "we don't know" situation. Never treat the two the
same.
Q: My address shows funderingsaandachtsgebied: true — does that mean this specific house has a bad
foundation?
A: No. It means the postcode area (PC6) this address falls in has a documented share of pre-1970
buildings, a known risk factor for wooden pile foundations. It is not a per-building assessment — order an
actual funderingsonderzoek before making any decision based on this.
Q: Why is nabijheid the same for every address in the same city, but cbs differs per neighbourhood?
A: CBS publishes the "Nabijheid van voorzieningen" dataset (80305NED) only at municipality level — it does
not break the distance figures down by neighbourhood or address. The neighbourhood-level cbs block (from
a different CBS table, 86165NED) is a finer granularity. This is stated explicitly in nabijheid._disclaimer.
veiligheid (83648NED, registered crime) has the same municipality-level limitation, for the same reason:
CBS does not publish crime figures at neighbourhood granularity in this dataset.
Q: Does a high veiligheidsniveau mean this specific street is unsafe?
A: No — it's a municipality-wide average. A city can have a high overall registered-crime rate while the
specific street or neighbourhood in the dossier is perfectly quiet, and vice versa. Use it as a general
context signal, not a street-level safety assessment. It also only counts crimes reported to/recorded by
the police (geregistreerde misdrijven) — actual crime levels are typically somewhat higher due to
under-reporting, which is why this is never presented as a precise or complete figure.
Related Actors
- PDOK Adres Geocoding & Buurtdata — the same official PDOK Locatieserver this actor uses internally, useful for broader geocoding/CBS use cases beyond a full property dossier.
- NL Bodemrisico Check — a complementary due-diligence check: soil contamination (Bodemloket/Wbb) risk on the same kind of address input.
Zoekwoorden: vastgoeddossier, woningdossier, funderingsrisico check, overstromingsrisico per adres, klimaatrisico vastgoed, taxatie-ondersteuningsrapport, CBS buurtdata woning, schoolomgeving score, nabijheid voorzieningen, geluidsbelasting woning, geluidshinder check, veiligheid buurt, criminaliteitscijfers gemeente, due diligence vastgoed.
Keywords
vastgoeddossier, property dossier, funderingsrisico, flood risk, foundation risk, netherlands real estate, due diligence, cbs buurtdata, climate risk property, school proximity score, walkability, amenities distance, noise exposure, noise pollution property, geluidsbelasting, crime rate municipality, neighbourhood safety, veiligheid criminaliteit
Changelog
0.6.0
- Added:
veiligheidblock — CBS Geregistreerde criminaliteit (83648NED): registered crimes per 1,000 residents, total registered count, and clearance rate for the matched municipality, plus a derivedveiligheidsniveauclassification (laag/gemiddeld/hoog/zeer hoog), calibrated against the national average. Aveiligheidsrisicoflag is added tosamenvatting.aandachtspuntenwhenveiligheidsniveauishoogorzeer hoog. New optionalveiligheid-verrijkingPPE event ($0.006, only charged when a result is actually found). Controlled by the newenrichWithVeiligheid/veiligheidTableId/veiligheidFieldsinput fields (default on). - Documented:
veiligheidfigures are municipality-level averages of registered crime only (same granularity caveat asnabijheid) — never implied to be street-level or to capture unreported crime.
0.5.0
- Added:
geluidblock — RIVM Atlas Leefomgeving basisgeluidkaart (Lden 2020): modelled noise exposure from road traffic, rail traffic, and air traffic individually via live WMS lookups, plus a cumulative total (geluid_totaal_db) and a plain-languagegeluidsniveauclassification (laag/gemiddeld/hoog/zeer hoog). Ageluidsbelastingflag is added tosamenvatting.aandachtspuntenwhengeluidsniveauishoogorzeer hoog. New optionalgeluid-verrijkingPPE event ($0.006, only charged when a result is actually found). Controlled by the newincludeGeluidinput field (default on). - Documented:
GRAY_INDEX/geluid_*_dbvalue0means "no source of this type modelled at this exact location" (RIVM only maps above a threshold per source), not a measured 0 dB — explicitly disclaimed, and distinguished from_status: "onbekend"(lookup failure) which usesnullinstead.
0.4.0
- Added:
nabijheidblock — CBS "Nabijheid van voorzieningen" (80305NED): road-distance in km to the nearest school, GP practice, large supermarket, train station, motorway access, childcare, and public green space for the matched municipality, plus a derivedschoolomgeving_score. New optionalnabijheid-verrijkingPPE event ($0.006, only charged when data is actually found). Controlled by the newenrichWithNabijheid/nabijheidTableId/nabijheidFieldsinput fields (default on). - Documented:
nabijheiddistances are municipality-level averages (CBS does not publish this dataset at neighbourhood/address level) — explicitly disclaimed in the output, never implied to be finer-grained.
0.3.0
- Fixed: the within-run WMS lookup cache rounded coordinates to ~11m, which could theoretically merge results for two adjacent-but-distinct addresses straddling a flood-risk-zone boundary (e.g. along a dike/street). Tightened to ~1.1m — still deduplicates units within the same building, no longer close enough to merge different buildings.
- Fixed: if both
includeKlimaatandincludeFunderingare disabled,samenvatting.risiconiveaupreviously showed"laag"— indistinguishable from "we checked, nothing found". It now shows"niet gecontroleerd"when no module was actually checked. - Added:
samenvatting.omschrijving— one plain-language sentence summarizing the result, useful when exporting to a spreadsheet/CRM where nobody inspects nested JSON fields.
0.2.0
- Fixed: a failed flood-risk/foundation-area WMS lookup was previously indistinguishable from a confirmed
"no risk found" result. Both modules now report
_status: "onbekend"andnullfields on a lookup failure, never a silentfalse. - Fixed: a run no longer fails entirely just because one address (in a single- or multi-address run)
had no PDOK match — that's a legitimate per-item result (already reflected in
error), not a system failure. Only an empty input, or literally zero processed items, fails the run. - Added:
samenvattingblock per dossier — a coarserisiconiveau(laag/middel/hoog/onbekend) rollup of all flagged modules, so a user doesn't need to inspect three nested objects to spot a notable address. - Added: free
RUN_SUMMARYwritten to the run's key-value store (batch totals, flagged counts, average pre-1970 percentage, risk-level distribution) — no extra charge. - Performance: WMS lookups are now deduplicated within a run for addresses sharing the same rounded coordinate (e.g. multiple units in one building), reducing redundant external calls.
0.1.0
- Initial release (fase 1 per de gefaseerde bouwspec): PDOK-basis (adres-gefilterd), CBS-buurtverrijking, RWS-overstromingsrisicozone en RVO-funderingsaandachtsgebied in één dossier per adres.