One endpoint. 12 countries. Real-time departures.
Pass any latitude/longitude in Europe. That's all you need.
The API detects the region and queries the right local transit source.
Get a clean, normalized response — same format for every city.
Click a city marker or anywhere on the map to fetch live departures.
Click a city or point on the map to see live results.
curl "https://pebble-transit-api.scharf.workers.dev/departures?lat=52.52&lon=13.405"
const res = await fetch(
"https://pebble-transit-api.scharf.workers.dev/departures?lat=52.52&lon=13.405"
);
const data = await res.json();
console.log(data.region); // "Berlin/Brandenburg"
console.log(data.departures); // [{ line: "U2", direction: "Pankow", time: "3 min", ... }] import requests
resp = requests.get(
"https://pebble-transit-api.scharf.workers.dev/departures",
params={"lat": 52.52, "lon": 13.405}
)
data = resp.json()
print(data["region"]) # "Berlin/Brandenburg"
print(data["departures"]) # [{"line": "U2", "direction": "Pankow", "time": "3 min", ...}]