Provide vehicle occupancy data with GTFS

About sources of occupancy data

Across Google Maps, users can find several types of occupancy data, such as: 

  • Vehicle occupancy
  • Station occupancy
  • Carriage occupancy (experimental)

Occupancy data can come from different sources:

  • Vehicle occupancy prioritizes:
    • User's choice. User feedback is displayed as the highest priority.
    • Realtime GTFS data. This is submitted by the transit agency.
    • Google’s internal predictions. These are based on historical crowdedness, user feedback, and more.
  • Station occupancy comes from live visit data or estimation. Learn more about popular times, wait times, and visit duration.
  • Carriage occupancy comes from GTFS data, an experimental field called “occupancy_status” on message CarriageDetails.

Tip: If there's no data from any transit agency or user feedback, Google may provide some estimation.

About occupancy on Google Maps

The following screenshots show how we display the occupancy data from different sources on the Google Maps app.

Add vehicle occupancy to your realtime GTFS feed

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

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

Google Maps interpretation occupancy_status Value Comment
Not crowded
(lots of seats)
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 0:

Not crowded
(lots of seats)
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 0:

Not too crowded (some seats available) 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 1:

Crowded
(limited seating and standing)
STANDING_ROOM_ONLY

The vehicle can currently accommodate only standing passengers.

Crowdedness indicator in Google Maps shows 2:

Very crowded (limited standing) CRUSHED_STANDING_ROOM_ONLY

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

Crowdedness indicator in Google Maps shows 3:

Very crowded (limited standing) FULL

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

Crowdedness indicator in Google Maps shows 3:

At capacity
(not taking passengers)
NOT_ACCEPTING_PASSENGERS

The vehicle can’t accept passengers.

Crowdedness indicator in Google Maps shows none:

 

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 Transit partner dashboard so that we have the correct feed to calculate trip estimates.

Related resources

Need more help?

Try these next steps:

14717826226163417126
true
Search Help Center
true
true
true
true
true
82656
false
false
false
false
Search
Clear search
Close search
Main menu