Hello,
I'd like to propose adding two new experimental fields to the GTFS Realtime specification to enable real-time reporting of bicycle rack and storage availability on transit vehicles.
Pull Request:
https://github.com/google/transit/pull/611Issue:
https://github.com/google/transit/issues/610### The Problem
Transit passengers traveling with bicycles currently have no way to know whether a bike rack or storage area will be available on an approaching vehicle. Typical transit buses have only 2-3 external bike rack positions. When full, cyclists are denied boarding -- they must wait for the next vehicle or complete their trip by other means.
The Santa Clara Valley Transportation Authority (VTA) recently completed a USDOT SMART Grant pilot (FAIN: 69A3552341049) that quantified this problem and tested sensor-based solutions. Their August 2025 implementation report confirmed that real-time bike rack availability data is valued by riders and useful for service planning, and that no transit agency in North America currently provides this information through standard data feeds.
### Proposed Fields
Four new uint32 fields, added to two existing messages:
VehiclePosition (for buses and single-unit vehicles):
- cyclist_positions_available (field 12) -- positions currently open
- total_cyclist_positions (field 13) -- total capacity
CarriageDetails (for trains and multi-car vehicles):
- cyclist_positions_available (field 6) -- positions currently open on this carriage
- total_cyclist_positions (field 7) -- total capacity on this carriage
### Working Implementation
Producer: Sportworks Global LLC -- Velolink (
https://www.sportworks.com/velolink) -- a commercially available bike rack monitoring system using magnetic reed switch sensors in Sportworks Apex racks. Public GTFS-RT feed:
https://cascadia-metro-gtfs-rt.sportworks.com/gtfs-rt/vehicle-positionsThe feed has been validated against protoc, Python gtfs-realtime-bindings, and Node.js gtfs-realtime-bindings -- all tests pass. Full validation results are in the pull request.
Consumer: [TO BE CONFIRMED]
### Design Notes
- Follows existing GTFS-RT patterns (experimental status, absence semantics, vehicle-level + carriage-level)
- Uses exact integer counts rather than qualitative enums -- appropriate for low-count, discrete positions
- Privacy: No PII transmitted; vehicle-level anonymous counts only
- Naming: "cyclist positions" is human-centric and mode-agnostic (covers exterior racks, interior storage, hooks)
The full proposal, including motivation, design decisions, privacy considerations, and proto changes, is in the pull request linked above.
I look forward to the community's feedback.
Best regards,
Oliver Sturrock