-
Notifications
You must be signed in to change notification settings - Fork 4
API documentation
This file describes the API used in this repository to get the weather data.
The API is not publicly documented and has been reversed engineered using the Android app be.irm.kmi.meteo
.
Data available for the following countries: Belgium, The Netherlands and Luxembourg.
Please be mindful if you plan to use this API:
- This is not a publicly documented API: behavior could change without notice
- Avoid spamming: this integration refreshes the data every 7 minutes by default
- Make your client identifiable: this integration uses the following HTTP header
User-Agent: github.com/jdejaegh/irm-kmi-ha
This is a personal project and isn't in any way affiliated with, sponsored or endorsed by The Royal Meteorological Institute of Belgium.
API endpoint: https://app.meteo.be/services/appv4/
Operations and parameters are passed using a query string. All requests are HTTP GET requests.
Example: GET https://app.meteo.be/services/appv4/?l=fr&s=searchCities&n=Bru
method name | description |
---|---|
getForecasts |
Main operation to get current weather as well as hourly and daily forecast |
searchCities |
Search a city to get its city code (used to get forecasts) |
getWarnings |
Get a global list of all warnings, for the three countries |
getWarningLegend |
Get the legend for the different levels of a given warning |
getIncaImage |
Get precipitation radar image (observation and forecast) |
getLocalizationLayer |
Get image with a dot at the given coordinates (for radar animation) |
getSvg |
Get SVG graph for max temp, min temp and rain for 14-days forecast |
getCommunesPerProvince |
Lists all municipalities in the specified province |
Not all parameters are used for each method. There are other parameters, but they seem useless (they can be omitted without modifying the output).
parameter name | type | description | example |
---|---|---|---|
s |
string | operation to perform (see Available operations) | getForecasts |
l |
string | language for the response | fr |
lat |
float | latitude (avoid putting lots of decimals) | 51.2213 |
long |
float | longitude (avoid putting lots of decimals) | 4.4051 |
th |
string | theme modifier (d for day theme, n for night theme) |
n |
rs |
int | other theme modifier | 1 |
ins |
int | city number (different from postal code) | 92094 |
i |
string | date and time | 202412301830 |
k |
string | key to use the service (md5 hex-encoded, changes based on time and method) | 53355e94f33c3abba785ecc064a17a55 |
The key for the parameter k
is required for most methods.
The key is generated by MD5 hashing the following values, separated by semicolon: r9EnW374jkJ9acc
, method name and today's date (dd/mm/yyyy).
The following Python snippet is an example:
import hashlib
hashlib.md5("r9EnW374jkJ9acc;getForecasts;31/12/2024".encode()).hexdigest()
This section briefly describes what each method returns and how the parameters are used.
As you will notice, some values that are integers or floats are sometimes returned as strings. Keep that in mind when using the values.
Required parameters: s
, k
, and either lat
and long
or ins
Optional parameters: l
(seems to default to English)
Example: GET https://app.meteo.be/services/appv4/?lat=51.2213&long=4.4051&k=585940aff31585bcfff7f3aa0dc290de&s=getForecasts
Output schema is as follows. Some full examples can be found in the tests/fixtures
folder (example)
{
"cityName": "Antwerp",
"country": "BE",
"obs": {},
"for": {},
"module": [],
"animation": [],
"todayObsCount": 569
}
The keys cityName
and country
are self-explanatory.
The cityName
key is subject to translation according to the l
parameter (could have been Anvers or Antwerpen here).
The key todayObsCount
indicates how many observations the users of the application submitted today.
Other keys have their own section below
Give the current weather observation, with temperature (in Celsius) and weather condition.
Example
{
"temp": 6,
"timestamp": "2024-12-30T14:50:00+01:00",
"ww": 15,
"dayNight": "d"
}
The combination of ww
and dayNight
(d
if the sun is above the horizon, n
if below) determines which icon is shown for the weather condition.
Table with icons matching
ww-dayNight | icon |
---|---|
0-d |
![]() |
0-n |
![]() |
10-d |
![]() |
10-n |
![]() |
11-d |
![]() |
11-n |
![]() |
12-d |
![]() |
12-n |
![]() |
13-d |
![]() |
13-n |
![]() |
14-d |
![]() |
14-n |
![]() |
15-d |
![]() |
15-n |
![]() |
16-d |
![]() |
16-n |
![]() |
17-d |
![]() |
17-n |
![]() |
18-d |
![]() |
18-n |
![]() |
19-d |
![]() |
19-n |
![]() |
1-d |
![]() |
1-n |
![]() |
20-d |
![]() |
20-n |
![]() |
21-d |
![]() |
21-n |
![]() |
22-d |
![]() |
22-n |
![]() |
23-d |
![]() |
23-n |
![]() |
24-d |
![]() |
24-n |
![]() |
25-d |
![]() |
25-n |
![]() |
26-d |
![]() |
26-n |
![]() |
27-d |
![]() |
27-n |
![]() |
2-d |
![]() |
2-n |
![]() |
3-d |
![]() |
3-n |
![]() |
4-d |
![]() |
4-n |
![]() |
5-d |
![]() |
5-n |
![]() |
6-d |
![]() |
6-n |
![]() |
7-d |
![]() |
7-n |
![]() |
8-d |
![]() |
8-n |
![]() |
9-d |
![]() |
9-n |
![]() |
This key provides information about daily and hourly forecasts, as well as warnings for the current location.
The list in for.daily
is sorted by time: today is the first element of the list. The list may also contain one element for the next (or current) night prevision.
It generally contains 7 days of forecast.
Example of list item
{
"dayName": {"fr": "Lundi", "nl": "Maandag", "en": "Monday", "de": "Montag"},
"period": "1",
"day_night": "1",
"dayNight": "d",
"text": {
"nl": "Deze namiddag...",
"fr": "Cette après-midi..."
},
"dawnRiseSeconds": "31500",
"dawnSetSeconds": "60360",
"tempMin": null,
"tempMax": 7,
"ww1": 15,
"ww2": null,
"wwevol": null,
"ff1": 4,
"ff2": null,
"ffevol": null,
"dd": 45,
"ddText": {"fr": "SO", "nl": "ZW", "en": "SW", "de": "SW"},
"wind": {
"speed": 20,
"peakSpeed": null,
"dir": 45,
"dirText": { "fr": "SO", "nl": "ZW", "en": "SW", "de": "SW"}
},
"precipChance": 0,
"precipQuantity": "0"
}
Note that no matter the language set by the parameter l
, all the languages will be present in the output show here.
-
dayName
is self-explanatory. -
period
: ? -
day_night
anddayNight
: are1
andd
respectively when the forecast is for daytime; are0
andn
respectively when the forecast is for nighttime. -
text
: gives weather forecast in plain language, for Dutch en French only. -
dawnRiseSeconds
anddawnSetSeconds
: sunrise and sunset time in seconds after midnight that day. -
tempMin
andtempMax
: minimum and maximum temperature. Minimum isnull
when not relevant anymore (in the today's forecast when it's the afternoon) -
ww1
andww2
: weather condition, which, in combination withday_night
, give the icon to show (see table inobs
key section). Two values may be given if the condition is forecasted to change during the day. -
wwevol
: how the condition will evolve betweenww1
andww2
. Nonnull
only ifww2
is nonnull
. Values are null or integer, but I did not investigate what they produce in the app.

In this image, the partly cloudy icon is given by ww1
, the rainy icon is given by ww2
and the double arrow is given by wwevol
.
-
ff1
,ff2
andffevol
: ? -
dd
andwind.dir
: wind direction, but WATCH OUT! To get the real direction (where the wind is coming from), you have to do:(dd + 180) mod 360
. They use that value to rotate an arrow that defaults to north (when dd=0), hence the trick. -
ddText
andwind.dirText
: wind direction (no trick here) -
wind.speed
andwind.peakSpeed
: forecasted wind speed and wind gusts speed (if any, might benull
), in km/h. -
precipChance
: precipitation probability in percents (between 0 and 100) -
precipQuantity
: forecasted amount of precipitation in mm/m²
The list in for.hourly
is sorted by time: current hour is the first element of the list.
It generally contains 48 hours of forecast.
Example of list item
{
"hour": "14",
"dayNight": "d",
"temp": 7,
"ww": "15",
"precipChance": "0",
"precipQuantity": 0,
"pressure": 1028,
"windSpeedKm": 25,
"windPeakSpeedKm": null,
"windDirection": 23,
"windDirectionText": {"nl": "ZZW", "fr": "SSO", "en": "SSW", "de": "SSW"}
}
Note that no matter the language set by the parameter l
, all the languages will be present in the output show here.
-
hour
: hour of the day for which the forecast is. This is represented as a zero-padded string ("01"
is 1 AM) and there is no indication of the day. The list starts with the current hour, and it is up to the client to keep track of the day. -
dayNight
:d
when the forecast is for daytime;n
when the forecast is for nighttime. -
temp
: forecasted temperature in Celsius. -
ww
: weather condition, which, in combination withdayNight
, give the icon to show (see table inobs
key section). -
precipChance
: precipitation probability in percents (between 0 and 100) -
precipQuantity
: forecasted amount of precipitation in mm/m² -
pressure
: atmospheric pressure in hPa. -
windSpeedKm
andwindPeakSpeedKm
: forecasted wind speed and wind gusts speed (if any, might benull
), in km/h. -
windDirection
: wind direction, but WATCH OUT! To get the real direction (where the wind is coming from), you have to do:(windDirection + 180) mod 360
. They use that value to rotate an arrow that defaults to north (when windDirection=0), hence the trick. -
windDirectionText
: wind direction (no trick here)
List of upcoming and current warnings for the current location.
The for.showWarningTab
is true
when the list in for.warning
is not empty.
Example of list item
{
"icon_country": "BE",
"warningType": {
"id": "2",
"name": {
"fr": "Conditions glissantes",
"nl": "Gladheid",
"en": "Ice or snow",
"de": "Glätte"
}
},
"warningLevel": "1",
"text": {
"fr": "Ce soir...",
"nl": "Vanavond, vannacht...",
"en": "The ground...",
"de": "Der Boden..."
},
"fromTimestamp": "2025-01-03T21:00:00+01:00",
"toTimestamp": "2025-01-04T10:00:00+01:00"
}
Note that no matter the language set by the parameter l
, all the languages will be present in the output show here.
-
icon_country
: country code for the warning. -
warningType.id
: id of the warning, see the warning table for all the known ids. -
warningType.name
: translated names for the warning, see table below for all names. -
warningLevel
: level of the warning from 1 (weak) to 3 (strong). -
text
: translated descriptions for the warning text. -
fromTimestamp
andtoTimestamp
: timespan of the warning. Note that warnings may appear before thefromTimestamp
. They are generally not shown after thetoTimestamp
.
This key contains three graphs for the 14-days forecast: maximum temperature, minimum temperature and rainfall.
The graphs are always nested under the svg
key, which contains a list of objects.
Each graph is translated in the four languages.
Here is an example
{
"svg": [
{
"url": {
"nl": "https:\/\/app.meteo.be\/services\/appv4\/?s=getSvg&ins=11002&e=tx&l=nl&k=c10e09ed15d26f241cfc056ccac49b5e",
"fr": "https:\/\/app.meteo.be\/services\/appv4\/?s=getSvg&ins=11002&e=tx&l=fr&k=c10e09ed15d26f241cfc056ccac49b5e",
"en": "https:\/\/app.meteo.be\/services\/appv4\/?s=getSvg&ins=11002&e=tx&l=en&k=c10e09ed15d26f241cfc056ccac49b5e",
"de": "https:\/\/app.meteo.be\/services\/appv4\/?s=getSvg&ins=11002&e=tx&l=de&k=c10e09ed15d26f241cfc056ccac49b5e"
},
"ratio": 1.3638709677419354
},
{
"url": {
"nl": "https:\/\/app.meteo.be\/services\/appv4\/?s=getSvg&ins=11002&e=tn&l=nl&k=c10e09ed15d26f241cfc056ccac49b5e",
"fr": "https:\/\/app.meteo.be\/services\/appv4\/?s=getSvg&ins=11002&e=tn&l=fr&k=c10e09ed15d26f241cfc056ccac49b5e",
"en": "https:\/\/app.meteo.be\/services\/appv4\/?s=getSvg&ins=11002&e=tn&l=en&k=c10e09ed15d26f241cfc056ccac49b5e",
"de": "https:\/\/app.meteo.be\/services\/appv4\/?s=getSvg&ins=11002&e=tn&l=de&k=c10e09ed15d26f241cfc056ccac49b5e"
},
"ratio": 1.3638709677419354
},
{
"url": {
"nl": "https:\/\/app.meteo.be\/services\/appv4\/?s=getSvg&ins=11002&e=rr&l=nl&k=c10e09ed15d26f241cfc056ccac49b5e",
"fr": "https:\/\/app.meteo.be\/services\/appv4\/?s=getSvg&ins=11002&e=rr&l=fr&k=c10e09ed15d26f241cfc056ccac49b5e",
"en": "https:\/\/app.meteo.be\/services\/appv4\/?s=getSvg&ins=11002&e=rr&l=en&k=c10e09ed15d26f241cfc056ccac49b5e",
"de": "https:\/\/app.meteo.be\/services\/appv4\/?s=getSvg&ins=11002&e=rr&l=de&k=c10e09ed15d26f241cfc056ccac49b5e"
},
"ratio": 1.3638709677419354
}
]
}
The e
query parameter determines the kind of graph:
-
tx
for maximum temperature -
tn
for minimum temperature -
rr
for rainfall
I don't know what ratio
is used for, maybe display settings.
This key provides information about the following elements: UV index, pollen levels, user observation and sunset/sunrise.
The module
key holds a list of JSON objects. Each object contains two keys: type
and data
.
Objects with key type
set to svg
contain URLs to SVG for different information: pollen levels and sunset/sunrise.
Here is an example:
{
"type": "svg",
"data": {
"url": {
"nl": "https:\/\/app.meteo.be\/services\/appv4\/?s=getSvg&ins=11002&e=pollen&l=nl&k=cceae7a769ddd926624778bb15d069f5",
"fr": "https:\/\/app.meteo.be\/services\/appv4\/?s=getSvg&ins=11002&e=pollen&l=fr&k=cceae7a769ddd926624778bb15d069f5",
"en": "https:\/\/app.meteo.be\/services\/appv4\/?s=getSvg&ins=11002&e=pollen&l=en&k=cceae7a769ddd926624778bb15d069f5",
"de": "https:\/\/app.meteo.be\/services\/appv4\/?s=getSvg&ins=11002&e=pollen&l=de&k=cceae7a769ddd926624778bb15d069f5"
},
"ratio": 2.193
}
}
When the URL contains e=pollen
, the SVG contains information about the active pollens.
e=efem
is used when the information is about sunset/sunrise.
Note that the SVG structure is subject to change: the pollen SVG changed three times in 2024.
Objects with the key type
set to uv
contain the current UV index. The data is quite self-explanatory.
{
"type": "uv",
"data": {
"levelValue": 0.6,
"level": {
"nl": "Laag",
"fr": "Faible",
"en": "Low",
"de": "Niedrig"
},
"title": {
"nl": "Uv-index",
"fr": "Indice UV",
"en": "UV Index",
"de": "UV Index"
}
}
}
Objects with the key type
set to observation
contain the current number of daily crowdsourced weather observations. The data is self-explanatory.
I did not investigate how to retrieve the observations. This data seems to be available as open-data: https://opendata.meteo.be/geonetwork/srv/eng/catalog.search#/metadata/RMI_DATASET_APPOBS
{
"type": "observation",
"data": {
"count": 569,
"title": {
"nl": "Waarnemingen vandaag",
"fr": "Observations d'aujourd'hui",
"en": "Today's Observations",
"de": "Beobachtungen heute"
}
}
}
This key contains data needed to construct the rain radar animation. The picture below shows an example of such animation:

An animated example is available here: https://github.com/jdejaegh/irm-kmi-ha/blob/main/img/radar_example.svg
The key contains an object like the following:
{
"localisationLayer": "https:\/\/app.meteo.be\/services\/appv4\/?s=getLocalizationLayer&lat=51.2213&long=4.4051&f=2&k=878df4e4552a3d09be730f77ed8e3114",
"localisationLayerRatioX": 0.5886,
"localisationLayerRatioY": 0.2706,
"speed": 0.3,
"type": "10min",
"unit": {
"fr": "mm\/10min",
"nl": "mm\/10min",
"en": "mm\/10min",
"de": "mm\/10min"
},
"country": "BE",
"threshold": [],
"sequenceHint": {
"nl": "Regen",
"fr": "Pluie",
"en": "Rain",
"de": "Regen"
},
"sequence": []
}
-
localisationLayer
: contains the URL of a PNG file with a dot at the location where the forecast was requested. This is supposed to be overlaid on a PNG representing the map of Belgium (see the resources folder in the repository for the images). -
localisationLayerRatioX
andlocalisationLayerRatioX
: no idea what those do. Probably for display ratio. -
speed
: number of seconds to leave each frame on display. The frames are in the list calledsequence
(more on this later). -
type
: type of graph. Generally gives out the interval between the frames. -
unit
: translated version of the unit for thevalue
key of each frame in the list calledsequence
. -
country
: self-explanatory. -
treshold
: never seen a value here, other than an empty list. No idea what this represents. -
sequenceHint
: short text describing the weather condition shown on the radar. -
sequence
: list of objects. Each object represent a frame of the animation and contains the rain layer of the animation. It also contains the amount of rain expected (in the unit given inunit
key)
Here is an example of an object in the sequence list:
{
"time": "2025-01-08T18:40:00+01:00",
"uri": "https:\/\/app.meteo.be\/services\/appv4\/?s=getIncaImage&i=202501081750&f=2&k=9250a005050e123e98ebcee80590808a&d=202501081710",
"value": 0.15,
"position": 0.09,
"positionLower": 0.084,
"positionHigher": 0.102
}
-
time
: timestamp of the frame. Might be in the past (observation) or in the future (forecast) -
uri
: link to an PNG file representing the rain. -
value
: amount of rain, expressed in the unit described above. -
position
: vertical position of line in forecast graph (at the bottom of the example image) -
positionLower
andpositionHigher
: used to draw the confidence margin around the line in the graph. Respectively, the lower and higher bound of the margin.
To reproduce the image at the beginning of the section:
- Overlay the map, the rain layer (in
sequence
) and localization layer (inlocalisationLayer
) to get the map. - Make the elements of
sequence
appear forspeed
seconds to create the animation effect. - For the bottom part, use the
time
,value
,position
,positionLower
, andpositionHigher
to create the animated graph.
Required parameters: s
and n
(the search query)
Optional parameters: l
(seems to default to English)
Example: GET https://app.meteo.be/services/appv4/?s=searchCities&n=Brux
The result is a list of location along with their id
.
The id
can be used where the parameter ins is accepted (in getForecasts
, for example, instead of using the coordinates).
Output for the example:
[
{
"id": "21004",
"name": "Brussels (BE)"
},
{
"id": "31005",
"name": "Brugge (BE)"
}
]
The value of name
depends on the parameter l
(defaults to English).
Results can be located in one of the three countries: Belgium, The Netherlands and Luxembourg.
Required parameters: s
and k
Example: GET https://app.meteo.be/services/appv4/?k=6d117b8dfe18e683cdb6481be04671dd&s=getWarnings
This method returns the warnings for the three countries: Belgium, The Netherlands and Luxembourg.
Warnings are sorted by province in the countries.
If you are only interested in getting the warnings for a specific location, use getForecasts
for that specific location and check the key for.warning
in the response.
The response of getWarnings
is a list of warnings.
Each warning is emitted for a specific country, so if a rain warning is emitted for the three countries, the list will contain three elements.
Below, an overview of the structure.
A full response can be found in the test fixtures folder.
[
{
"icon_country": "BE",
"warningType": {
"id": "2",
"name": {"nl": "Gladheid", "fr": "Conditions glissantes", "de": "Gl\u00e4tte", "en": "Ice or snow"}
},
"text": {
"nl": "Vanochtend...",
"fr": "Ce matin..."
},
"legendUri": {
"nl": "https:\/\/app.meteo.be\/services\/appv4\/?s=getWarningLegend&k=39fd3df3c7e9ba2bd6dabddf23c7a352&wa=2&l=nl",
"fr": "https:\/\/app.meteo.be\/services\/appv4\/?s=getWarningLegend&k=39fd3df3c7e9ba2bd6dabddf23c7a352&wa=2&l=fr",
"de": "https:\/\/app.meteo.be\/services\/appv4\/?s=getWarningLegend&k=39fd3df3c7e9ba2bd6dabddf23c7a352&wa=2&l=de",
"en": "https:\/\/app.meteo.be\/services\/appv4\/?s=getWarningLegend&k=39fd3df3c7e9ba2bd6dabddf23c7a352&wa=2&l=en"
},
"region": [
{
"name": {"nl": "Brussel", "fr": "Bruxelles", "en": "Brussels", "de": "Br\u00fcssel"},
"district": [
{
"region": {
"code": 6446,
"name": {"nl": "Brussel", "fr": "Bruxelles", "en": "Brussels", "de": "Br\u00fcssel" }
},
"intervals": [
{
"level": "1",
"fromTimestamp": "2025-01-10T05:00:00+00:00",
"toTimestamp": "2025-01-10T12:00:00+00:00"
}
]
}
]
},
{
"name": {
"nl": "Vlaanderen", "fr": "Flandre", "en": "Flanders", "de": "Flandern"},
"district": [
{
"region": {
"code": 6404,
"name": {"nl": "Kust", "fr": "C\u00f4te", "en": "Coast", "de": "K\u00fcste"}
},
"intervals": [
{
"level": "1",
"fromTimestamp": "2025-01-10T05:00:00+00:00",
"toTimestamp": "2025-01-10T12:00:00+00:00"
}
]
},
{
"region": {
"code": 6407,
"name": {"nl": "West-Vlaanderen", "fr": "Flandre-Occidentale", "en": "West Flanders", "de": "Westflandern"}
},
"intervals": [
{
"level": "1",
"fromTimestamp": "2025-01-10T05:00:00+00:00",
"toTimestamp": "2025-01-10T12:00:00+00:00"
}
]
},
{...}
]
},
{
"name": {"nl": "Walloni\u00eb", "fr": "Wallonie", "en": "Wallonia", "de": "Wallonien"},
"district": [
{
"region": {
"code": 6478,
"name": {"nl": "Luik", "fr": "Li\u00e8ge", "en": "Liege", "de": "L\u00fcttich"}
},
"intervals": [
{
"level": "1",
"fromTimestamp": "2025-01-10T05:00:00+00:00",
"toTimestamp": "2025-01-10T12:00:00+00:00"
}
]
},
{
"region": {
"code": 6432,
"name": {"nl": "Henegouwen", "fr": "Hainaut", "en": "Hainaut", "de": "Hennegau"}
},
"intervals": [
{
"level": "1",
"fromTimestamp": "2025-01-10T05:00:00+00:00",
"toTimestamp": "2025-01-10T12:00:00+00:00"
}
]
},
{...}
]
}
]
},
{...},
{...}
]
Each element in the list of warning is an object with the following keys:
-
icon_country
: country of the warning (2 letters country code) -
warningType
: object with a keyid
with the identifier of the warning (see warning table) and a keyname
with the translated name of the warning. -
text
: multiple translated sentences to describe the warning. Note that the languages available depend on the country. -
legendUri
: links to an HTML document describing the different levels for the warning. -
region
: list of regions where the warning can apply. The list contains objects, and each object has a keyname
(name of the region) anddistrict
(subdivisions of the region). For Belgium the regions are as expected (Brussels, Wallonia and Flanders) and the districts are the provinces in each region (plus a special district called "Coast" in Flanders). For the other countries, a single region is listed and has the name of the country and the districts are the provinces in the country.
Each element in the district list is quite self-explanatory: it contains the start and end time of the warning period, the level and the name of the affected location.
Table with known warning ids and names.
This table may not be exhaustive: it was build by observing the data returned by the API over time. You can open an issue if you find a new id and name.
Warning id | Warning name (en, fr, nl, de) |
---|---|
0 | Wind, Vent, Wind, Wind |
1 | Rain, Pluie, Regen, Regen |
2 | Ice or snow, Chute de neige ou verglas, Sneeuw of ijzel, Glätte |
3 | Thunder, Orage, Onweer, Gewitter |
7 | Fog, Brouillard, Mist, Nebel |
9 | Cold, Froid, Koude, Kalt |
12 | Thunder Wind Rain, Orage, rafales et averses, Onweer Wind Regen, Gewitter Windböen Regen |
13 | Thunderstorm & strong gusts, Orage et rafales, Onweer en wind, Gewitter und Windböen |
14 | Thunderstorm & large rainfall, Orage et averses, Onweer en regen, Gewitter und Regen |
15 | Storm surge, Marée forte, Stormtij, Sturmflut |
17 | Coldspell, Vague de froid, Koude, Koude |
Required parameters: s
, k
, and wa
the identifier of the warning (see warning table)
Optional parameters: l
(seems to default to English)
Example: GET https://app.meteo.be//services//appv4//?s=getWarningLegend&k=39fd3df3c7e9ba2bd6dabddf23c7a352&wa=2
Note that you generally don't have to construct the URL yourself, it can be obtained when using the getWarnings
method.
This method returns an HTML document with a description of each level for the specified warning. The HTML is quite simple: it can be displayed or parsed automatically. Below is an example of the body tag:
<body>
<h1>Ice or snow</h1>
<p>
<li class='level1'>
<p>
The ground may become slippery...<br/>
</p>
</li>
<li class='level2'>
<p>
A lot of dangerous icy conditions...<br/>
</p>
</li>
<li class='level3'>
<p>
General icy conditions....<br/>
</p>
</li>
</body>
Required parameters: s
, k
, and i
the date and time (e.g. 202501101130 for January 10th, 2025 at 11.30 AM)
Optional parameters: rs
(seems to default to 1) changes the color style of the image and can be 1, 2 or 3.
Example: GET https://app.meteo.be/services/appv4/?s=getIncaImage&i=202501101130&k=6a86d2c8bc0ae0ed82763ff7ceffaee3
Note that you generally don't have to construct the URL yourself, it can be obtained when using the getForecasts
method, in the animation
key.
This method returns an PNG image with the clouds as detected by the weather radar or forecasted by the Inca model.
It is made to be overlaid on top of a map of Belgium (see the resources folder) along with the localization layer returned getLocalizationLayer
.
This only works for Belgium and Luxembourg.
For The Netherlands, the getForecast method will include a URI to the KNMI endpoint, which acts similarly.
Required parameters: s
, k
, and either lat
and long
or ins
Optional parameters: th
if omitted dot is blue, if th=d
dot is red, if th=n
dot is white. For theming purpose.
Note that you generally don't have to construct the URL yourself, it can be obtained when using the getForecasts
method, in the animation
key.
This method returns an PNG image with a dot at the location given by the coordinates or by ins
.
It is made to be overlaid on top of a map of Belgium (see the resources folder) along with the could returned by getIncaImage
.
Required parameters: s
, k
, e
(type of SVG to get) and ins
(only for some values of e
)
Optional parameters: l
(seems to default to English)
Example: GET https://app.meteo.be/services/appv4/?s=getSvg&ins=11002&e=pollen&k=36bc4e79637d329ed6911c37310f3d32
Note that you generally don't have to construct the URL yourself.
It can be obtained when using the getForecasts
method, in the for.graph
key or in the module
key.
This method returns SVG graphics for different elements related to the weather.
The table below lists the possible types of SVG and if the ins
parameter is required.
value of e
|
description |
ins required |
---|---|---|
pollen |
Returns a graph with the currently active pollens | yes |
efem |
Returns a graph with sunrise and sunset | no (request fails if you set it) |
tx |
14-days graph with maximum forecasted temperature | yes |
tn |
14-days graph with minimum forecasted temperature | yes |
rr |
14-days graph with forecasted rainfall | yes |
Required parameters: s
, k
and prov
the identifier of the province
Example: GET https://app.meteo.be/services/appv4/?k=536bb7c84936e2240eb1cc74dc8840c3&s=getCommunesPerProvince&prov=11
Returns a JSON list of objects with the ins code for each locality and the translated locality name.
[
{
"ins": 21001,
"names": {
"nl": "Anderlecht",
"fr": "Anderlecht",
"de": "Anderlecht",
"en": "Anderlecht"
}
},
{
"ins": 21002,
"names": {
"nl": "Oudergem",
"fr": "Auderghem",
"de": "Oudergem",
"en": "Oudergem"
}
},
{
"ins": 21003,
"names": {
"nl": "Sint-Agatha-Berchem",
"fr": "Berchem-Sainte-Agathe",
"de": "Sint-Agatha-Berchem",
"en": "Sint-Agatha-Berchem"
}
},
{...}
]
The identifier of the provinces are as follows:
- West-Vlaanderen
- Oost-Vlaanderen
- Antwerpen
- Limburg
- Hainaut
- Vlaams-Brabant
- Brabant wallon
- Namur
- Liège
- Luxembourg
- Brussels Capital Region