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_versionAlways 1 for this URL. Breaking changes get a new path (/api/v2/).
placeid, name (nl/de), region (nl/de), lat, lon.
updatedTime of calculation (ISO 8601, Europe/Brussels). Recalculated every hour.
todaySame 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).
levelsPer category: 0 favourable · 1 none · 2 low · 3 high · null no data. A day shows the stronger of its two halves.
categoriesCategory keys with display names (nl/de): headache, circulation, heart, joints, respiratory, sleep, concentration, mood, pain.
situationWeather situation: high_pressure, warm_advection, low_pressure, cold_advection, indifferent.
pressurehpa (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.
weatherCurrent 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”.

Impressum · Datenschutz: DE · NL