COA reception locations
The COA has no open file or API with its locations. Each location does have its own page on coa.nl with the capacity, the type of reception (reception centre, emergency shelter, housing for unaccompanied minors …), the term of the agreement with the municipality and the address. We read those pages every Monday, look up the address in the BAG and place it in the municipal boundaries. That gives the number of reception places per municipality and province.

Everything that's in it261
All reception locations with their own page on coa.nl, by province and municipality, fetched every Monday. For each location the capacity, type, term of the agreement and address, as the page states them (in Dutch). We do not copy names or contact details of staff.
Reception places at COA locations by municipality: most Amsterdam (5,196 places), then Rotterdam and Westerwolde
Reception places at COA locations by municipality, October 2026, in places. Total: 68,779; the largest 12 of 160 categories are shown. Amsterdam is 8% of the total. Reception places according to the 261 COA location pages (251 state a capacity), 68,779 places together. That is capacity, not how many people live there now. Crisis emergency shelters run by municipalities and safety regions are not included. Municipality from the address (BAG) and the 2025 municipal boundaries.
Reception places at COA locations by province: most Zuid-Holland (13,086 places), then Noord-Holland and Gelderland
Reception places at COA locations by province, October 2026, in places. Total: 68,779; the largest 12 of 12 categories are shown. Zuid-Holland is 19% of the total. Reception places according to the 261 COA location pages (251 state a capacity), 68,779 places together. That is capacity, not how many people live there now. Crisis emergency shelters run by municipalities and safety regions are not included. Province from the address (BAG) and the 2025 municipal boundaries.
What you can build with it1
What can you do with it?3 ideas
Reception in your municipality
Find the locations in a municipality, with capacity and until when the agreement with the municipality runs.
Places per resident
Divide the reception places per municipality by the population (CBS) and compare municipalities and provinces.
Agreements that expire
Read per location until when the agreement runs and see which places may disappear in the coming years.
How to process it3 steps
The list of locations
The coa.nl sitemap lists every location page (addresses under /nl/locatie/). On 16 October 2026 there were 261.
https://www.coa.nl/sitemap.xml?page=1
Read the blocks on the page
Capacity, type and agreement sit in infographic blocks (title, number, sentence); the order differs per page. The address is in the contact block. Do not copy names or contact details of staff.
https://www.coa.nl/nl/locatie/ter-apel-ter-apelervenen
Address to municipality
Look up postcode and house number in the PDOK BAG WFS and place the point in the municipal boundaries. The PDOK Locatieserver is faster, but robots.txt of api.pdok.nl excludes it for scripts.
https://service.pdok.nl/lv/bag/wfs/v2_0?service=WFS&version=2.0.0&request=GetCapabilities
Interesting combinations

Capacity versus occupancy
The monthly figures give the number of residents; this gives capacity per location. Note: not every location has a page.

Reception in proportion
Link to the population per municipality from the district and neighbourhood key figures.
Similar sources
Asylum reception in figures (COA)National monthly figures of residents, intake and outflow, as open data.
What to watch out for
- Not every location has a page
The COA lists 329 locations in its infographic (12 October 2026); the sitemap has 261 location pages. Crisis emergency shelters of municipalities and safety regions are not included at all. The sum of capacity is therefore not total reception.
- Capacity, not occupancy
The page states the number of places, not how many people live there now. Ten pages state no capacity or put it in the wrong field (16 October 2026); they are not counted.
- Read from a website
This is not an API: if the COA changes the page layout, the harvest has to follow. The harvest stops when fewer than 80% of the pages can be read, and the previous state remains.
APIWebpagina's (HTML) + sitemap; machineleesbaar via onze eigen index (JSON) · read 16 Oct 2026
No key or account needed tested
location pages in the sitemap (16 Oct 2026); the COA itself lists 329 locations tested
htmlxmljson
Base URL
https://www.coa.nl
Endpoints 5
- GET
/sitemap.xml?page=1The list of pages; locations are the URLs /nl/locatie/<name>. No lastmod per location. - GET
/nl/locatie/{naam}One location (HTML, ~250 kB): infographic blocks Capaciteit (capacity), Type locatie (type) and Overeenkomst (agreement), plus the visiting address in the contact block. - GET
https://www.opendataindex.nl/api/catalogus/coa-locaties?pad=/{provincie}/{gemeente}Our index as JSON: folders per province and municipality with counts (n), and the locations (key, title) per municipality. Without pad: the 13 province folders (incl. 'Onbekend'). - GET
https://www.opendataindex.nl/api/catalogus/coa-locaties?q={tekst}Search by name or place in our index (q=Ter Apel, q=Amsterdam). - GET
https://www.opendataindex.nl/dataset/coa-locaties/{sleutel}Our page per location with capacity, type, agreement, address, municipality and province.
Filtering tested
No query language at the COA. In our index you browse per province and municipality or search with q.
Parameters 3
page | Sitemap page; page 1 contains all location pages. | tested |
pad | In our index: /<nr> for a province, /<nr>/<nr> for a municipality (see the children in the response). | tested |
q | Search text in our index; empty returns an empty list. | tested |
What a location page contains, and our index 6
| Name | Type | Meaning |
|---|---|---|
Capaciteit | blokje · plaatsen | Getal in itemIconData (het totaal), zin in itemDescription ('2000 opvangplaatsen') |
Type locatie | blokje | Zin met het soort opvang: azc, col, pol, amv, vbl, noodopvang … |
Overeenkomst | blokje | Zin over sinds wanneer de opvang er is en tot wanneer de bestuursovereenkomst loopt |
og:title | tekst | Naam van de locatie ('Ter Apel - Ter Apelervenen') |
contactblok | tekst | Bezoekadres na 'Snel contact <naam>': straat, postcode, plaats |
n / kinderen / items | JSON | Onze index: aantal locaties per map, submappen, locaties (sleutel, titel) |
Limits and pitfalls
- No API and no documented limit. We read the 261 pages once a week, three at a time with a pause; a page came back in 0.2 s. tested
- Our index is cached on the CDN for an hour (s-maxage=3600); the state is that of the latest Monday harvest. tested
- The blocks appear in a different order per page: look them up by title (itemTitleAlt), not by position. The number in the Overeenkomst block is not a year ('40' for an agreement until 2040): read the date from the sentence. tested
- Do not copy names, phone numbers or email addresses of staff; those are on the pages too. experience
- Municipality and province are not on the page. We look up postcode and house number in the PDOK BAG WFS and place the point in the municipal boundaries (2025 division); for one location that failed (folder 'Onbekend', 16 Oct 2026). tested
- Our index only gives key and title per location; capacity, type and address are on our dataset page per location. tested
Try it HTTP 200 · 326 ms · 16 Oct
https://www.opendataindex.nl/api/catalogus/coa-locaties
{
"pad": "",
"code": "",
"titel": "COA-opvanglocaties",
"n": 261,
"submappen": 13,
"kinderen": [
{
"pad": "/0",
"code": "Drenthe",
"titel": "Drenthe",
"n": 12,
"submappen": 8
},
{
"pad": "/1",
"code": "Flevoland",
"titel": "Flevoland",
"n": 6,
"submappen": 4
}
],
"items": [],
"meer": 0
}Shortened response, saved at harvest time. Click the URL for the real, current response.
Read from coa.nl sitemap: 2,000 URLs on page 1, of which 261 location pages under /nl/locatie/ (page 2: 108 other URLs) · robots.txt: /nl/locatie/ and the sitemap are allowed; disallowed are e.g. /admin/, /search/ and /user/…. 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 -A "mijn-onderzoek/1.0 (+jij@voorbeeld.nl)" "https://www.coa.nl/sitemap.xml?page=1" | grep -o "https://www.coa.nl/nl/locatie/[^<\"]*" | sort -u
More from COA in our index
261 datasets in COA-opvanglocaties. These changed most recently.
More in this topic
See how this page is built
bron: coa-locaties blokken: [] secties: - ideeen - verwerken - koppelingen - vergelijkbaar - beperkingen - code cache: tag: bron:coa-locaties ververs: na statuscheck, als de bron nieuwer is statuscheck: methode: aantal locatiepagina's in de sitemap van coa.nl verwacht: wekelijks
Source: content/bronnen/coa-locaties.yaml · Markdown


