TransportationDocumentedScanned
bvg-route
Route planning for Berlin public transport (BVG) using the v6.bvg.transport.rest API.
Share:
Installation
npx clawhub@latest install bvg-routeView the full skill documentation and source below.
Documentation
BVG Route Planner Skill
Purpose
- Provide concise, actionable public-transport directions in Berlin using the v6.bvg.transport.rest API.
When to use
- User asks for directions between two places in Berlin (addresses, stop names, or coordinates).
- User asks for next departures from a stop/station.
- User requests to arrive by a specific time (arrive-by) or depart at a specific time.
Core behavior
from and to into either stop IDs (preferred) or address/POI objects using GET /locations or /locations/nearby.Outputs
- Human-readable routes with departure times, transfers, walking distances, estimated arrival, and concise step list.
- Machine-friendly JSON (optional) containing journey id, refreshToken, legs, and stop IDs for programmatic refreshes.
References
- The skill expects to use the v6.bvg.transport.rest API (). See references/API.md for summary and examples.
Examples (triggers)
- "How do I get from Invalidenstraße 43 10115 to Leibnizstraße 62 by public transport?"
- "When is the next U-Bahn from U Rosenthaler Platz?"
- "Find journeys that arrive at Deutsche Oper by 17:50 tonight, fastest option first."
Notes for implementers
- IBNR format (CRITICAL): The
/journeysendpoint requires base IBNR codes only (6 digits), not the full ID with::suffixes.
de:11000:900110001::3 or de:11000:900110001- ✅ Correct:
900110001 (extract base 6-digit code from /stops results)- Process: Call
/stops?query=... first, extract the 6-digit id from results, use that for /journeys.- URL encoding (CRITICAL): All query string parameters must be properly URL-encoded using
urllib.parse.quote()or equivalent. Examples:
%20-
ö → %C3%B6-
ü → %C3%BC-
Ä → %C3%84- Special chars like
&, ?, # → their percent-encoded equivalents- Example:
Schönhauser Allee → Sch%C3%B6nhauser%20Allee- Every API call with address/stop name strings in query params must encode before building the URL.
- Prefer stop/station IDs when calling /journeys (more reliable than fuzzy names): Use
/stops?query=...to resolve names → base IBNR. - Use
stopovers=trueto build readable step lists; includeentrances=truewhen walking-to-entrance accuracy is important. - Request
results=3then offer the top 2–3 to the user. - Handle timezone-aware ISO datetimes; default to Europe/Berlin if none provided.