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.
Occupancy data on trip search results Occupancy data on the transit layer Carriage occupancy on trip search results Sources of occupancy dataThis table lists each callout number in the screenshots and explains where the crowdedness data comes from.
Number | Source of crowdness |
1 | Station crowdedness |
2 | Internal predictions Google makes based on historical crowdedness, user feedback, and more |
3 | entity.vehicle.occupancy_status |
4 | occupancy_status for message CarriageDetails |
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
, andSTANDING_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.