About
OpenPublicTransport shows real-time public transport departures and trip planning for stops across many transit providers. Each configured stop becomes a device with sensors for punctuality, a binary sensor for delays, a schedule calendar, a disruptions event entity and a departure board camera. Departures can be limited by transport type, line, destination or platform, and favorite lines can be listed first. A walking time setting hides departures that can no longer be reached, and a target arrival time finds the latest connection that still arrives on time. Most providers work without an API key, though some require one, and data comes from the vendor's cloud. It is set up in the UI, and repair notices appear for rate limit or API errors.
Automatic summary of the README and code of NerdySoftPaw/openpublictransport. Something wrong, or are you the maintainer and want your own text here? Get in touch
Supports
Uses the vendor's cloud Needs an internet connection and an account with the vendor.
Sign in with the vendor Connects through the vendor's own sign-in page.
From the Marketplace Installed through the Marketplace, formerly HACS.
Actively maintained Its author released or pushed a change in the last six months.
Provides
- Cameras
- Sensors
- Calendars
Setting it up
Install it from the Marketplace and restart Home Assistant, then add it under Settings, Devices and services.
Select Public Transport Provider
- Provider
- Type
Enter API Key
- Trafiklab API KeyTrafiklab API key (available at trafiklab.se)
- NTA Primary API KeyNTA Primary API key (required, available at developer.nationaltransport.ie)
- NTA Secondary API Key (optional)NTA Secondary API key (optional, used as fallback)
- RMV API KeyRMV API key (request at opendata.rmv.de)
- VBN API KeyVBN API key — works for both OTP and TRIAS. Free for non-commercial use, request by e-mail at api@vbn.de
- GTI username (application ID)Username from your Geofox GTI credentials (geofox-auth-user)
- GTI passwordPassword from your Geofox GTI credentials. Used to sign each request; it is never transmitted
- API keyPersonal API key from the provider (free registration, see the note above)
- Second API keyOnly for providers with two keys (e.g. CTA: Train Tracker key)
Search Stop/Station
- Stop, City
Also asked when at the trip search step.
Select Stop
- Stop
Also asked when at the trip select step.
Configure Custom OTP2 Instance
- OTP2 Server URLBase URL including router path, e.g. http://192.168.1.10:8080/otp/routers/default
- API Key (optional)Optional API key if your instance requires authentication
Settings
- Number of departuresHow many departures should be displayed? (1-20)
- Transport typesWhich transport types should be displayed?
- Update interval (seconds)How often should data be updated? (10-3600 seconds)
- Show provider logoShow the provider logo instead of the transport type icon
- Delay threshold (minutes)Minimum delay in minutes to trigger the delay sensor (1-30)
- Line filterOnly show specific lines, comma-separated (e.g. U79, RE5, Bus 42). Empty = all lines
- Destination filterShow only departures whose destination matches, comma-separated, partial match (e.g. Duisburg, Airport). Empty = all destinations
- Platform filterShow only departures from specific platforms/tracks, comma-separated (e.g. 3, 4 or Gleis 3). Empty = all platforms
- Walking time (minutes)Walking time to stop in minutes (0 = disabled). Departures that can no longer be reached are hidden
- Favorite linesComma-separated lines to show first (e.g. U79, RE5). Empty = no favorites
After setup
- Number of departures
- Transport types
- Update interval (seconds)
- Show provider logoShow the provider logo instead of the transport type icon
- Delay threshold (minutes)Minimum delay in minutes to trigger the delay sensor (1-30)
- Line filterOnly show specific lines, comma-separated (e.g. U79, RE5, Bus 42). Empty = all lines
- Destination filterShow only departures whose destination matches, comma-separated, partial match (e.g. Duisburg, Airport). Empty = all destinations
- Platform filterShow only departures from specific platforms/tracks, comma-separated (e.g. 3, 4 or Gleis 3). Empty = all platforms
- Walking time (minutes)Walking time to stop in minutes (0 = disabled). Departures that can no longer be reached are hidden
- Favorite linesComma-separated lines to show first (e.g. U79, RE5). Empty = no favorites
- Target arrival time (HH:MM, optional)Instead of the next connection from now, find the latest connection that still arrives by this time (e.g. 07:45, 15 minutes before school starts). Empty = connection from now
- Entity for dynamic arrival time (optional)input_datetime or sensor whose value is read fresh on every update (e.g. for a timetable that changes daily). Takes priority over the fixed target arrival time
- Minutes to arrive before the entity's timeSubtracted from the time of the entity selected above, e.g. 15 minutes before class starts. Only relevant when an entity is selected
Texts from the code of NerdySoftPaw/openpublictransport.
Entities
- Binary sensorsDelays
- CalendarsSchedule
- CamerasBoard
- EventsDisruptions
- SensorsPunctuality
Troubleshooting
- DiagnosticsDownloads a diagnostics file to attach to a bug report.
- Repair noticesNotices it can show in Settings, Repairs:API Rate Limit Reached, API Error, openpublictransport.net community server shut down
From the README
Real-time public transport departures for Home Assistant — 59 providers across Germany, Austria, Switzerland, the Netherlands, Luxembourg, Norway, Sweden, Ireland, the USA, and worldwide.
The openpublictransport community server has been shut down (v2026.10.0). We had to give up our own API at api.openpublictransport.net for cost reasons. Entries using the openpublictransport provider are removed on update — all other providers are unaffected. From now on, our focus is on connecting more transit networks (Verkehrsverbünde) directly. Read the full announcement: Community Server Shutdown & Our New Focus — and request your network!
- Real-time departures with delay tracking, platform changes, and disruption notices
- 35 transit providers — most require no API key
- Trip planner — A-to-B routes with transfer risk assessment (EFA and OTP2 providers, see the table above)
- 8 entity types: sensor, binary sensor, calendar, event, camera, trip sensor, statistics, multi-stop
- 4 actions — refresh_departures, plan_trip, check_delays, announce_departure (TTS)
- Reconfigure without re-setup — change your station anytime via ⚙️ → Reconfigure
- Walking time — hides departures you can't reach on foot
- Fuzzy stop search — handles typos and umlaut variations
- Line & destination filtering & favorites — show only the lines or directions you use
- Departure board camera — classic yellow-on-black station display
- 7 languages — DE, EN, FR, NL, PL, IT, SV
Shows in Vulpo
Camera card, Calendar card, Chart card, Apple Watch.Information
- Installs
- 265 sharing analytics
- GitHub stars
- 27
- Connection
- Uses the vendor's cloud
- Upkeep
- Updated in the last 6 months
- Version
- v2026.10.5,
- Category
- Security and safety, Cameras
- Kind
- Marketplace integration
- Needs
- Needs the Marketplace (HACS on 2026.10 and older)
- Domain
openpublictransport- Issues
- Report an issue











