Geofences
Pony: shared vehicle operator, no longer in brussels
- Format
- GeoJSON
- Updates
- No longer updated — Pony has ceased operations in Brussels; historical data only
- Latest snapshot
- Snapshots stored
- about 289
curl -H "Authorization: Bearer $MOBILITYTWIN_TOKEN" "https://api.mobilitytwin.brussels/pony/geofences"
The geofences of Pony in Brussels
Which days have data
Data from 22 Aug 2024 to 15 Sep 2025, on 323 days. 0 of the last 30 days have data. A typical day holds 1 snapshot. Days are in UTC.
2026
JanFebMarAprMayJunJulAugSepOctNovDec
2025
JanFebMarAprMayJunJulAugSepOctNovDec
2024
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
| Name | Meaning |
|---|---|
timestamp | Return 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.
| Field | Type | Meaning |
|---|---|---|
name | string | Zone name. Optional in GBFS 2.3. |
rules[].maximum_speed_kph | integer | |
rules[].ride_allowed | boolean | |
rules[].ride_through_allowed | boolean | |
rules[].station_parking | boolean | |
rules[].vehicle_type_id | array | |
rules[].ride_start_allowed | boolean | |
rules[].ride_end_allowed | boolean | |
rules[].vehicle_type_ids | array |
Python example
import requests
import geopandas as gpd
from datetime import datetime, timedelta, timezone
yesterday_noon = (datetime.now(timezone.utc) - timedelta(days=1)).replace(
hour=12, minute=0, second=0, microsecond=0
)
params = {
"timestamp": yesterday_noon.isoformat(), # ISO accepted; epoch also works
}
url = "https://api.mobilitytwin.brussels/pony/geofences"
data = requests.get(url, headers={
'Authorization': 'Bearer [MY_API_KEY]'
}, params=params).json()
gdf = gpd.GeoDataFrame.from_features(data["features"])
# Show restricted zones and speed limits
for _, zone in gdf.iterrows():
rules = zone.get('rules', [])
for rule in rules:
speed = rule.get('maximum_speed_kph', 'N/A')
print(f"{zone['name']}: max {speed} km/h, ride_allowed={rule.get('ride_allowed')}")
# Plot geofence boundaries
gdf.plot(figsize=(10, 8), alpha=0.3, edgecolor='cyan')