# Asielopvang in cijfers (COA)

Hoeveel mensen er in de opvang van het COA wonen, hoeveel er per maand binnenkomen en vertrekken, uit welke landen ze komen en hoeveel er al een verblijfsvergunning hebben en op een woning wachten. Het ministerie van Asiel en Migratie publiceert deze cijfers van de migratieketen maandelijks als CSV op data.overheid.nl, één bestand per jaar. Landelijke cijfers: niet per gemeente of per locatie.

- Uitgever: Ministerie van Asiel en Migratie, Centraal Orgaan opvang asielzoekers
- Gebied: Nederland · Laagste detail: land, per maand
- Periode: 2016 – heden · Ververst: maandelijks
- Toegang: Open · Licentie: CC0 1.0
- Koppelsleutels: jaar en maand, land van herkomst
- Status: ok (2026-10-12) · nieuwste bestand: Asiel - COA Opvang En Onderdak Bezetting 2026
- URL: https://data.overheid.nl/dataset/immigratie-coa-opvang-en-onderdak-bezetting

## Wat kun je ermee?
- **De opvang door de jaren heen.** Leg de bezetting per maand naast elkaar, van het laagste punt in juni 2018 (20.010 bewoners) tot meer dan 83.000 in 2026.
- **Wachten op een woning.** Het aantal vergunninghouders in de opvang laat zien hoeveel mensen al mogen blijven maar nog geen woning hebben: een maat voor de druk op gemeenten.
- **Instroom tegen uitstroom.** Zet per maand de instroom en de uitstroom tegenover elkaar en zie wanneer de opvang groeit of krimpt; koppel de uitstroom aan de woningbouw per gemeente.

## Zo verwerk je het
1. **Kies het jaarbestand.** Elke dataset (bezetting, instroom, uitstroom) heeft één CSV per jaar. De lijst met adressen staat in het datasetrecord van data.overheid.nl.
   `https://data.overheid.nl/data/api/3/action/package_show?id=immigratie-coa-opvang-en-onderdak-bezetting`
2. **Lees de codering goed.** Puntkomma's als scheidingsteken. De bestanden van 2016 tot en met 2023 en van 2026 staan in Windows-codering (cp1252), die van 2024 en 2025 in UTF-8. Probeer eerst UTF-8, anders cp1252.
3. **Kies één uitsplitsing.** De kolom 'Totaal van' zegt welke uitsplitsing een regel is: 'Jaar, Maand' is het totaal per maand, 'Jaar, Maand, Vergunninghouder' splitst naar status, 'Jaar, Maand, Land van herkomst' naar land. Gebruik er per telling één, anders tel je dubbel. *Alle* betekent: alle waarden samen.

## Interessante koppelingen
- Asielverzoeken en opvang → [cbs-statline](https://www.opendataindex.nl/bron/cbs-statline.md) via jaar en maand, land van herkomst. CBS-tabel 83102NED telt de asielverzoeken per maand en nationaliteit; leg die naast de instroom in de opvang.
- Waar staan de plaatsen? → [coa-locaties](https://www.opendataindex.nl/bron/coa-locaties.md) via provincie en gemeente. De maandcijfers zijn landelijk. Voor de spreiding over het land: de capaciteit per locatie uit onze oogst van coa.nl.

## Vergelijkbare bronnen
- [coa-locaties](https://www.opendataindex.nl/bron/coa-locaties.md): Per locatie de capaciteit, niet het aantal bewoners.

## Waar je op moet letten
- **Afgerond op tientallen.** Alle aantallen zijn afgerond op tientallen en aantallen onder de 5 worden niet getoond. Optellen van details (per land) geeft daardoor een ander getal dan het totaal: gebruik de totaalregels.
- **Niet per gemeente of locatie.** De open bestanden zijn landelijk. De cijferpagina's van het COA zelf zijn afbeeldingen. Per locatie is er alleen de capaciteit op coa.nl (zie COA-opvanglocaties).
- **Correcties achteraf.** Een nieuw maandbestand kan eerdere maanden van hetzelfde jaar corrigeren. Haal het hele jaarbestand opnieuw op.

## API (Bestanden (CSV))

- Basis: https://data.overheid.nl/sites/default/files/dataset
- Toegang: Geen sleutel of account nodig (getest)
- Formaten: csv
- Omvang: 13485 regels in het bezettingsbestand 2026 (januari tot en met september, 1,5 MB) (getest)
- Filteren: Geen filters: hele jaarbestanden. Kies zelf de regels met de kolom 'Totaal van' (welke uitsplitsing) en *Alle* in de overige kolommen.; 

### Endpoints
- `GET /98a8a44c-ddab-4748-b771-34243dd0e14b/resources/Asiel%20-%20COA%20opvang%20en%20onderdak%20bezetting%20{jaar}.csv`: Bezetting per maand, 2024 tot en met 2026 (1,5 MB per jaar). 2016 tot en met 2023 staan onder een andere map: a0292124-457f-4e7d-b8d9-74cd3b7c7d13 (2020 heet bezetting%202020_2.csv).
- `GET /32e0debc-306f-47be-9eb2-d98d9e14b89a/resources/Asiel%20-%20COA%20opvang%20en%20onderdak%20instroom%20{jaar}.csv`: Instroom (ontvangen in de opvang) per maand en land van herkomst, 2024 tot en met 2026 (29 kB voor 2026). Oudere jaren onder 8625865b-f319-4b8a-bdfe-715c5cbddc3e.
- `GET /ca65eccc-40c0-4ec9-a5d1-504b8df2a770/resources/Asiel%20-%20COA%20opvang%20en%20onderdak%20uitstroom%20{jaar}.csv`: Uitstroom (vertrokken uit de opvang) per maand en land van herkomst (27 kB voor 2026).
- `GET https://data.overheid.nl/dataset/immigratie-coa-opvang-en-onderdak-{bezetting|instroom|uitstroom}`: Datasetpagina (HTML) met de actuele lijst van bestanden; hier vind je de mapnamen als er een nieuwe bij komt.

### Parameters
- `jaar`: Eén bestand per jaar; het lopende jaar wordt elke maand vervangen door een langere versie. (getest)

### Kolommen in de CSV (bezetting; instroom en uitstroom hebben alleen Jaar, Maand en Land van herkomst) (10)
`Nummer` getal, `Totaal van` tekst, `Jaar` getal, `Maand` tekst, `Opvangvorm` tekst, `Verblijfsduur` tekst, `Vergunninghouder` tekst, `Land van herkomst` tekst, `Amv` tekst, `Aantal bezetting opvang` getal

### Limieten en valkuilen
- Geen sleutel en geen limiet; gewone bestandsdownloads. Geen Last-Modified-kop, wel Accept-Ranges. (getest)
- Codering wisselt per jaar: cp1252 (Windows) tot en met 2023 en weer in 2026, UTF-8 in 2024 en 2025. Puntkomma als scheidingsteken, CRLF-regeleinden. (getest)
- Elke regel is één uitsplitsing (bezetting 2026: 26 soorten). Tel nooit over alle regels heen: kies één 'Totaal van'. Het totaal per maand is 'Jaar, Maand' (september 2026: 83.150). (getest)
- Afgerond op tientallen, aantallen onder 5 weggelaten: de som van de landen is niet het totaal. (ervaring)
- De JSON-bestanden naast de CSV's zijn grafiekinstellingen (dataStore, settings.activeChart), geen data. (getest)
- De bestandenlijst staat ook in de CKAN-API van data.overheid.nl (package_show), maar robots.txt verbiedt /data/. De datasetpagina en de bestanden onder /sites/default/files/ mogen wel. (getest)

### Voorbeeld
```
https://data.overheid.nl/sites/default/files/dataset/32e0debc-306f-47be-9eb2-d98d9e14b89a/resources/Asiel%20-%20COA%20opvang%20en%20onderdak%20instroom%202026.csv
```

## Zo haal je het op

### curl
```bash
curl -o coa-bezetting-2026.csv "https://data.overheid.nl/sites/default/files/dataset/98a8a44c-ddab-4748-b771-34243dd0e14b/resources/Asiel%20-%20COA%20opvang%20en%20onderdak%20bezetting%202026.csv"
```

### python
```python
import csv, io, requests

kop = {"User-Agent": "mijn-onderzoek/1.0 (+jij@voorbeeld.nl)"}
url = "https://data.overheid.nl/sites/default/files/dataset/98a8a44c-ddab-4748-b771-34243dd0e14b/resources/Asiel%20-%20COA%20opvang%20en%20onderdak%20bezetting%202026.csv"
ruw = requests.get(url, headers=kop).content
try:
    tekst = ruw.decode("utf-8-sig")
except UnicodeDecodeError:  # sommige jaren staan in Windows-codering
    tekst = ruw.decode("cp1252")
for r in csv.DictReader(io.StringIO(tekst), delimiter=";"):
    # Eén uitsplitsing tegelijk gebruiken, anders tel je dubbel.
    if r["Totaal van"] == "Jaar, Maand":
        print(r["Jaar"], r["Maand"], r["Aantal bezetting opvang"])
```

## Wat je ermee kunt bouwen
- [Dashboard asielopvang: landelijk en per gemeente](https://www.opendataindex.nl/bouwen/asielopvang-dashboard.md): Een dashboard dat laat zien hoeveel mensen er in de COA-opvang wonen sinds 2016, hoeveel er binnenkomen en vertrekken, en hoeveel opvangplaatsen elke gemeente heeft, ook per 1.000 inwoners.


## Voorbeelden met echte cijfers (4)

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

- **Bewoners van COA-opvanglocaties per land van herkomst: het meest Syrie (28.190 bewoners), dan Eritrea en Irak** (september 2026). Tabel Migratieketen: Opvang en onderdak, COA bezetting. [Voorbeeld](https://www.opendataindex.nl/voorbeeld/coa-bewoners-per-herkomstland)
  - `https://data.overheid.nl/sites/default/files/dataset/98a8a44c-ddab-4748-b771-34243dd0e14b/resources/Asiel%20-%20COA%20opvang%20en%20onderdak%20bezetting%202026.csv`
- **Bewoners van COA-opvanglocaties: 83.150 bewoners in september 2026, 77% meer dan in januari 2016** (september 2026). Tabel Migratieketen: Opvang en onderdak, COA bezetting. [Voorbeeld](https://www.opendataindex.nl/voorbeeld/coa-bezetting-per-maand)
  - `https://data.overheid.nl/sites/default/files/dataset/98a8a44c-ddab-4748-b771-34243dd0e14b/resources/Asiel%20-%20COA%20opvang%20en%20onderdak%20bezetting%202026.csv`
- **Instroom in de COA-opvang: 51.660 mensen in 2025, 44% meer dan in 2016** (2025). Tabel Migratieketen: Opvang en onderdak, COA instroom. [Voorbeeld](https://www.opendataindex.nl/voorbeeld/coa-instroom-per-jaar)
  - `https://data.overheid.nl/sites/default/files/dataset/32e0debc-306f-47be-9eb2-d98d9e14b89a/resources/Asiel%20-%20COA%20opvang%20en%20onderdak%20instroom%202025.csv`
- **Vergunninghouders in de COA-opvang (met verblijfsvergunning, wachtend op een woning): 18.300 bewoners in september 2026, 21% meer dan in januari 2016** (september 2026). Tabel Migratieketen: Opvang en onderdak, COA bezetting. [Voorbeeld](https://www.opendataindex.nl/voorbeeld/coa-vergunninghouders-per-maand)
  - `https://data.overheid.nl/sites/default/files/dataset/98a8a44c-ddab-4748-b771-34243dd0e14b/resources/Asiel%20-%20COA%20opvang%20en%20onderdak%20bezetting%202026.csv`
