Provide vehicle occupancy data with GTFS

You can provide vehicle occupancy data to indicate how crowded a vehicle is. This data appears in Google Maps on Android and iOS.

Displayed on the map:

Displayed in the trip details:

Displayed on Departure Boards:

Add vehicle occupancy to your realtime GTFS feed

Realtime vehicle crowdedness data is provided by OccupancyStatus, which is a part of the VehiclePositions feed in GTFS-Realtime.

Value Comment
EMPTY

The vehicle is considered empty by most measures. It has few or no passengers onboard, but is still accepting passengers.

Crowdedness indicator in Google Maps shows 1 out of 4:

MANY_SEATS_AVAILABLE

The vehicle has a large percentage of seats available. The producer determines the percentage of available seats, out of the total seats available, considered large enough to fall into this category.

Crowdedness indicator in Google Maps shows 1 out of 4:

FEW_SEATS_AVAILABLE

The vehicle has a small percentage of seats available. The producer determines the percentage of available seats, out of the total seats available, considered small enough to fall into this category.

Crowdedness indicator in Google Maps shows 2 out of 4:

STANDING_ROOM_ONLY

The vehicle can currently accommodate only standing passengers.

Crowdedness indicator in Google Maps shows 3 out of 4:

CRUSHED_STANDING_ROOM_ONLY

The vehicle can currently accommodate only standing passengers and has limited space for them.

Crowdedness indicator in Google Maps shows 4 out of 4:

FULL

The vehicle is considered full by most measures, but may still allow passengers to board.

Crowdedness indicator in Google Maps shows  4 out of 4:

NOT_ACCEPTING_PASSENGERS

The vehicle can’t accept passengers.

Crowdedness indicator in Google Maps shows 4 out of 4:


Example code:

id: "1"
vehicle {
  trip {
    trip_id: "VJ5ae9472f770fd89f40b504333e2eed8674debbd0"
    start_time: "06:53:00"
    start_date: "20200822"
    schedule_relationship: SCHEDULED
    route_id: "11726"
  }
  position {
    latitude: -33.926384
    longitude: 150.85732
  }
  current_stop_sequence: 11
  current_status: IN_TRANSIT_TO
  timestamp: 1598043954
  congestion_level: RUNNING_SMOOTHLY
  vehicle {
    id: "10291_111218_2434_853_1"
  }
  occupancy_status: MANY_SEATS_AVAILABLE
}

Guidelines for vehicle occupancy

  • You can provide just a subset of possible values in OccupancyStatus. For example: If only 3 buckets of low, medium, and high are distinguishable in the data, only use MANY_EMPTY_SEATS, FEW_EMPTY_SEATS, and STANDING_ROOM_ONLY.
  • If you can't provide the vehicle position with a VehiclePositions feed but provide an arrival time with a TripUpdates feed, then you can still provide occupancy data with VehiclePositions. If you plan to use the VehiclePositions feed to only provide occupancy data, then reach out to the support team to set up a VehiclePositions feed.

You can work with us to set up your feeds in the Partner Dashboard so that we have the correct feed to calculate trip estimates.

Was this helpful?
How can we improve it?

Need more help?

Try these next steps:

Is there something we can help you with?

Chat with a member of Transit team

Search
Clear search
Close search
Google apps
Main menu
Search Help Center
false
false
true
82656
false
false