JSON API
The forecast behind biometeo.eu as plain JSON – free, no key, CORS enabled. Recalculated every hour.
Endpoints
GET https://biometeo.eu/api/v1/brugge.json – forecast for one place
GET https://biometeo.eu/api/v1/index.json – all available places
23 regions: brugge, gent, antwerpen, brussel, liege, groningen, amsterdam, arnhem, eindhoven, wien, basel, hamburg, rostock, koeln, hannover, berlin, leipzig, frankfurt, offenburg, stuttgart, nuernberg, regensburg, augsburg (index.json lists them with names and coordinates). Replace brugge in the URL. Please poll at most every 30 minutes.
Fields
api_version | Always 1 for this URL. Breaking changes get a new path (/api/v2/). |
|---|---|
place | id, name (nl/de), region (nl/de), lat, lon. |
updated | Time of calculation (ISO 8601, Europe/Brussels). Recalculated every hour. |
today | Same object as days[0], for simpler templates. |
days[] | Today, tomorrow, the day after. Each: date, situation, intensity (0–2), level (highest level of all categories), level_name, levels per category, description (nl/de), halves[] (00–12 and 12–24 UTC, with their own levels). |
levels | Per category: 0 favourable · 1 none · 2 low · 3 high · null no data. A day shows the stronger of its two halves. |
categories | Category keys with display names (nl/de): headache, circulation, heart, joints, respiratory, sleep, concentration, mood, pain. |
situation | Weather situation: high_pressure, warm_advection, low_pressure, cold_advection, indifferent. |
pressure | hpa (sea level), change_3h, change_24h, trend (rising_fast, rising, steady, falling, falling_fast), strong_change (|change_3h| ≥ 3 hPa), series[] hourly from −24 h to +48 h. |
weather | Current hour at the reference point (2 m): temp_c, dew_point_c, humidity (relative, %), time (UTC). Added 2026-10-08. |
Home Assistant
Add this to configuration.yaml and restart Home Assistant. It uses the built-in
RESTful integration.
# configuration.yaml – one request, several sensors
rest:
- resource: https://biometeo.eu/api/v1/brugge.json
scan_interval: 1800 # data changes hourly; please don't poll more often
sensor:
- name: "Biometeo today"
unique_id: biometeo_brugge_today
value_template: "{{ value_json.today.level }}"
json_attributes_path: "$.today"
json_attributes: [date, situation, level_name, levels, description]
- name: "Biometeo headache today"
unique_id: biometeo_brugge_headache_today
value_template: "{{ value_json.today.levels.headache }}"
- name: "Biometeo tomorrow"
unique_id: biometeo_brugge_tomorrow
value_template: "{{ value_json.days[1].level }}"
- name: "Biometeo air pressure"
unique_id: biometeo_brugge_pressure
value_template: "{{ value_json.pressure.hpa }}"
unit_of_measurement: "hPa"
device_class: atmospheric_pressure
state_class: measurement
json_attributes_path: "$.pressure"
json_attributes: [change_3h, change_24h, trend, strong_change]
Levels: 0 favourable · 1 none · 2 low · 3 high. Use levels.<category> for any category listed above.
Please note
Own calculation, based on the biosynoptic method of the Deutscher Wetterdienst (Bucher 1993).
Not a service of the DWD. Information for weather-sensitive people, not medical advice.
Fields within v1 only change by adding new ones; breaking changes get a new path.
Weather data: Open-Meteo.com (CC BY 4.0), ICON-EU model of the Deutscher Wetterdienst. If you show the data publicly, please credit “biometeo.eu”.