Vastgoeddossier XXL — PDOK + CBS + Klimaat + Fundering avatar

Vastgoeddossier XXL — PDOK + CBS + Klimaat + Fundering

Pricing

from $20.00 / 1,000 dossier-resultaats

Go to Apify Store
Vastgoeddossier XXL — PDOK + CBS + Klimaat + Fundering

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

Dennis

Maintained by Community

Actor 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 to adres-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 geluidsniveau classification (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 veiligheidsniveau classification
  • 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_SUMMARY written 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 null with _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

FieldTypeDescription
query / queriesstring / arrayAddress(es), postcode(s), place name(s), or "lat,lon" — see the .actor/input_schema.json for the full bulk-item format
lookupId / datasetIdstringDirect PDOK object-ID lookup, or a linked Apify dataset as bulk input
modestringauto (default), forward, reverse, or lookup
typeFilterstringPDOK object-type filter for forward search, default adres (recommended — see FAQ)
enrichWithCbsbooleanAdd CBS neighbourhood statistics (default true)
enrichWithNabijheidbooleanAdd CBS proximity-to-amenities figures (school/GP/supermarket/station/motorway/childcare/green-space distances + school-proximity score, default true)
enrichWithVeiligheidbooleanAdd CBS registered-crime figures (crimes per 1,000 residents, total count, clearance rate + classification, default true)
includeKlimaatbooleanAdd the flood-risk-zone check (default true)
includeFunderingbooleanAdd the foundation-attention-area check (default true)
includeGeluidbooleanAdd the noise-exposure check (road/rail/air traffic + cumulative total + classification, default true)
concurrencyintegerAddresses 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.risiconiveau is a coarse, purely additive rollup (0 flags → laag, 1 → middel, 2 or more → hoog; onbekend if a module's lookup failed and there are otherwise no flags; niet gecontroleerd if includeKlimaat/includeFundering/includeGeluid/enrichWithVeiligheid are all disabled, so nothing was actually checked) — not a weighted or validated risk model. Always check the underlying klimaat/fundering/geluid/veiligheid fields for detail. A geluidsbelasting flag is added when geluid.geluidsniveau is "hoog" or "zeer hoog"; a veiligheidsrisico flag is added when veiligheid.veiligheidsniveau is "hoog" or "zeer hoog".

  • _status: "onbekend" on klimaat/fundering/geluid/veiligheid means the underlying lookup itself failed (e.g. a temporary outage) — the corresponding fields are null in that case, never a silent false/0. This is different from a confirmed "no risk found" (_status: "ok").

  • A free RUN_SUMMARY object 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".

  • nabijheid distances are gemeente (municipality)-level averages, not per-neighbourhood or per-address — CBS publishes this dataset (80305NED) at municipality granularity only, coarser than the neighbourhood-level cbs block. Stated explicitly in nabijheid._disclaimer on every result.

  • schoolomgeving_score ("dichtbij (<1km)" / "gemiddeld (1-3km)" / "ver (>3km)" / "onbekend") is a plain-language rating derived from afstand 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 of geluid_totaal_db — not a legal noise-limit threshold. "geen bron gemodelleerd" (value 0) 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 of geregistreerde misdrijven per 1000 inw, calibrated against the national average (~45 per 1,000 residents, live-verified 2026-08-05) — not a validated risk score.

  • veiligheid figures are gemeente (municipality)-level averages, not per-neighbourhood or per-address (same CBS-methodology caveat as nabijheid), and cover registered crime only — there is always some under-reporting, stated explicitly in veiligheid._disclaimer.

  • klimaat/fundering/geluid are null if the corresponding include* flag is off, or if no coordinate was available (failed geocoding). nabijheid/veiligheid are null if enrichWithNabijheid/enrichWithVeiligheid are 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 _disclaimer on every result and must not be read as a building-specific foundation assessment.

  • klimaat has 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, basis is null and error explains 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 when enrichWithCbs is enabled and CBS data was actually found for the matched neighbourhood/municipality.
  • nabijheid-verrijking: $0.006 extra, only when enrichWithNabijheid is enabled and proximity data was actually found for the matched municipality.
  • geluid-verrijking: $0.006 extra, only when includeGeluid is enabled and a noise-exposure figure was actually found for the matched coordinate.
  • veiligheid-verrijking: $0.006 extra, only when enrichWithVeiligheid is enabled and registered-crime data was actually found for the matched municipality.
  • 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.

  • 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: veiligheid block — CBS Geregistreerde criminaliteit (83648NED): registered crimes per 1,000 residents, total registered count, and clearance rate for the matched municipality, plus a derived veiligheidsniveau classification (laag/gemiddeld/hoog/zeer hoog), calibrated against the national average. A veiligheidsrisico flag is added to samenvatting.aandachtspunten when veiligheidsniveau is hoog or zeer hoog. New optional veiligheid-verrijking PPE event ($0.006, only charged when a result is actually found). Controlled by the new enrichWithVeiligheid/veiligheidTableId/veiligheidFields input fields (default on).
  • Documented: veiligheid figures are municipality-level averages of registered crime only (same granularity caveat as nabijheid) — never implied to be street-level or to capture unreported crime.

0.5.0

  • Added: geluid block — 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-language geluidsniveau classification (laag/gemiddeld/ hoog/zeer hoog). A geluidsbelasting flag is added to samenvatting.aandachtspunten when geluidsniveau is hoog or zeer hoog. New optional geluid-verrijking PPE event ($0.006, only charged when a result is actually found). Controlled by the new includeGeluid input field (default on).
  • Documented: GRAY_INDEX/geluid_*_db value 0 means "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 uses null instead.

0.4.0

  • Added: nabijheid block — 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 derived schoolomgeving_score. New optional nabijheid-verrijking PPE event ($0.006, only charged when data is actually found). Controlled by the new enrichWithNabijheid/nabijheidTableId/nabijheidFields input fields (default on).
  • Documented: nabijheid distances 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 includeKlimaat and includeFundering are disabled, samenvatting.risiconiveau previously 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" and null fields on a lookup failure, never a silent false.
  • 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: samenvatting block per dossier — a coarse risiconiveau (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_SUMMARY written 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.