Registered nuisance by neighbourhood
Every month the police count how many nuisance reports came in, per neighbourhood and per type: from confused persons and youth to noise and drugs. Statistics Netherlands (CBS) publishes the figures as an open table, one month after the fact.
A growing share of nuisance involves confused persons
Registered nuisance in the Netherlands per month, January 2012 to September 2026. In 2025, 37% of all registrations involved a confused person, up from 16% in 2012.
Among large municipalities, Utrecht registers the most nuisance per resident
Registered nuisance per 1,000 residents in 2025, by municipality. National: 25.6. Places with many visitors, such as Zandvoort and Schiermonnikoog, rank high because visitors don't count as residents.
What can you do with it?4 ideas
Compare your neighbourhood with the rest of your municipality
Divide reports by residents and put your neighbourhood next to others in the same municipality. That's fairer than a national ranking.
Find the seasonal rhythm
Nuisance peaks in summer and around New Year. Plot each year as its own line and the pattern jumps out.
Fact-check: 'nuisance is rising'
Compare the same months with last year, not the latest month with the previous one. Mind the March 2021 break if you look further back.
Confused persons and mental health care
Put reports about confused persons next to mental health care use per neighbourhood. Correct for income and density, or you mostly measure urbanity.
How to process it5 steps
Choose your areas
Look up codes in the boundary map. Codes have a fixed length: GM + 4 digits, WK + 6, BU + 8.
Fetch the monthly figures
Filter by area and type of nuisance. Pad keys with spaces to their fixed length and paginate per 10,000 rows.
https://dataderden.cbs.nl/ODataApi/OData/47024NED/TypedDataSet?$filter=WijkenEnBuurten eq 'BU03630000' &$skip=0
Tidy the table
Convert Perioden to a date ('2026MM09' becomes 2026-09) and strip spaces from keys. Rows with no reports are missing: count them as zero.
Divide by residents
Join residents from the key figures on neighbourhood code. Leave out tiny neighbourhoods, where one report becomes an outlier.
Reload everything monthly
The police revise earlier months. A monthly refresh therefore reloads the full series, not just the newest month.
Interesting combinations


Do low-income neighbourhoods have more nuisance?
Income and residents per neighbourhood are in the key figures. In Staat van the link between low income and nuisance was strong (ρ ≈ 0.58).


Where in the city is the nuisance?
The boundaries turn the table into a map. Use boundaries from the same year as the figures' classification.


Does warm weather bring more nuisance?
Average temperature per month and compare with reports. Correct for season and New Year.
Similar sources
Registered crime by neighbourhoodCrimes instead of nuisance: reports and registrations of offences.
- VVeiligheidsmonitor (CBS) not in the index yet
A survey: how safe people feel and what they experienced, even if they didn't report it.
- MOMeldingen openbare ruimte (gemeenten) not in the index yet
Reports to the city about litter, noise and broken streets. Different desk, different people reporting.
What to watch out for
- A registration is not an incident
What nobody reports isn't in the data. How often people call the police differs by neighbourhood and by type of nuisance.
- Series break in March 2021
The police changed how reports are recorded. 'Confused person' in particular jumped. Don't compare 2020 with 2022 at face value.
- Figures are revised later
Earlier months are revised retroactively. Reload the full series instead of appending only the newest month.
- Always the latest neighbourhood boundaries
CBS recalculates the whole series to the most recent boundaries. Codes from old files may no longer exist.
- API pitfalls
Keys are padded with spaces ('NL00 '); without them you get nothing back. At most 10,000 rows per request. The Feed endpoint applies only the first filter and silently ignores the rest.
APIOData v3 · read 15 Oct 2026
No key or account; the description and our call work anonymously. tested
rows (cells) in TypedDataSet tested
JSONAtom/XML
Base URL
https://dataderden.cbs.nl/ODataApi/OData/47024NED
Endpoints 8
- GET
/TableInfostitle, summary, period and modification date of the table - GET
/UntypedDataSetthe figures, all values as text - GET
/TypedDataSetthe figures, with numbers as numbers - GET
/DataPropertiesall columns: dimensions and topics with unit - GET
/CategoryGroupsgrouping of categories - GET
/Overlastcodes and names of dimension Overlast - GET
/WijkenEnBuurtencodes and names of dimension WijkenEnBuurten - GET
/Periodencodes and names of dimension Perioden
Filtering platform
OData expressions in $filter, keys in single quotes
Parameters 6
$filter | select rows, e.g. WijkenEnBuurten eq 'GM0363 ' | platform |
$select | only these columns | platform |
$top / $skip | paging | platform |
$orderby | sorting | platform |
$format | json or atom | platform |
$count | after a path: count only | platform |
Dimensions · = space in the key
| Dimension | Codes | Examples |
|---|---|---|
OverlastOverlast | 9 | 0.0.0· Totaal registraties overlastE33··· Overlast door verward persoonE35··· Melding overlast jeugd |
WijkenEnBuurtenWijken en buurten · Wijk- en buurtindeling 2025 | 18,498 | NL00······ NederlandGM1680···· Aa en HunzeWK168000·· Wijk 00 Annen |
PeriodenPerioden | 191 | 2012MM01 2012 januari2012MM02 2012 februari2012MM03 2012 maart |
Fields 3
| Name | Type | Meaning |
|---|---|---|
GeregistreerdeOverlast_1Geregistreerde overlast | long · aantal | Totaal van de geregistreerde overlast. Bron is de politieregistratie Basis Voorziening Informatie (BVI). |
Gemeentenaam_2Gemeentenaam | string · naam | De naam van de bestuurlijke gemeente. Deze naam volgt de officiële schrijfwijze. |
SoortRegio_3Soort regio | string · omschrijving | De gekozen regioaanduiding betreft: Gemeente, Wijk of Buurt. |
Limits and pitfalls
- At most 10,000 rows per request; page with $skip. experience
- Keys are padded with spaces to a fixed length: 'GM0363 ', '0.0.0 ', 'E33 '. Without the spaces you get an empty list, not an error. experience
- The Feed endpoint applies only the first $filter predicate and silently ignores the rest. Use TypedDataSet. experience
- TableInfos.Modified changes almost daily (metadata). For freshness, look at the highest Perioden key. experience
- Past months are revised retroactively. Always reload the full series. experience
- Python urllib (LibreSSL on macOS) fails on cbs.nl's TLS; use curl or Node fetch. experience
Try it HTTP 200 · 58 ms · 15 Oct
https://dataderden.cbs.nl/ODataApi/OData/47024NED/TypedDataSet?$filter=WijkenEnBuurten eq 'GM0363 ' and Overlast eq '0.0.0 '&$top=3
{
"odata.metadata": "https://dataderden.cbs.nl/ODataApi/OData/47024NED/$metadata#Cbs.OData.WebAPI.TypedDataSet",
"value": [
{
"ID": 223470,
"Overlast": "0.0.0 ",
"WijkenEnBuurten": "GM0363 ",
"Perioden": "2012MM01",
"GeregistreerdeOverlast_1": 991,
"Gemeentenaam_2": "Amsterdam ",
"SoortRegio_3": "Gemeente"
},
{
"ID": 223471,
"Overlast": "0.0.0 ",
"WijkenEnBuurten": "GM0363 ",
"Perioden": "2012MM02",
"GeregistreerdeOverlast_1": 898,
"Gemeentenaam_2": "Amsterdam ",
"SoortRegio_3": "Gemeente"
}
]
}Shortened response, saved at harvest time. Click the URL for the real, current response.
Read from service document (list of endpoints) · dimensions and topics · full data model (XML). Labels: from the description stated in what the api itself publishes. tested from our own small call. platform applies to every api on this platform, per its documentation. experience learned while building bronwijzer.
How to fetch it
curl "https://dataderden.cbs.nl/ODataApi/OData/47024NED/TypedDataSet?\$filter=WijkenEnBuurten%20eq%20'GM0363%20%20%20%20'%20and%20Overlast%20eq%20'0.0.0%20'"
Used by
- Staat vanNuisance per neighbourhood per month, with map and comparisons
- Politie DataportaalThe police's own table viewer
Questions this source helps answer
See how this page is built
bron: politie-overlast
blokken:
- type: lijnreeks
data: overlast
- type: choropleth
data: gemeenten
secties:
- ideeen
- verwerken
- koppelingen
- vergelijkbaar
- beperkingen
- code
- gebruiktDoor
cache:
tag: bron:politie-overlast
ververs: na statuscheck, als de bron nieuwer is
statuscheck:
methode: CBS TableInfos.Modified + nieuwste Perioden-sleutel
verwacht: maandelijks
Source: content/bronnen/politie-overlast.yaml · Markdown