# Wildfire risk (fire service)

The fire service states per safety region how high the risk of a wildfire is: phase 1 (normal, everyone is prepared) or phase 2 (it has been dry for a long time, a fire can develop quickly and unpredictably). brandweer.nl only shows today's state, with no history and no documented API. We read the page every day and store the result, so a series builds up from 16 October 2026.

- Publisher: Brandweer Nederland
- Area: Netherlands · Finest detail: safety region
- Period: actuele stand · Refreshed: daily
- Access: Open · Licence: Niet vermeld (website van de brandweer)
- Join keys: naam van de veiligheidsregio, regiocode (VR01 – VR25)
- Status: grijs · 25 veiligheidsregio's: 24× fase 1, 1× onbekend
- URL: https://www.brandweer.nl/natuurbrandrisico/

## What can you do with it?
- **A drought warning on your map.** Colour the safety regions by today's phase, for a dashboard on drought or recreation.
- **Did the warning work?.** Store the phase every day and compare it with the fires EFFIS and NASA FIRMS saw: did large fires come after phase 2?

## How to process it
1. **Read the list on the page.** Under 'Alle locaties & huidige fase' each region has a block with its name and phase ('Fase 1', 'Fase 2' or 'Onbekend'). robots.txt of brandweer.nl allows reading.
   `https://www.brandweer.nl/natuurbrandrisico/`
2. **Or the colours as JSON.** The map on the site fetches a colour per region code (VR01 – VR25). That address is not documented and returns colours, not phase numbers; you have to derive the translation from the page yourself.
   `https://www.brandweer.nl/wp-json/brandweer/v1/regio-phase-colors`
3. **Store it yourself.** There is no archive. Read the page once a day and save the date with the phase per region.

## Interesting combinations
- Fire danger versus fires → [effis](https://www.opendataindex.nl/en/bron/effis.md) via datum en regio. EFFIS gives the burnt areas with date and municipality; compare them with the phase of the safety region.
- How dry was it? → [knmi-daggegevens](https://www.opendataindex.nl/en/bron/knmi-daggegevens.md) via datum. Count the days without rain before a new phase: the phase follows drought.

## Similar sources
- [effis](https://www.opendataindex.nl/en/bron/effis.md): A calculated fire danger (Fire Weather Index) as a map layer for all of Europe, not the fire service's phase.

## What to watch out for
- **No API, no history.** Only today's state, on a web page. What we store starts on 16 October 2026.
- **Unknown is not a phase.** On 16 October 2026 Zaanstreek-Waterland was 'Onbekend' (unknown). Do not count that as phase 1.
- **Regions, not municipalities.** The phase applies to a whole safety region. For municipalities you need the assignment of municipalities to safety regions (CBS, Gebieden in Nederland).

## API (HTML-pagina + WordPress REST (ongedocumenteerd, JSON))

- Base: https://www.brandweer.nl/wp-json/brandweer/v1
- Access: No key. No official API: the page and the WordPress endpoint are public (tested). (tested)
- Formats: html, json
- Size: 25 safety regions with a phase (16 Oct 2026: 24 × Phase 1, 1 × Unknown) (tested)
- Filtering: No filters: you always get all 25 regions with the current state.; 

### Endpoints
- `GET /regio-phase-colors`: Colour per safety region (VR01 … VR25), as on the map. No phase number: on 16 Oct 2026 #dd9933 meant Phase 1, #B0C4DE Unknown (VR11).
- `GET https://www.brandweer.nl/natuurbrandrisico/`: HTML with per region <div class="risk">name<div class="risk-phase">Fase 1</div>; this is the source for the phase number.

### Parameters

### What you get back (3)
`VR01 … VR25` tekst (#rrggbb), `div.risk (tekst)` tekst, `div.risk-phase` tekst

### Limits and pitfalls
- robots.txt of brandweer.nl asks Crawl-delay: 10 (seconds between requests). The state changes at most a few times a day: fetching once a day is enough. (tested)
- Current state only, no history and no last-changed date on the page. Want a series? Store the state every day yourself (Open Data Index does so in its status check). (tested)
- The JSON endpoint is undocumented and may change without notice; it returns colours, not phases. Use the HTML for the phase number. (tested)
- Region names differ from CBS (86059NED): 'Gooi- en Vechtstreek' vs 'Gooi en Vechtstreek', 'Hollands Midden' vs 'Hollands-Midden', 'Zuid-Limburg' vs 'Limburg-Zuid'. Join on the VR code or compare letters only. (experience)
- The HTML page is ~150 kB; parse on the classes risk and risk-phase, not by position in the page. (tested)

### Example
```
https://www.brandweer.nl/wp-json/brandweer/v1/regio-phase-colors
```

## How to fetch it

### curl
```bash
curl -A "mijn-onderzoek/1.0 (+jij@voorbeeld.nl)" "https://www.brandweer.nl/wp-json/brandweer/v1/regio-phase-colors"
```

### python
```python
import re, requests

kop = {"User-Agent": "mijn-onderzoek/1.0 (+jij@voorbeeld.nl)"}
html = requests.get("https://www.brandweer.nl/natuurbrandrisico/", headers=kop).text
for regio, fase in re.findall(r'<div class="risk">\s*([^<]+?)\s*<div class="risk-phase">\s*([^<]+?)\s*</div>', html):
    print(regio, "|", fase)
```

## What you can build with it
- [Wildfire map: today's risk, hotspots and burnt land](https://www.opendataindex.nl/en/bouwen/natuurbrand-kaart.md): One map of the Netherlands per safety region with the fire service's phase, the fire danger for today and the coming days (EFFIS), the hotspots satellites saw this week (without factories) and the land that burnt this year, with KNMI drought data alongside.


## Examples with real figures (1)

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

- **Burnt natural land in the Netherlands mapped by EFFIS: 330 hectares in 2025, 80% more than in 2018** (2025). Table burntareas, country=NL. [Example](https://www.opendataindex.nl/en/voorbeeld/effis-hectare-per-jaar)
  - `https://api.effis.emergency.copernicus.eu/rest/2/burntareas/current/?country=NL`
