
Amsterdam public space reports
Every report Amsterdam residents make about public space, through the Signalen system: rubbish, broken pavements, nuisance, boats. Per report the category, the date, the neighbourhood and whether it is still open. In 2025 there were 517,735.

Reports about public space in Amsterdam by main category: most waste (186,778 reports), then nuisance in public space and roads, traffic and street furniture
Reports about public space in Amsterdam by main category, 2025, in reports. Total: 517,735; the largest 11 of 11 categories are shown. Waste is 36% of the total. Counts per main category are exact, via the API.
Reports about public space in Amsterdam per year: 517,735 reports in 2025, 27% more than in 2021
Reports about public space in Amsterdam per year, 2021 – 2025, in reports. That is the highest point in the series.
What can you do with it?4 ideas
What annoys people most?
Count reports per main category and per year. Rubbish is the largest group: 186,778 of the 517,735 reports in 2025.
Your neighbourhood against the rest
Filter on a neighbourhood code and compare the number of reports with neighbourhoods of similar size. Divide by population from the CBS neighbourhood figures.
Seasons and holidays
Plot subcategories such as 'Overlast terrassen' (terrace nuisance) or 'Veeg- / zwerfvuil' (litter) per week. Look for peaks around King's Day, summer and New Year.
Reports next to enforcement and council questions
Compare a rise in a neighbourhood with council papers about the same street. Did policy follow a wave of reports?
How to process it4 steps
Count first, fetch later
With _count=true the total is in the X-Total-Count header. You know the size of your selection before downloading anything.
https://api.data.amsterdam.nl/v1/meldingen/meldingen/?datumMelding[gte]=2025-01-01&datumMelding[lt]=2026-01-01&hoofdcategorie=Afval&_count=true&_pageSize=1&_format=json
One neighbourhood as CSV
Filter on the neighbourhood code (e.g. KG03 = Diamantbuurt) and pick only the fields you need.
https://api.data.amsterdam.nl/v1/meldingen/meldingen/?gbdBuurtCode=KG03&datumMelding[gte]=2026-10-01&_fields=datumMelding,hoofdcategorie,subcategorie&_format=csv
Everything at once
For the full file of 2.7 million reports there is a ZIP with CSV. That is faster than paging.
https://api.data.amsterdam.nl/bulk-data/csv/meldingen_v1_meldingen_openbaar.csv.zip
Link neighbourhoods to CBS
The CBS neighbourhood code is BU0363 plus the Amsterdam code: KG03 becomes BU0363KG03. The list is in the gebieden dataset.
https://api.data.amsterdam.nl/v1/gebieden/buurten/?_fields=code,naam,cbsCode&_format=csv&_pageSize=1000
Interesting combinations


Reports per thousand residents
Divide reports per neighbourhood by population. That makes busy and quiet neighbourhoods comparable.


Do people report to the city or to the police?
Compare nuisance reports to the city with police nuisance registrations in the same neighbourhood and month.
Similar sources
- MOMeldingen openbare ruimte van andere gemeenten not in the index yet
Eindhoven, Nijmegen and Delft also publish reports via data.overheid.nl, each with their own fields and categories.
Registered nuisance by neighbourhoodNuisance registered by the police, per neighbourhood and per month. Different reports, different desk.
What to watch out for
- Only complete from late 2020
There are a few reports from 2018 and 2019, but the bulk starts in November 2020 (26,341 that month). Compare from 2021 onwards.
- The location is shifted
The open coordinates are called 'visualisatie' and are meant for maps, not exact. The precise location is for staff only.
- Many fields are restricted
Handling time, internal status and reporter satisfaction are not open. Filtering on them gives a 403. Only 'open' or 'closed' is public.
- Not all categories
The dataset holds ten main categories, including rubbish, nuisance and roads. Other reports and the original version of split reports are excluded.
- API key will become mandatory
Amsterdam will make an API key mandatory. On 15 October 2026 it was still optional; request a free one if you use the API often.
APIOpenAPI 3.0.3 · read 16 Oct 2026
The description lists oauth2 (oauth2), but this endpoint works without logging in (tested). tested
records tested
JSONCSVGeoJSON
Base URL
https://api.data.amsterdam.nl/v1/meldingen
Endpoints 2
- GET
/meldingenOpen dataset over meldingen openbare ruimte Amsterdam (MORA). In deze dataset zit een subset van de de meldingsgegevens van alle meldingen vanaf medio 2018. … - GET
/meldingen/{id}
Filtering from the description
per field as query parameter: field=value or field[operator]=value
Parameters 9
_count | Include a count of the total result set and the number of pages.Only works for responses that return a page. | from the description |
_csv_header | Specify type of header for csv file (id, title, none) | from the description |
_csv_separator | Specify type of separator for csv file (,, ;) | from the description |
_expand | Allow to expand relations. | from the description |
_expandScope | Comma separated list of named relations to expand. | from the description |
_fields | Comma-separated list of fields to display | from the description |
_format | Select the export format (json, csv, geojson) | from the description |
_pageSize | Number of results to return per page. | from the description |
_sort | Which field to use when ordering the results. | from the description |
Fields 49
| Name | Type | Meaning and filters |
|---|---|---|
id | string | Unieke aanduiding melding. eqinisemptyisnulllikenot |
meldingsnummer | string | Referentie van de melding. eqinisemptyisnulllikenot |
hoofdcategorie | string | Hoofdcategorie waaronder melding is gecategoriseerd. eqinisemptyisnulllikenot |
subcategorie | string | Subcategorie waaronder melding is gecategoriseerd. eqinisemptyisnulllikenot |
thema | string | Overkoepelend thema waaronder melding is gecategoriseerd. eqinisemptyisnulllikenot |
directie | string | Directie of afdeling die een verantwoordelijkheid heeft in de afhandeling van de melding. eqinisemptyisnulllikenot |
regie | string | Directie of afdeling die de regie heeft op de hoofd en deelmeldingen. eqinisemptyisnulllikenot |
datumMelding | string/date | Datum waarop de melding is gedaan. eqgtgteinisnullltltenot |
tijdstipMelding | string/time | Tijdstip waarop de melding is gedaan. eqgtgteinisnullltltenot |
datumAfgerond | string/date | Datum waarop melding volledig is afgehandeld. eqgtgteinisnullltltenot |
tijdstipAfgerond | string/time | Tijdstip waarop melding volledig is afgehandeld. eqgtgteinisnullltltenot |
datumOverlast | string/date | Datum waarop de melding betrekking had. eqgtgteinisnullltltenot |
Show all 49
| Name | Type | Meaning and filters |
|---|---|---|
tijdstipOverlast | string/time | Tijdstip waarop de melding betrekking had. eqgtgteinisnullltltenot |
afhandeltermijn | integer/int64 | Termijn in werk- of weekdagen waarbinnen de melding na binnenkomst afgehandeld zou moeten zijn volgens de servicebelofte. eqgtgteinisnullltltenot |
afhandelwerkdagAdam | integer/int64 | Waarde = 1 als afhandeling werkdagen betreft; anders weekdagen. eqgtgteinisnullltltenot |
uitersteAfhandeldatum | string/date | Datum waarop de melding volgens de servicebelofte afgerond zou moeten zijn. eqgtgteinisnullltltenot |
status | string | Processtatus waarin de melding zich bevindt. eqinisemptyisnulllikenot |
externeStatus | string | Vereenvoudigde status waarin de melding zich bevindt: open of afgesloten. eqinisemptyisnulllikenot |
kpiAfhandeltijd | string | Vergelijking tussen doorlooptijd en afhandeltermijn. eqinisemptyisnulllikenot |
doorlooptijdDagen | integer/int64 | Doorlooptijd van de melding in dagen van start tot eind gebaseerd op werkdagen. eqgtgteinisnullltltenot |
werkelijkeDoorlooptijdDagen | integer/int64 | Werkelijke doorlooptijd van de melding van start tot eind gebaseerd op weekdagen. eqgtgteinisnullltltenot |
anoniemGemeld | string | Indicatie of melder telefoonnummer of naam heeft achtergelaten ja of nee. eqinisemptyisnulllikenot |
terugkoppelingMelderTevreden | string | Indicator die aangeeft of de melder tevreden is over de afhandeling van de melding ja, nee of leeg (geen terugkoppeling). eqinisemptyisnulllikenot |
terugkoppelingMelder | string | Gestandaardiseerde toelichting bij de terugkoppeling van de melder. eqinisemptyisnulllikenot |
meldingType | string | Type melding SIG = signalering. eqinisemptyisnulllikenot |
meldingSoort | string | Soort melding S=Standaard, H=Hoofdmelding, D=Deelmelding, G=Gesplitste (in 1 of meer A typen), A=Afgesplitst (valt onder G). eqinisemptyisnulllikenot |
meldingsnummerBovenliggend | string | Verwijzing naar meldingsnummer van bovenliggend record. eqinisemptyisnulllikenot |
gbdBuurtCode | string | Code van de buurt gebaseerd op de locatie van de melding. eqinisemptyisnulllikenot |
gbdBuurtNaam | string | Naam van de buurt gebaseerd op de locatie van de melding. eqinisemptyisnulllikenot |
gbdBuurtId | string | Identificerende sleutel van de buurt gebaseerd op de locatie van de melding. |
gbdWijkCode | string | Code van de wijk (buurtcombinatie) gebaseerd op de locatie van de melding. eqinisemptyisnulllikenot |
gbdWijkNaam | string | Naam van de wijk (buurtcombinatie) gebaseerd op de locatie van de melding. eqinisemptyisnulllikenot |
gbdWijkId | string | Identificerende sleutel van de wijk (buurtcombinatie) gebaseerd op de locatie van de melding. |
gbdGgwgebiedCode | string | Code van het gebiedsgerichtwerken gebied gebaseerd op de locatie van de melding. eqinisemptyisnulllikenot |
gbdGgwgebiedNaam | string | Naam van het gebiedsgerichtwerken gebied gebaseerd op de locatie van de melding. eqinisemptyisnulllikenot |
gbdGgwgebiedId | string | Identificerende sleutel van het gebiedsgerichtwerken gebied gebaseerd op de locatie van de melding. |
gbdStadsdeelCode | string | Code van het stadsdeel gebaseerd op de locatie van de melding. eqinisemptyisnulllikenot |
gbdStadsdeelNaam | string | Naam van het stadsdeel gebaseerd op de locatie van de melding. eqinisemptyisnulllikenot |
gbdStadsdeelId | string | Identificerende sleutel van het stadsdeel gebaseerd op de locatie van de melding. |
bagWoonplaatsNaam | string | Naam van de woonplaats gebaseerd op de locatie van de melding. eqinisemptyisnulllikenot |
bagWoonplaatsId | string | Identificerende sleutel van de woonplaats gebaseerd op de locatie van de melding. |
bron | string | Bronsysteem waaruit de data afkomstig is. eqinisemptyisnulllikenot |
laatstGezienBron | string/date-time | Datum en tijd laatste update van registratie uit bron. eqgtgteinisnullltltenot |
geometrie | eqintersectsisnullnotwithin | |
geometrieVisualisatie | eqintersectsisnullnotwithin | |
latitude | number/double | Latitude van de lokatie van de melding (WGS84 EPSG:4326) eqgtgteinisnullltltenot |
longitude | number/double | Longitude van de lokatie van de melding (WGS84 EPSG:4326) eqgtgteinisnullltltenot |
latitudeVisualisatie | number/double | Voor visualisatie geoptimaliseerde latitude van de lokatie van de melding (WGS84 EPSG:4326) eqgtgteinisnullltltenot |
longitudeVisualisatie | number/double | Voor visualisatie geoptimaliseerde longitude van de lokatie van de melding (WGS84 EPSG:4326) eqgtgteinisnullltltenot |
Limits and pitfalls
- Filtering on a restricted field (e.g. status) gives 403 'Access denied to filter on: status', even though the filter is listed in the OpenAPI description (15 Oct 2026). tested
- A count over 2.7 million reports (_count=true) took about 2.5 seconds; a CSV export without _pageSize returns all matches in one response. tested
- Of the 49 fields, 30 are open. Restricted (scope FP/MDW): status, handling time, deadline, reporter satisfaction and the exact geometry, among others. from the description
- datumMelding and tijdstipMelding are Dutch local time without a time zone. tested
- Requesting openapi.json with only Accept: application/json gives 406. Also send application/vnd.oai.openapi+json. tested
Try it HTTP 200 · 1,512 ms · 16 Oct
https://api.data.amsterdam.nl/v1/meldingen/meldingen/?datumMelding[gte]=2026-10-01&hoofdcategorie=Afval&_fields=datumMelding,subcategorie,gbdBuurtNaam&_sort=-datumMelding&_pageSize=3&_format=json
{
"_embedded": {
"meldingen": [
{
"datumMelding": "2026-10-16",
"subcategorie": "Container",
"gbdBuurtNaam": "Hakfort/Huigenbos",
"_links": {
"schema": "https://schemas.data.amsterdam.nl/datasets/meldingen/meldingen/v2",
"self": {
"href": "https://api.data.amsterdam.nl/v1/meldingen/meldingen/F60D5CA57AAFEB0F88206DAB7FF592C3159CCE75?_format=json",
"title": "F60D5CA57AAFEB0F88206DAB7FF592C3159CCE75",
"id": "F60D5CA57AAFEB0F88206DAB7FF592C3159CCE75"
}
}
},
{
"datumMelding": "2026-10-16",
"subcategorie": "Container",
"gbdBuurtNaam": "Frederik Hendrikbuurt-Zuidoost",
"_links": {
"schema": "https://schemas.data.amsterdam.nl/datasets/meldingen/meldingen/v2",
"self": {
"href": "https://api.data.amsterdam.nl/v1/meldingen/meldingen/F8379D91D3443E1F277C30E3F66D6F4927862F4A?_format=json",
"title": "F8379D91D3443E1F277C30E3F66D6F4927862F4A",
"id": "F8379D91D3443E1F277C30E3F66D6F4927862F4A"
}
}
}
]
},
"_links": {
"self": {
"href": "https://api.data.amsterdam.nl/v1/meldingen/meldingen/?datumMelding[gte]=2026-10-01&hoofdcategorie=Afval&_fields=datum…"
},
"next": {
"href": "https://api.data.amsterdam.nl/v1/meldingen/meldingen/?_fields=datumMelding%2Csubcategorie%2CgbdBuurtNaam&_format=json…"
}
},
"page": {Shortened response, saved at harvest time. Click the URL for the real, current response.
Read from OpenAPI description, 2 paths. 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 open data index.
How to fetch it
curl "https://api.data.amsterdam.nl/v1/meldingen/meldingen/?datumMelding%5Bgte%5D=2026-10-01&hoofdcategorie=Afval&_fields=datumMelding,subcategorie,gbdBuurtNaam&_pageSize=10&_format=json"
Used by
- Signalen (broncode)Amsterdam's open-source reporting system behind this data
- Meldingen AmsterdamThe form residents use to file a report
- Data en informatie AmsterdamThe city's own data portal
More from Amsterdam in our index
234 datasets in data.overheid.nl, dataportaal Amsterdam. These changed most recently.
- Parkeervakken2025-04-23
- Loop- en fietsnetwerk Amsterdam2025-04-23
- Cameragebieden2024-10-07
- Openbaar Subsidieregister Amsterdam2024-03-15
- Explosieven2024-02-23
- Touringcarinfo Halteren en parkeren2024-02-09
More in this topic
See how this page is built
bron: ams-meldingen blokken: [] secties: - ideeen - verwerken - koppelingen - vergelijkbaar - beperkingen - code - gebruiktDoor cache: tag: bron:ams-meldingen ververs: na statuscheck, als de bron nieuwer is statuscheck: methode: nieuwste melding (datum en tijd) in de API verwacht: dagelijks
Source: content/bronnen/ams-meldingen.yaml · Markdown


