Message sign locations

Traffic: counters, message signs, events and car parks

Format
GeoJSON
Updates
Daily
Latest snapshot
Snapshots stored
about 11
curl -H "Authorization: Bearer $MOBILITYTWIN_TOKEN" "https://api.mobilitytwin.brussels/traffic/message-sign-locations"
Get a token

The positions of the variable message signs in Brussels, with the road (localisation), direction (sens) and road type (typemg). id_mobigis links each sign to what it displays in the message-signs endpoint.

Which days have data

Data from 22 Oct 2026 to 2 Nov 2026, on 11 days. 10 of the last 30 days have data. A typical day holds 1 snapshot. Days are in UTC.

2026
JanFebMarAprMayJunJulAugSepOctNovDec
  • Full day
  • Partial, 50–90% of a typical day
  • Low, under 50%
  • No snapshot
  • Not expected

Click a day above, or pick a date, to get its requests.

Parameters

NameMeaning
timestampReturn the last snapshot at or before this moment, in Unix seconds or ISO 8601 (e.g. 2026-05-06T12:00:00Z). Without it, the latest snapshot is returned.

Response fields

A GeoJSON FeatureCollection. Field names without a prefix are in each feature's properties.

FieldType
bboxarray
crs.properties.namestring
crs.typestring
features[].bboxarray
features[].geometry_namestring
distancenumber
fidinteger
id_mobigisstring
indexinteger
live_displaystring
localisationnull or string
quadrantstring
segmentinteger
sensnull or string
typestring
typemgnull or string
numberReturnedinteger
timeStampstring
totalFeaturesstring

Python example

import requests
import pandas as pd
import geopandas as gpd

headers = {'Authorization': 'Bearer [MY_API_KEY]'}

locations = requests.get(
    "https://api.mobilitytwin.brussels/traffic/message-sign-locations", headers=headers
).json()
displays = requests.get(
    "https://api.mobilitytwin.brussels/traffic/message-signs", headers=headers
).json()

gdf = gpd.GeoDataFrame.from_features(locations["features"])
shown = pd.DataFrame([f["properties"] for f in displays["features"]])

# Put each sign's current text on the map
gdf = gdf.merge(shown[["id_mobigis", "status", "fr_l1", "fr_l2"]], on="id_mobigis", how="left")
gdf.plot(figsize=(10, 8), column="status", legend=True, markersize=20)