# Asylum reception in figures (COA)

How many people live in COA reception, how many arrive and leave each month, which countries they come from and how many already have a residence permit and are waiting for a home. The Ministry of Asylum and Migration publishes these migration chain figures monthly as CSV on data.overheid.nl, one file per year. National figures: not per municipality or per location.

- Publisher: Ministerie van Asiel en Migratie, Centraal Orgaan opvang asielzoekers
- Area: Netherlands · Finest detail: country, per month
- Period: 2016 – heden · Refreshed: monthly
- Access: Open · Licence: CC0 1.0
- Join keys: 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

## What can you do with it?
- **Reception over the years.** Line up occupancy per month, from the low point in June 2018 (20,010 residents) to more than 83,000 in 2026.
- **Waiting for a home.** The number of permit holders in reception shows how many people may already stay but have no home yet: a measure of the pressure on municipalities.
- **Intake versus outflow.** Compare intake and outflow per month and see when reception grows or shrinks; link outflow to housebuilding per municipality.

## How to process it
1. **Pick the yearly file.** Each dataset (occupancy, intake, outflow) has one CSV per year. The list of addresses is in the data.overheid.nl dataset record.
   `https://data.overheid.nl/data/api/3/action/package_show?id=immigratie-coa-opvang-en-onderdak-bezetting`
2. **Read the encoding correctly.** Semicolons as separator. The files from 2016 to 2023 and 2026 are in Windows encoding (cp1252), those of 2024 and 2025 in UTF-8. Try UTF-8 first, otherwise cp1252.
3. **Pick one breakdown.** The column 'Totaal van' says which breakdown a row is: 'Jaar, Maand' is the monthly total, 'Jaar, Maand, Vergunninghouder' splits by status, 'Jaar, Maand, Land van herkomst' by country. Use one per count, otherwise you count twice. *Alle* means: all values together.

## Interesting combinations
- Asylum applications and reception → [cbs-statline](https://www.opendataindex.nl/en/bron/cbs-statline.md) via jaar en maand, land van herkomst. CBS table 83102NED counts asylum applications per month and nationality; put it next to the intake into reception.
- Where are the places? → [coa-locaties](https://www.opendataindex.nl/en/bron/coa-locaties.md) via provincie en gemeente. The monthly figures are national. For the spread across the country: capacity per location from our harvest of coa.nl.

## Similar sources
- [coa-locaties](https://www.opendataindex.nl/en/bron/coa-locaties.md): Capacity per location, not the number of residents.

## What to watch out for
- **Rounded to tens.** All figures are rounded to tens and counts below 5 are not shown. Adding up details (per country) therefore gives a different number than the total: use the total rows.
- **Not per municipality or location.** The open files are national. The COA's own figure pages are images. Per location there is only the capacity on coa.nl (see COA reception locations).
- **Corrections afterwards.** A new monthly file can correct earlier months of the same year. Fetch the whole yearly file again.

## API (Bestanden (CSV))

- Base: https://data.overheid.nl/sites/default/files/dataset
- Access: No key or account needed (tested)
- Formats: csv
- Size: 13485 lines in the 2026 occupancy file (January to September, 1.5 MB) (tested)
- Filtering: No filters: whole annual files. Pick rows yourself with the 'Totaal van' column (which breakdown) and *Alle* in the other columns.; 

### Endpoints
- `GET /98a8a44c-ddab-4748-b771-34243dd0e14b/resources/Asiel%20-%20COA%20opvang%20en%20onderdak%20bezetting%20{jaar}.csv`: Occupancy per month, 2024 to 2026 (1.5 MB per year). 2016 to 2023 live in another folder: a0292124-457f-4e7d-b8d9-74cd3b7c7d13 (2020 is named bezetting%202020_2.csv).
- `GET /32e0debc-306f-47be-9eb2-d98d9e14b89a/resources/Asiel%20-%20COA%20opvang%20en%20onderdak%20instroom%20{jaar}.csv`: Inflow (received into reception) per month and country of origin, 2024 to 2026 (29 kB for 2026). Older years under 8625865b-f319-4b8a-bdfe-715c5cbddc3e.
- `GET /ca65eccc-40c0-4ec9-a5d1-504b8df2a770/resources/Asiel%20-%20COA%20opvang%20en%20onderdak%20uitstroom%20{jaar}.csv`: Outflow (left reception) per month and country of origin (27 kB for 2026).
- `GET https://data.overheid.nl/dataset/immigratie-coa-opvang-en-onderdak-{bezetting|instroom|uitstroom}`: Dataset page (HTML) with the current list of files; this is where you find the folder names when a new one appears.

### Parameters
- `jaar`: One file per year; the current year is replaced monthly by a longer version. (tested)

### Columns in the CSV (occupancy; inflow and outflow only have Jaar, Maand and 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

### Limits and pitfalls
- No key and no limit; plain file downloads. No Last-Modified header, but Accept-Ranges. (tested)
- Encoding varies per year: cp1252 (Windows) up to 2023 and again in 2026, UTF-8 in 2024 and 2025. Semicolon separator, CRLF line endings. (tested)
- Each line is one breakdown (occupancy 2026: 26 kinds). Never sum across all lines: pick one 'Totaal van'. The monthly total is 'Jaar, Maand' (September 2026: 83,150). (tested)
- Rounded to tens, counts under 5 omitted: the sum over countries is not the total. (experience)
- The JSON files next to the CSVs are chart settings (dataStore, settings.activeChart), not data. (tested)
- The file list is also in data.overheid.nl's CKAN API (package_show), but robots.txt disallows /data/. The dataset page and the files under /sites/default/files/ are allowed. (tested)

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

## How to fetch it

### 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"])
```

## What you can build with it
- [Asylum reception dashboard: national and per municipality](https://www.opendataindex.nl/en/bouwen/asielopvang-dashboard.md): A dashboard that shows how many people live in COA reception since 2016, how many arrive and leave, and how many reception places each municipality has, also per 1,000 residents.


## Examples with real figures (4)

For each example the finding, the reference date and the call that fetches exactly these figures.

- **Residents of COA reception locations by country of origin: most Syrie (28,190 residents), then Eritrea and Irak** (september 2026). Table Migratieketen: Opvang en onderdak, COA bezetting. [Example](https://www.opendataindex.nl/en/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`
- **Residents of COA reception locations: 83,150 residents in september 2026, 77% more than in januari 2016** (september 2026). Table Migratieketen: Opvang en onderdak, COA bezetting. [Example](https://www.opendataindex.nl/en/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`
- **Intake into COA reception: 51,660 people in 2025, 44% more than in 2016** (2025). Table Migratieketen: Opvang en onderdak, COA instroom. [Example](https://www.opendataindex.nl/en/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`
- **Permit holders in COA reception (with a residence permit, waiting for a home): 18,300 residents in september 2026, 21% more than in januari 2016** (september 2026). Table Migratieketen: Opvang en onderdak, COA bezetting. [Example](https://www.opendataindex.nl/en/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`
