# Meldingen openbare ruimte Amsterdam

Alle meldingen die Amsterdammers doen over de openbare ruimte, via het systeem Signalen: afval, kapotte stoepen, overlast, boten. Per melding de categorie, de datum, de buurt en of hij nog open staat. In 2025 waren het er 517.735.

- Uitgever: Gemeente Amsterdam
- Gebied: Amsterdam · Laagste detail: melding, per buurt
- Periode: 2020 – heden · Ververst: dagelijks
- Toegang: Open · Licentie: CC BY (naamsvermelding)
- Koppelsleutels: buurtcode, datum, categorie
- Status: ok (2026-10-16) · 2.720.574 meldingen · nieuwste: Afval
- URL: https://api.data.amsterdam.nl/v1/docs/datasets/meldingen.html

## Wat kun je ermee?
- **Waar ergeren mensen zich aan?.** Tel de meldingen per hoofdcategorie en per jaar. Afval is de grootste groep: 186.778 van de 517.735 meldingen in 2025.
- **Jouw buurt naast de rest.** Filter op een buurtcode en vergelijk het aantal meldingen met buurten van dezelfde grootte. Deel door het aantal inwoners uit de CBS-buurtcijfers.
- **Seizoenen en feestdagen.** Zet subcategorieën als 'Overlast terrassen' of 'Veeg- / zwerfvuil' per week op een tijdlijn. Kijk of er pieken zijn rond Koningsdag, de zomer en oud en nieuw.
- **Meldingen naast handhaving en raadsvragen.** Leg een stijging in een buurt naast raadsstukken over dezelfde straat. Kwam er beleid na een golf van meldingen?

## Zo verwerk je het
1. **Tel eerst, haal daarna op.** Met _count=true staat het totaal in de kop X-Total-Count. Zo weet je hoe groot je selectie is voordat je iets downloadt.
   `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. **Eén buurt als CSV.** Filter op de buurtcode (bv. KG03 = Diamantbuurt) en kies alleen de velden die je nodig hebt.
   `https://api.data.amsterdam.nl/v1/meldingen/meldingen/?gbdBuurtCode=KG03&datumMelding[gte]=2026-10-01&_fields=datumMelding,hoofdcategorie,subcategorie&_format=csv`
3. **Alles in één keer.** Voor het hele bestand van 2,7 miljoen meldingen is er een ZIP met CSV. Dat is sneller dan pagineren.
   `https://api.data.amsterdam.nl/bulk-data/csv/meldingen_v1_meldingen_openbaar.csv.zip`
4. **Koppel buurten aan CBS.** De CBS-buurtcode is BU0363 plus de Amsterdamse code: KG03 wordt BU0363KG03. De lijst staat in de dataset gebieden.
   `https://api.data.amsterdam.nl/v1/gebieden/buurten/?_fields=code,naam,cbsCode&_format=csv&_pageSize=1000`

## Interessante koppelingen
- Meldingen per duizend inwoners → [cbs-kwb](https://www.opendataindex.nl/bron/cbs-kwb.md) via buurtcode (BU0363 + gbdBuurtCode). Deel het aantal meldingen per buurt door het aantal inwoners. Zo vergelijk je drukke en rustige buurten eerlijk.
- Melden mensen bij de gemeente of bij de politie? → [politie-overlast](https://www.opendataindex.nl/bron/politie-overlast.md) via buurtcode en maand. Leg overlastmeldingen bij de gemeente naast overlastregistraties van de politie in dezelfde buurt en maand.

## Vergelijkbare bronnen
- [Meldingen openbare ruimte van andere gemeenten](https://data.overheid.nl/datasets?search=meldingen%20openbare%20ruimte): Eindhoven, Nijmegen en Delft publiceren ook meldingen via data.overheid.nl, elk met eigen velden en categorieën.
- [politie-overlast](https://www.opendataindex.nl/bron/politie-overlast.md): Overlast die bij de politie is geregistreerd, per buurt en per maand. Andere meldingen, ander loket.

## Waar je op moet letten
- **Pas compleet vanaf eind 2020.** Er staan een paar meldingen uit 2018 en 2019 in, maar het grote werk begint in november 2020 (26.341 meldingen die maand). Vergelijk dus vanaf 2021.
- **De locatie is verschoven.** De open coördinaten heten 'visualisatie' en zijn voor kaarten bedoeld, niet exact. De precieze locatie is alleen voor medewerkers.
- **Veel velden zijn afgeschermd.** Afhandeltijd, interne status en tevredenheid van de melder zijn niet open. Wie erop filtert krijgt een 403. Open is alleen 'open' of 'afgesloten'.
- **Niet alle categorieën.** De dataset bevat tien hoofdcategorieën, waaronder afval, overlast en wegen. Andere meldingen en de oorspronkelijke versie van gesplitste meldingen zitten er niet in.
- **API-sleutel wordt verplicht.** Amsterdam gaat een API-sleutel verplicht stellen. Op 15 oktober 2026 was die nog optioneel; vraag hem gratis aan als je de API vaak gebruikt.

## API (OpenAPI 3.0.3)

- Basis: https://api.data.amsterdam.nl/v1/meldingen
- Toegang: De beschrijving noemt oauth2 (oauth2), maar dit endpoint werkt zonder inloggen (getest). (getest)
- Formaten: JSON, CSV, GeoJSON
- Omvang: 2719946 records (getest)
- Filteren: per veld als query-parameter: veld=waarde of veld[operator]=waarde; eq, gt, gte, in, isnull, lt, lte, not, isempty, like, intersects, within

### Endpoints
- `GET /meldingen`: Open 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}`: 

### Parameters
- `_count`: Include a count of the total result set and the number of pages.Only works for responses that return a page. (uit de beschrijving)
- `_csv_header`: Specify type of header for csv file (id, title, none) (uit de beschrijving)
- `_csv_separator`: Specify type of separator for csv file (,, ;) (uit de beschrijving)
- `_expand`: Allow to expand relations. (uit de beschrijving)
- `_expandScope`: Comma separated list of named relations to expand. (uit de beschrijving)
- `_fields`: Comma-separated list of fields to display (uit de beschrijving)
- `_format`: Select the export format (json, csv, geojson) (uit de beschrijving)
- `_pageSize`: Number of results to return per page. (uit de beschrijving)
- `_sort`: Which field to use when ordering the results. (uit de beschrijving)

### Velden (49)
`id` string, `meldingsnummer` string, `hoofdcategorie` string, `subcategorie` string, `thema` string, `directie` string, `regie` string, `datumMelding` string/date, `tijdstipMelding` string/time, `datumAfgerond` string/date, `tijdstipAfgerond` string/time, `datumOverlast` string/date, `tijdstipOverlast` string/time, `afhandeltermijn` integer/int64, `afhandelwerkdagAdam` integer/int64, `uitersteAfhandeldatum` string/date, `status` string, `externeStatus` string, `kpiAfhandeltijd` string, `doorlooptijdDagen` integer/int64, `werkelijkeDoorlooptijdDagen` integer/int64, `anoniemGemeld` string, `terugkoppelingMelderTevreden` string, `terugkoppelingMelder` string, `meldingType` string, `meldingSoort` string, `meldingsnummerBovenliggend` string, `gbdBuurtCode` string, `gbdBuurtNaam` string, `gbdBuurtId` string, `gbdWijkCode` string, `gbdWijkNaam` string, `gbdWijkId` string, `gbdGgwgebiedCode` string, `gbdGgwgebiedNaam` string, `gbdGgwgebiedId` string, `gbdStadsdeelCode` string, `gbdStadsdeelNaam` string, `gbdStadsdeelId` string, `bagWoonplaatsNaam` string, `bagWoonplaatsId` string, `bron` string, `laatstGezienBron` string/date-time, `geometrie` , `geometrieVisualisatie` , `latitude` number/double, `longitude` number/double, `latitudeVisualisatie` number/double, `longitudeVisualisatie` number/double

### Limieten en valkuilen
- Filteren op een afgeschermd veld (bv. status) geeft 403 'Access denied to filter on: status', ook al staat de filter in de OpenAPI-beschrijving (15 okt 2026). (getest)
- Een telling over 2,7 miljoen meldingen (_count=true) duurde ongeveer 2,5 seconde; een CSV-export zonder _pageSize geeft alle treffers in één antwoord. (getest)
- Van de 49 velden zijn er 30 open. Afgeschermd (scope FP/MDW): o.a. status, doorlooptijd, afhandeltermijn, tevredenheid melder en de exacte geometrie. (uit de beschrijving)
- datumMelding en tijdstipMelding zijn Nederlandse tijd zonder tijdzone. (getest)
- Vraag je openapi.json op met alleen Accept: application/json, dan krijg je 406. Stuur ook application/vnd.oai.openapi+json mee. (getest)

### Voorbeeld
```
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
```

## Zo haal je het op

### curl
```bash
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"
```

### python
```python
import requests

url = "https://api.data.amsterdam.nl/v1/meldingen/meldingen/"
for jaar in range(2021, 2026):
    r = requests.get(url, params={
        "datumMelding[gte]": f"{jaar}-01-01", "datumMelding[lt]": f"{jaar + 1}-01-01",
        "hoofdcategorie": "Afval", "_count": "true", "_pageSize": 1, "_format": "json"})
    print(jaar, r.headers["X-Total-Count"], "meldingen over afval")
```

## Wie gebruikt het
- [Signalen (broncode)](https://github.com/Amsterdam/signals): Het open-source meldingensysteem van Amsterdam achter deze data
- [Meldingen Amsterdam](https://meldingen.amsterdam.nl): Het formulier waarmee Amsterdammers een melding doen
- [Data en informatie Amsterdam](https://data.amsterdam.nl): De eigen dataportal van de gemeente


## Voorbeelden met echte cijfers (2)

Per voorbeeld de bevinding, de peildatum en de aanroep die precies deze cijfers ophaalt.

- **Meldingen over de openbare ruimte in Amsterdam per hoofdcategorie: het meest afval (186.778 meldingen), dan overlast in de openbare ruimte en wegen, verkeer en straatmeubilair** (2025). Tabel meldingen/meldingen. [Voorbeeld](https://www.opendataindex.nl/voorbeeld/ams-meldingen-categorie)
  - `https://api.data.amsterdam.nl/v1/meldingen/meldingen/?datumMelding%5Bgte%5D=2025-01-01&datumMelding%5Blt%5D=2026-01-01&hoofdcategorie=Schoon&_count=true&_pageSize=1&_format=json`
- **Meldingen over de openbare ruimte in Amsterdam per jaar: 517.735 meldingen in 2025, 27% meer dan in 2021** (2025). Tabel meldingen/meldingen. [Voorbeeld](https://www.opendataindex.nl/voorbeeld/ams-meldingen-per-jaar)
  - `https://api.data.amsterdam.nl/v1/meldingen/meldingen/?datumMelding%5Bgte%5D=2025-01-01&datumMelding%5Blt%5D=2026-01-01&_count=true&_pageSize=1&_format=json`
