skills$openclaw/swiss-transport
xenofex73.0k

by xenofex7

swiss-transport – OpenClaw Skill

swiss-transport is an OpenClaw Skills integration for coding workflows. 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".

3.0k stars9.6k forksSecurity L1
Updated Feb 7, 2026Created Feb 7, 2026coding

Skill Snapshot

nameswiss-transport
descriptionSwiss 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". OpenClaw Skills integration.
ownerxenofex7
repositoryxenofex7/swiss-transport
languageMarkdown
licenseMIT
topics
securityL1
installopenclaw add @xenofex7/swiss-transport
last updatedFeb 7, 2026

Maintainer

xenofex7

xenofex7

Maintains swiss-transport in the OpenClaw Skills directory.

View GitHub profile
File Explorer
4 files
.
scripts
journey.py
4.4 KB
_meta.json
291 B
SKILL.md
3.1 KB
SKILL.md

name: swiss-transport description: 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". homepage: https://transport.opendata.ch

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
README.md

No README available.

Permissions & Security

Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.

Requirements

  • OpenClaw CLI installed and configured.
  • Language: Markdown
  • License: MIT
  • Topics:

FAQ

How do I install swiss-transport?

Run openclaw add @xenofex7/swiss-transport in your terminal. This installs swiss-transport into your OpenClaw Skills catalog.

Does this skill run locally or in the cloud?

OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.

Where can I verify the source code?

The source repository is available at https://github.com/openclaw/skills/tree/main/skills/xenofex7/swiss-transport. Review commits and README documentation before installing.