303,525 datasets indexed1,419 publishers
Open Data IndexThe index of open data about the Netherlands
Sources›Housing and land
Gemeente Amsterdam
Dutch source

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.

Housing and landSafetyOpenAPIDownloadAmsterdam · report, per neighbourhood
Up to date · updated 3 hours ago · checked 17:23
api.data.amsterdam.nl
Screenshot of api.data.amsterdam.nl

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.

Source: Gemeente Amsterdam, Meldingen openbare ruimte (DSO-API) · opgehaald 25 oktober 2026Open the table Single block

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.

Source: Gemeente Amsterdam, Meldingen openbare ruimte (DSO-API); volle jaren, de open set heeft pas vanaf 2021 een volledig jaar · opgehaald 25 oktober 2026Open the table Single block

What can you do with it?4 ideas

Getting started

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.

Getting started

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.

Advanced

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.

Advanced

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

  1. 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
  2. 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
  3. 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
  4. 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

Similar sources

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

StandardOpenAPI 3.0.3docs
Access no key

The description lists oauth2 (oauth2), but this endpoint works without logging in (tested). tested

Size2,719,946

records tested

Formats

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

eqgtgteinisnullltltenotisemptylikeintersectswithin

Parameters 9

_countInclude a count of the total result set and the number of pages.Only works for responses that return a page.from the description
_csv_headerSpecify type of header for csv file (id, title, none)from the description
_csv_separatorSpecify type of separator for csv file (,, ;)from the description
_expandAllow to expand relations.from the description
_expandScopeComma separated list of named relations to expand.from the description
_fieldsComma-separated list of fields to displayfrom the description
_formatSelect the export format (json, csv, geojson)from the description
_pageSizeNumber of results to return per page.from the description
_sortWhich field to use when ordering the results.from the description

Fields 49

NameTypeMeaning and filters
idstringUnieke aanduiding melding.
eqinisemptyisnulllikenot
meldingsnummerstringReferentie van de melding.
eqinisemptyisnulllikenot
hoofdcategoriestringHoofdcategorie waaronder melding is gecategoriseerd.
eqinisemptyisnulllikenot
subcategoriestringSubcategorie waaronder melding is gecategoriseerd.
eqinisemptyisnulllikenot
themastringOverkoepelend thema waaronder melding is gecategoriseerd.
eqinisemptyisnulllikenot
directiestringDirectie of afdeling die een verantwoordelijkheid heeft in de afhandeling van de melding.
eqinisemptyisnulllikenot
regiestringDirectie of afdeling die de regie heeft op de hoofd en deelmeldingen.
eqinisemptyisnulllikenot
datumMeldingstring/dateDatum waarop de melding is gedaan.
eqgtgteinisnullltltenot
tijdstipMeldingstring/timeTijdstip waarop de melding is gedaan.
eqgtgteinisnullltltenot
datumAfgerondstring/dateDatum waarop melding volledig is afgehandeld.
eqgtgteinisnullltltenot
tijdstipAfgerondstring/timeTijdstip waarop melding volledig is afgehandeld.
eqgtgteinisnullltltenot
datumOverlaststring/dateDatum waarop de melding betrekking had.
eqgtgteinisnullltltenot
Show all 49
NameTypeMeaning and filters
tijdstipOverlaststring/timeTijdstip waarop de melding betrekking had.
eqgtgteinisnullltltenot
afhandeltermijninteger/int64Termijn in werk- of weekdagen waarbinnen de melding na binnenkomst afgehandeld zou moeten zijn volgens de servicebelofte.
eqgtgteinisnullltltenot
afhandelwerkdagAdaminteger/int64Waarde = 1 als afhandeling werkdagen betreft; anders weekdagen.
eqgtgteinisnullltltenot
uitersteAfhandeldatumstring/dateDatum waarop de melding volgens de servicebelofte afgerond zou moeten zijn.
eqgtgteinisnullltltenot
statusstringProcesstatus waarin de melding zich bevindt.
eqinisemptyisnulllikenot
externeStatusstringVereenvoudigde status waarin de melding zich bevindt: open of afgesloten.
eqinisemptyisnulllikenot
kpiAfhandeltijdstringVergelijking tussen doorlooptijd en afhandeltermijn.
eqinisemptyisnulllikenot
doorlooptijdDageninteger/int64Doorlooptijd van de melding in dagen van start tot eind gebaseerd op werkdagen.
eqgtgteinisnullltltenot
werkelijkeDoorlooptijdDageninteger/int64Werkelijke doorlooptijd van de melding van start tot eind gebaseerd op weekdagen.
eqgtgteinisnullltltenot
anoniemGemeldstringIndicatie of melder telefoonnummer of naam heeft achtergelaten ja of nee.
eqinisemptyisnulllikenot
terugkoppelingMelderTevredenstringIndicator die aangeeft of de melder tevreden is over de afhandeling van de melding ja, nee of leeg (geen terugkoppeling).
eqinisemptyisnulllikenot
terugkoppelingMelderstringGestandaardiseerde toelichting bij de terugkoppeling van de melder.
eqinisemptyisnulllikenot
meldingTypestringType melding SIG = signalering.
eqinisemptyisnulllikenot
meldingSoortstringSoort melding S=Standaard, H=Hoofdmelding, D=Deelmelding, G=Gesplitste (in 1 of meer A typen), A=Afgesplitst (valt onder G).
eqinisemptyisnulllikenot
meldingsnummerBovenliggendstringVerwijzing naar meldingsnummer van bovenliggend record.
eqinisemptyisnulllikenot
gbdBuurtCodestringCode van de buurt gebaseerd op de locatie van de melding.
eqinisemptyisnulllikenot
gbdBuurtNaamstringNaam van de buurt gebaseerd op de locatie van de melding.
eqinisemptyisnulllikenot
gbdBuurtIdstringIdentificerende sleutel van de buurt gebaseerd op de locatie van de melding.
gbdWijkCodestringCode van de wijk (buurtcombinatie) gebaseerd op de locatie van de melding.
eqinisemptyisnulllikenot
gbdWijkNaamstringNaam van de wijk (buurtcombinatie) gebaseerd op de locatie van de melding.
eqinisemptyisnulllikenot
gbdWijkIdstringIdentificerende sleutel van de wijk (buurtcombinatie) gebaseerd op de locatie van de melding.
gbdGgwgebiedCodestringCode van het gebiedsgerichtwerken gebied gebaseerd op de locatie van de melding.
eqinisemptyisnulllikenot
gbdGgwgebiedNaamstringNaam van het gebiedsgerichtwerken gebied gebaseerd op de locatie van de melding.
eqinisemptyisnulllikenot
gbdGgwgebiedIdstringIdentificerende sleutel van het gebiedsgerichtwerken gebied gebaseerd op de locatie van de melding.
gbdStadsdeelCodestringCode van het stadsdeel gebaseerd op de locatie van de melding.
eqinisemptyisnulllikenot
gbdStadsdeelNaamstringNaam van het stadsdeel gebaseerd op de locatie van de melding.
eqinisemptyisnulllikenot
gbdStadsdeelIdstringIdentificerende sleutel van het stadsdeel gebaseerd op de locatie van de melding.
bagWoonplaatsNaamstringNaam van de woonplaats gebaseerd op de locatie van de melding.
eqinisemptyisnulllikenot
bagWoonplaatsIdstringIdentificerende sleutel van de woonplaats gebaseerd op de locatie van de melding.
bronstringBronsysteem waaruit de data afkomstig is.
eqinisemptyisnulllikenot
laatstGezienBronstring/date-timeDatum en tijd laatste update van registratie uit bron.
eqgtgteinisnullltltenot
geometrie
eqintersectsisnullnotwithin
geometrieVisualisatie
eqintersectsisnullnotwithin
latitudenumber/doubleLatitude van de lokatie van de melding (WGS84 EPSG:4326)
eqgtgteinisnullltltenot
longitudenumber/doubleLongitude van de lokatie van de melding (WGS84 EPSG:4326)
eqgtgteinisnullltltenot
latitudeVisualisatienumber/doubleVoor visualisatie geoptimaliseerde latitude van de lokatie van de melding (WGS84 EPSG:4326)
eqgtgteinisnullltltenot
longitudeVisualisatienumber/doubleVoor 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

More from Amsterdam in our index

234 datasets in data.overheid.nl, dataportaal Amsterdam. These changed most recently.

All about Amsterdam

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