Green space per resident, resident count and the natural-green percentage for every neighborhood and every district on this dashboard (including the map, the "Per District" list and the comparison chart) are fetched automatically every day from the official BBGA open data API of the City of Amsterdam / OIS (public, no API key required) - a real measurement, not an estimate. Each neighborhood is linked to one or more official areas from the 2022 area classification (a district, neighborhood or postal code); each district to its official district area code (for example "A" for Centrum) - Weesp has no district-level area code of its own (only added to the municipality in 2022), so it's composed from the same official areas as its 3 neighborhoods. For areas made up of multiple official sub-areas (for example De Pijp = Oude Pijp + Nieuwe Pijp + Zuid Pijp), the underlying counts are summed before an average/percentage is calculated, not the other way around - so a small, densely populated sub-area doesn't count as heavily as a large, sparsely populated one. All neighborhoods are marked on the dashboard with a ● live badge; districts share the same live connection but don't (yet) have their own badge in every view.
Why district figures sometimes differ sharply from what you'd expect (for example Noord's high average). This isn't a calculation error: the BBGA definition of "public green space" (ORPUBGROEN) also counts agricultural green space - Noord includes Landelijk Noord, a large rural/ agricultural area, which pulls its average up substantially. This is the same definition used for the citywide average of 87.5 m² above, so it's consistent, but it does mean a district with a lot of outlying countryside looks different than you'd expect based on the built-up area alone.
A number of informal neighborhood names (Oud-West, De Baarsjes, Kinkerbuurt, Watergraafsmeer, the Bijlmer subdivisions, Westpoort and others) don't have an exact 1-to-1 official name. For those neighborhoods we used the most common/popular boundary, documented below and in the source code. For example: Oud-West and De Baarsjes historically overlap and are sometimes described as one area in sources; we draw the line between Da Costabuurt/Helmersbuurt/Overtoomse Sluis/Vondelparkbuurt/Van Lennepbuurt (Oud-West) on one side and Chassébuurt/Geuzenbuurt/Hoofdweg e.o./Van Galenbuurt/Westindische Buurt (De Baarsjes) on the other. Kinkerbuurt no longer has its own area in the 2022 area classification and is linked here to Bellamybuurt, the historical Kinkerbuurt sub-area not already assigned to Oud-West. Bijlmer-Centrum and Bijlmer-Oost follow the official CBS boundary at Gooiseweg. These are reasoned choices, not a claim that this is the only correct breakdown - corrections are welcome (see contact below).
The tree density index is a derived measure, not measured canopy cover. Amsterdam doesn't publish a per-neighborhood or per-district satellite/NDVI canopy dataset. Instead we use the real official tree register (every tree individually registered and linked to an area): we count the actual number of trees per area, divide by the actual land area (trees/ha), and rescale that density against the Amsterdam citywide average (index 14.8, the same headline figure as on the Overview page) so the result stays on the same 0-45% scale. This calculation - a simple linear rescaling, not a machine- learning or statistical model - is the same formula for neighborhoods and districts alike. It's a transparent index based on real tree counts - not fabricated, but also not a direct surface measurement of tree canopies. See the definitions table below for the exact formula.
The recommended intervention, the type (Quick Win/Structural) and the cost indication per neighborhood are our own illustrative suggestions, not an official municipal plan - and they can't be: these are proposals, not measurements, so there is no "real" data source for what should still be built. Input from urban planners, green-space contractors, ecologists and municipal staff to make these suggestions accurate and useful in practice is very welcome - see the Contact tab.
Gas use per neighborhood (Infrastructure & Heritage) is a real, measured figure, not an estimate. An earlier version of this feature asked for an address and calculated a "green roof savings" figure from it - both were hashes of the input, so arbitrary, and the underlying premise doesn't hold up either: trade literature (Vakblad de Hovenier, "Extensief begroeide daken isoleren bijna niet"; Milieu Centraal) shows an extensive green roof mainly insulates in summer - its vegetation layer is usually wet through autumn and winter, and wet insulation has little R-value. We no longer make that claim, and instead show the real average gas use for the neighborhood at your address: the address is geocoded to coordinates via OpenStreetMap Nominatim, those coordinates are matched to an official Amsterdam area via the municipality's own area boundaries (the same source the rest of this dashboard uses), and that area is looked up in CBS's "Gemiddeld aardgasverbruik" figure (Kerncijfers wijken en buurten 2024 - the most recent year CBS published this field; later editions drop it). Looking to actually cut your gas use? We point to Milieu Centraal's roof-insulation guidance, which is built on a real insulation effect.
Image credits. Every photo on this site is a real photograph of a real place, under a free licence, with the maker named - no generated or imitated imagery. Each one is cropped to a 3:2 banner and recompressed; nothing else is changed. This list is generated fromsrc/data/hero-images.json, the same file the credit under each photo comes from, so the two cannot drift apart.
One exception, and it is not on the site itself. The per-neighbourhood share cards, and the preview image you see when the site itself is shared, use generated imagery rather than photographs. They appear only on the image you get when sharing, never on the site itself, and are not described as photographs there. Every photo you see on the site itself falls under the rule above.
- Singel - Dietmar Rabich, Wikimedia Commons, CC BY-SA 4.0
- Aerial view of the centre and the IJ - RubenVanKuik, Wikimedia Commons, CC BY-SA 4.0
- Amsterdamse Bos - Ehud Neuhaus, Wikimedia Commons, CC0
- Frederiksplein - Fons Heijnsbroek, Wikimedia Commons, CC0
- The Amstel, seen from the Utrechtsebrug - Arthena, Wikimedia Commons, CC BY-SA 4.0
- Leliegracht - FaceMePLS, Wikimedia Commons, CC BY 2.0
Photos of locations (quiet spots, facilities) are real and sourced from Wikimedia Commons, with attribution per photo. Where a section cites a specific source (for example under the Climate & Equity table), that's the source the definitions and thresholds used are drawn from - not necessarily the origin of every number currently shown.
| Indicator | Definition |
|---|---|
| m² green / resident | Public green space area in an area divided by the number of residents of that area. |
| "Not comparable" | Some neighbourhoods carry no green-per-resident figure but the wordsnot comparable instead. That is a choice, and here is why. Green per resident divides green space by the people who live there, which works for as long as people live there. Several of Amsterdam's official neighbourhoods are not residential: the Vondelpark, the Sloterpark, the Beatrixpark and the Nelson Mandelapark have no residents at all, the Amerikahaven has four, the Petroleumhaven one. Divide a few hundred hectares of green by four people and you get hundreds of thousands of square metres each. That figure is arithmetically correct and says nothing: it describes nobody's neighbourhood, and it would sit at the top of every ranking on this site, making the comparison between places where people actually live unreadable. At zero residents there is no result at all. The threshold is 100 residents. Neighbourhoods below it carry no figure and take no part in the rankings, the colours or the split into thirds. They are parks, harbours, business parks, cemeteries, sports grounds and station areas. Every other figure on their page - trees, natural green, facilities - is shown as normal, because those are not divided by residents. The threshold is deliberately low. Rural neighbourhoods with few residents and a great deal of green, such as Holysloot, Zunderdorp, Durgerdam and Ransdorp, stay in: real people live there, and the fact that they have a lot of green around them is a real result rather than an artefact of the arithmetic. One district works the same way: Westpoort. It is the port - 2,119 residents spread over 1,632 hectares, 107 inhabitants per km². The figure that falls out is 2,228 m² of green per resident, against 3.0 m² in Centrum. It is arithmetically correct and describes nobody: it would flatten every district where people actually live into the left edge of the chart. Westpoort keeps its own page and its own figure, but takes no part in the per-resident comparison. The threshold is 500 inhabitants per km², in the gap between Westpoort (107) and the next sparsest district, Weesp (1,208). |
| Tree density index | Derived estimate: (actual number of registered trees in the neighborhood ÷ actual land area) rescaled against the citywide average tree density, so the citywide average lands on index 14.8. It is a density measure (trees per hectare), not a percentage of neighborhood area. Based on real tree counts (source: official Amsterdam tree register), but not a direct satellite/NDVI measurement of canopy surface. |
| Natural green (%) | Area of "natural greenery with a high ecological value" (the indicator's own definition, measured on the BGT topographic map) divided by the neighbourhood's total land area - so a percentage of the whole neighbourhood, not a share of its green space. Live for all 33 neighbourhoods (source: BBGA, indicators ORNTRGROEN ÷ ORLAND). 0% is a real measurement, not a missing figure. Thirteen of the 33 neighbourhoods read 0: the dense inner-city areas and the redeveloped docklands, where the green that exists is landscaped (parks, squares, canal banks) and the BGT records no natural greenery. Checked 27 August 2026: all 21 underlying district codes return a published 0.0 for 2024, not an empty value. Not a substitute for an actual species inventory. |
| Equity hotspot | Neighborhood with a low tree density index (<15) combined with high population density - priority for greening. |
| HIGH risk classification | Tree density index <15. (An earlier version of this page also cited an NDVI-trend criterion - this dashboard does not compute one, so it has been removed.) |
| Top/middle/bottom third | There is no verified official m²-per-resident target for 2030 or 2050 (see the Version History tab) - status badges and colors are therefore based on where a neighborhood stands now relative to the other 32 (terciles of the live m²/resident figures), not an absolute norm. |
| m² green / resident (citywide average) | 87.5 m² (2025) - the City of Amsterdam's own "Monitor Groen" definition: all public green including agricultural and natural green and private gardens, not just parks/plantsoenen. Calculated as BBGA indicator ORPUBGROEN (hectares) ÷ BEVTOTAAL (residents), area "STAD". See the Version History tab for why this differs from earlier figures on this dashboard. |
| Section | Status | Notes |
|---|---|---|
| Overview - green/resident, tree shade, growth since 2019 | 🟢 / 🔵 | Green/resident is live (BBGA ORPUBGROEN/BEVTOTAAL, area "STAD", see the Version History tab); tree shade is the derived canopy estimate above. The trend percentage is calculated on a constant city boundary (area "STAD" minus area "S", which holds Weesp and Driemond) from 2019 through the latest year, so Weesp's 2022 annexation doesn't distort the figure. |
| Overview - "Amsterdam through time" | 🟢 Live | Every year shown (2019-2025) is a real, separate measurement (BBGA), not interpolated or projected. No years before 2019 or after 2025 are shown, since no real figures exist for those. |
| Overview - "What's being done?" | 🟡 Illustrative | Example projects with illustrative progress bars, not an official municipal project plan or progress report. |
| Overview - rainwater capture (pkpi + Flooding card) | 🔵 Derived | No citywide measurement exists; calculated from two real figures - Amsterdam's actual registered tree count (324,709) × a published i-Tree figure for street trees (6,842 liters/year/tree, Manhattan study) - see the Version History tab. |
| Neighborhoods - green/resident, residents, density, natural green | 🟢 Live | Directly from the BBGA API, see above. |
| Neighborhoods - "Per District" (map, list, comparison chart), color/status | 🟢 / 🔵 | Green/resident and natural green per district are live (the same BBGA connection as the neighborhoods, see above); top/middle/bottom-third status and the map color are derived from terciles computed over the 8 districts themselves, not the neighborhood terciles (see the Version History tab for the earlier bug here). |
| Neighborhoods - tree density index, ranking, headline stat | 🔵 Derived | Calculated from the live BBGA figures (canopy see above; ranking and the "most striking stat" selection are our own selection logic on top of real numbers). |
| Neighborhoods - fun facts | 🟢 Real content | Manually curated, fact-checked per neighborhood - not a dataset, but verified content. |
| Neighborhoods - recommended intervention, type, cost, timeline | 🟡 Illustrative | Our own suggestions, not an official municipal plan - see above. |
| Trees & Ecology - Ecological facilities (map + list) | 🟢 Live | Count and type per neighborhood are real: a point-location spatial join between the City of Amsterdam's official ecologie/faunaverblijfplaatsen dataset (~4,588 individually registered nest boxes, bat boxes, insect hotels, etc.) and the real neighborhood boundaries. Neighborhoods with no match honestly show "no known facility," not a made-up example. There is no live condition/status field in this source (100% empty across all 4,588 objects) - the earlier "Active/Reported/Under repair" status and "Report damage" button couldn't be substantiated and have been removed. |
| Trees & Ecology - Tree summary (Boomresumé) | 🔵 / 🟡 | Tree species and average planting year per neighborhood are live/real: calculated from a sample of 50 individually registered trees per neighborhood (most common species + average planting year) from the official tree register - not linked to one specific tree, but a real statistic over real trees. Height, CO₂, water and shade per tree stay a model based on standard urban-forestry rules of thumb applied to that real age (comparable to the approach behind tools like i-Tree) - the tree register only has a height class, not an exact per-tree measurement. |
| Trees & Ecology - Recently planted trees | 🟢 Live | Real replacement for the removed Waarnemingen (sightings) feed: count and species breakdown per neighborhood of trees with a real jaarVanAanleg (planting year) within a rolling 2-year window, straight from the official tree register. When a neighborhood code has more than 100 real results, it's shown honestly as "100+" rather than implying an exact count (to avoid extra requests just for a precise number) - never an estimate, only a floor. |
| Trees & Ecology - Wildlife crossings | 🟢 Live | Count and type per neighborhood are real: the same point-location spatial join as above, now against the City of Amsterdam's official ecologie/faunavoorzieningen dataset (639 individually registered wildlife crossings, fish passages, wildlife culverts, etc. - structural crossings for animals, separate from the nest/bat boxes above). |
| By district - ecological core areas & corridor zones | 🟢 Live | Real count of core habitat areas (147 citywide, with indicator species where known) and corridor zones (1,706 citywide) per district, aggregated directly on the real stadsdeelNaam field of the City of Amsterdam's ecologie/kerngebieden and ecologie/verbindingszones datasets - no spatial join needed, these datasets already carry the real district name. |
| By district - housing development pressure | 🟢 Live | Real count of housing development projects and planned homes per district, from the City of Amsterdam's official public housing-development-plans dataset (958 real projects citywide), aggregated directly on the real stadsdeelNaam field. |
| Overview - How green is Amsterdam compared to other cities? | 🟢 Live | Independent CBS (Statistics Netherlands) figures (StatLine table 86211NED, land use) - not from Amsterdam's own systems - on the share of urban green space relative to total land area, for Amsterdam and 4 other major cities (Rotterdam, Utrecht, Den Haag, Eindhoven). This CBS table's server-side filter is broken (any $filter value is silently ignored) - both pages covering all Dutch municipalities are therefore fetched in full and filtered client-side. |
| Infrastructure & Heritage - Energy labels | 🟢 Live | Real, citywide distribution of registered energy labels (EPBD certificates, ~330,000 real labels) per class (A through G), from the City of Amsterdam's official duurzaamheid/energielabel dataset. No neighborhood/district field on this source (only postcode + BAG object ID) - hence a citywide distribution, not a neighborhood breakdown. |
| Neighborhoods - Neighborhoods climbing the most | 🟢 Live | Real change in green space per resident since a real prior year, calculated from two real BBGA annual figures (ORPUBGROEN/BEVTOTAAL) per neighborhood - not a modeled trend. Neighborhoods without two real annual figures are excluded, not filled in with an estimate. |
| Trees & Ecology - Tree safety & storm damage | 🟢 Live | Real citywide count of safety inspections in the last 12 months (a fast count query against the City of Amsterdam's official bomen/veiligheidsinspecties dataset, 1.2 million records total) and the real (currently 10) storm damage reports from bomen/stormmeldingen, including storm name, damage type and address. No per-neighborhood breakdown - that would require a heavy join against 1.2 million inspection records that doesn't fit the daily Lambda run. |
| Climate & Equity - Light pollution | 🟢 Live | Real "sky brightness" value per neighborhood from Province of Noord-Holland's official living-environment atlas (WMS map), sampled at each neighborhood's centroid (the same centroid used for elevation/noise above). The coordinate transform from Dutch RD grid to lon/lat uses the published Kadaster/RDNAPTRANS approximation formula (~1-2m accuracy), more than enough for sampling this coarse raster. |
| Trees & Ecology - Toxin-Free Transition Tracker | 🟢 / 🟡 | Oak processionary moth treatment this season is live (Diseases, Pests and Exotics in Green Spaces API); the soil contamination figures are historical (through 2011), see above for why. |
| Climate & Equity - Heat-risk quadrant | 🔵 Derived | The canopy axis is real (tree register); the heat-risk axis is a calculated index based on population density and canopy, not a separate temperature measurement per neighborhood. |
| Climate & Equity - Clean air (live air quality) | 🟢 Live | Real, current PM2.5 and NO2 readings from the city's 11 real RIVM Luchtmeetnet / GGD Amsterdam monitoring stations (updated hourly). No street-level air-quality data exists for Amsterdam - the earlier "cleanest vs. fastest route" comparison (fully invented traffic density and canopy buffer per street segment) has therefore been removed, not replaced. The 11 stations' map positions are manually placed on this schematic map (same approach as BUURT_DOTS/REFUGE_SPOTS), not a real geographic projection. |
| Water & Paving - Reported issues on the water | 🟢 Live | Public Space Reports API, see above. |
| Water & Paving - Depaving & Sponginess | 🔵 Derived | The priority score per neighborhood is real (density, public green space and tree density from BBGA/tree register); the convertible-asphalt m² figure, flood reduction per storm, and the designated "priority street" per neighborhood are a representative model, not street-level paving data. |
| Water & Paving - Winter black ice (Black Ice Prevention Index) | 🟢 Live | Elevation (PDOK AHN 0.5m elevation model, meters NAP), drainage deficit (real public green space area) and historical black ice reports ("Gladheid winterdienst/blad/olie", Public Space Reports) are all real, per neighborhood. For roughly half of neighborhoods the sampled centroid lands on water, so no elevation measurement is available - the score then falls back to the drainage and reports components. The earlier fictional "risk intersections" have been removed, not replaced. |
| Infrastructure & Heritage - Historic Quay Wall Index | 🟢 Live | Count, material and PBK reinforcement scope per neighborhood are real: a point-location spatial join (via each section's midpoint) between the City of Amsterdam's official quay wall register (~1,579 individually registered sections, civieleconstructies/kademuur) and the real neighborhood boundaries. There is no public numeric risk figure in this open dataset - the earlier fictional "vulnerability score" has therefore been removed, not replaced. The photos per location are real (Wikimedia Commons). |
| Infrastructure & Heritage - Corridor Connectivity | 🟡 Illustrative | Network strength between parks is a geometric model (distance + canopy), not a field study of actual animal movement. |
| Infrastructure & Heritage - Gas use in your neighborhood | 🟢 Live | See above - CBS Kerncijfers wijken en buurten 2024, joined to a real geocoded address via OpenStreetMap Nominatim and the municipality's own area boundaries. |
| Find a quiet green spot | 🔵 Derived | The "Quiet" score is real: RIVM's Lden noise map (traffic, rail and industry, dB), sampled at the centroid of the neighborhood each location sits in and normalized across all 33 neighborhoods. "Shade" and "Seating" are our own representative estimate - no open per-location dataset exists for either. The photos per location are real (Wikimedia Commons). |
All 33 neighborhoods are refreshed automatically every day with live figures from the sources above (see the date at the top of the Overview page). Should any of the area mappings above need correcting, it will be noted here.
Why there's no water quality / swim safety map. We investigated whether a map with a current water quality score per canal/pond (blue-green algae, fish mortality, swim safety) was possible. Amsterdam doesn't publish this as open data - it sits internally with Waternet. Instead, on Water & Paving we show what is genuinely available live: reported issues on the water (wrecks, floating debris, nuisance). Not a quality measurement, but an honest signal.
Questions, corrections or interested in a live data connection or a custom platform? Go to the contact page.
This dashboard is itself a processing of open data, so it makes sense that the core figures are also downloadable on their own, not only readable on these pages. Two files, both generated from the same snapshot the site renders from, so they can never disagree with what is shown above:
- buurten.csv - one row per neighborhood with the core figures above (green space per resident, tree density index, natural green space, noise, elevation, black ice reports, light pollution), plus the official neighborhood code and district so it joins to other municipal data. A field that is not measured for a neighborhood is left blank, never a fabricated 0 - see the column notes in the file itself for exactly which fields and why.
- dashboard-data.json - the full, live payload behind this whole dashboard: every neighborhood, district and other section on this dashboard, in JSON.
License. Creative Commons Attribution 4.0 (CC BY 4.0) - free to use, including commercially, with attribution: "Monitor Groen Amsterdam (hoegroenisams.nl), CC BY 4.0" linking back to hoegroenisams.nl. See the full license text.
Refresh. Daily, along with the rest of this dashboard - see "Refresh cadence" above.buurten.csv is regenerated from the same snapshot on every build of the site, so the two cannot drift apart.
Both files are open to fetch() from another domain: /data/* and/open-data/* send a CORS header. Use them directly in your own map, notebook or visualisation.