swiss-transport
Swiss Public Transport real-time information. Use when querying train, bus, tram, or boat schedules in Switzerland. Supports station search, departure boards, journey planning from A to B, and connection details. Use for queries like "When does the next train leave from Zürich?" or "How do I get from Bern to Geneva?" or "Show departures at Basel SBB".
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Swiss Public Transport
Query Swiss public transport (SBB, BLS, ZVV, etc.) using the official transport.opendata.ch API.
Quick Commands
Search stations
curl -s "https://transport.opendata.ch/v1/locations?query=Zürich" | jq -r '.stations[] | "\(.name) (\(.id))"'
Get next departures
curl -s "https://transport.opendata.ch/v1/stationboard?station=Zürich%20HB&limit=10" | \
jq -r '.stationboard[] | "\(.stop.departure[11:16]) \(.category) \(.number) → \(.to)"'
Plan journey from A to B
curl -s "https://transport.opendata.ch/v1/connections?from=Zürich&to=Bern&limit=3" | \
jq -r '.connections[] | "Departure: \(.from.departure[11:16]) | Arrival: \(.to.arrival[11:16]) | Duration: \(.duration[3:]) | Changes: \(.transfers)"'
Get connection details with sections
curl -s "https://transport.opendata.ch/v1/connections?from=Zürich%20HB&to=Bern&limit=1" | \
jq '.connections[0].sections[] | {from: .departure.station.name, to: .arrival.station.name, departure: .departure.departure, arrival: .arrival.arrival, transport: .journey.category, line: .journey.number}'
API Endpoints
/v1/locations - Search stations
curl "https://transport.opendata.ch/v1/locations?query=<station-name>"
Parameters:
-
query(required): Station name to search -
type(optional): Filter by type (station, address, poi)
/v1/stationboard - Departure board
curl "https://transport.opendata.ch/v1/stationboard?station=<station>&limit=<number>"
Parameters:
-
station(required): Station name or ID -
limit(optional): Number of results (default 40) -
transportations[](optional): Filter by type (ice_tgv_rj, ec_ic, ir, re_d, ship, s_sn_r, bus, cableway, arz_ext, tramway_underground) -
datetime(optional): Date/time in ISO format
/v1/connections - Journey planner
curl "https://transport.opendata.ch/v1/connections?from=<start>&to=<destination>&limit=<number>"
Parameters:
-
from(required): Starting station -
to(required): Destination station -
via[](optional): Intermediate station(s) -
date(optional): Date (YYYY-MM-DD) -
time(optional): Time (HH:MM) -
isArrivalTime(optional): 0 (departure, default) or 1 (arrival) -
limit(optional): Number of connections (max 16)
Helper Script
Use scripts/journey.py for formatted journey planning:
python3 scripts/journey.py "Zürich HB" "Bern"
python3 scripts/journey.py "Basel" "Lugano" --limit 5
Notes
- All times are in Swiss local time (CET/CEST)
- Station names support autocomplete (e.g., "Zürich" finds "Zürich HB")
- API returns JSON by default
- No API key required
- Real-time data includes delays and platform changes
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-01-30
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!