Place Details

Stay organized with collections Save and categorize content based on your preferences.
Select platform: Android iOS JavaScript Web Service

The Places SDK for Android provides your app with rich information about places, including the place's name and address, the geographical location specified as latitude/longitude coordinates, the type of place (such as night club, pet store, museum), and more. To access this information for a specific place, you can use the place ID, a stable identifier that uniquely identifies a place.

Place details

The Place object provides information about a specific place. You can get hold of a Place object in the following ways:

When you request a place, you must specify which types of place data to return. To do this, pass a List<Place.Field>, specifying the data types to return. This is an important consideration, since this will affect the cost for each request. Because place data results cannot be empty, only place results with data are returned (for example, if a requested place has no photos, the photos field will not be present in the result). You can specify one or more of the following fields:

  • Place.Field.ADDRESS
  • Place.Field.ID
  • Place.Field.LAT_LNG
  • Place.Field.NAME
  • Place.Field.OPENING_HOURS
  • Place.Field.PHONE_NUMBER
  • Place.Field.PLUS_CODE
  • Place.Field.PRICE_LEVEL
  • Place.Field.RATING
  • Place.Field.TYPES
  • Place.Field.ICON_URL
  • Place.Field.VIEWPORT
  • Place.Field.UTC_OFFSET
  • Place.Field.WEBSITE_URI

Learn more about place fields. For more information about how Place data requests are billed, see Usage and Billing.

Use the following methods to retrieve data from a Place:

  • getAddress() – The place's address, in human-readable format.
  • getAddressComponents() – A List of address components for this place. These components are provided for the purpose of extracting structured information about a place's address, for example finding the city in which a place is located. Do not use these components for address formatting; instead, call getAddress(), which provides a localized formatted address.
  • getBusinessStatus() – The operational status of the place, if it is a business. It can contain one of the following values: OPERATIONAL, CLOSED_TEMPORARILY, CLOSED PERMANENTLY.
  • getAttributions() – The attributions that must be shown to the user, if data from the place is used.
  • getID() – The textual identifier for the place. Read more about place IDs in the rest of this page.
  • getLatLng() – The geographical location of the place, specified as latitude and longitude coordinates.
  • getName() – The place's name.
  • getOpeningHours() – The OpeningHours of the place. Call OpeningHours.getWeekdayText() to a return a list of strings that represent opening and closing hours for each day of the week. Call OpeningHours.getPeriods() to return a list of period objects with more detailed information that is equivalent to the data provided by getWeekdayText(). Note: If a place is always open, the time period is represented as Sunday at midnight, and the closeEvent is null.
  • getPhoneNumber() – The place's phone number.
  • getPhotoMetadatas() – The metadata associated with a photo associated with the place, including the bitmap image.
  • getPlusCode() – The PlusCode location of this Place.
  • getPriceLevel() – The price level for this place, returned as an integer with values ranging from 0 (cheapest) to 4 (most expensive).
  • getRating() – An aggregated rating of the place, returned as a float with values ranging from 1.0 to 5.0, based on aggregated user reviews.
  • getTypes() – A list of place types that characterize this place. For a list of available place types, see the documentation for the Place interface.
  • getUserRatingsTotal() – The total number of user ratings of this Place.
  • getIconUrl() – The URL for a black icon mask representing the place type.
  • getIconBackgroundColor – The icon background color for the place type.
  • getUtcOffsetMinutes() – The UTC offset, in minutes.
  • getViewport() – A viewport, returned as a LatLngBounds object, useful for displaying the place on a map. May return null if the size of the place is not known.
  • getWebsiteUri() – The URI of the place's website, if known. This is the website maintained by the business or other entity associated with the place. Returns null if no website is known.
  • isOpen() – A boolean indicating whether the place is currently open. If no time is specified, the default is now. isOpen will only be returned if both Place.Field.UTC_OFFSET and Place.Field.OPENING_HOURS are available. To ensure accurate results, request the Place.Field.BUSINESS_STATUS and Place.Field.UTC_OFFSET fields in your original place request. If not requested, it is assumed that the business is operational. See this video for how to use isOpen with Place Details.

Some simple examples:


final CharSequence name = place.getName();
final CharSequence address = place.getAddress();
final LatLng location = place.getLatLng();



val name =
val address = place.address
val location = place.latLng


Get a place by ID

A place ID is a textual identifier that uniquely identifies a place. In the Places SDK for Android, you can retrieve the ID of a place by calling Place.getId(). The Place Autocomplete service also returns a place ID for each place that matches the supplied search query and filter. You can store the place ID and use it to retrieve the Place object again later.

To get a place by ID, call PlacesClient.fetchPlace(), passing a FetchPlaceRequest.

The API returns a FetchPlaceResponse in a Task. The FetchPlaceResponse contains a Place object matching the supplied place ID.

The following code example shows calling fetchPlace() to get details for the specified place.


// Define a Place ID.
final String placeId = "INSERT_PLACE_ID_HERE";

// Specify the fields to return.
final List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.NAME);

// Construct a request object, passing the place ID and fields array.
final FetchPlaceRequest request = FetchPlaceRequest.newInstance(placeId, placeFields);

placesClient.fetchPlace(request).addOnSuccessListener((response) -> {
    Place place = response.getPlace();
    Log.i(TAG, "Place found: " + place.getName());
}).addOnFailureListener((exception) -> {
    if (exception instanceof ApiException) {
        final ApiException apiException = (ApiException) exception;
        Log.e(TAG, "Place not found: " + exception.getMessage());
        final int statusCode = apiException.getStatusCode();
        // TODO: Handle error with given status code.



// Define a Place ID.
val placeId = "INSERT_PLACE_ID_HERE"

// Specify the fields to return.
val placeFields = listOf(Place.Field.ID, Place.Field.NAME)

// Construct a request object, passing the place ID and fields array.
val request = FetchPlaceRequest.newInstance(placeId, placeFields)

    .addOnSuccessListener { response: FetchPlaceResponse ->
        val place =
        Log.i(PlaceDetailsActivity.TAG, "Place found: ${}")
    }.addOnFailureListener { exception: Exception ->
        if (exception is ApiException) {
            Log.e(TAG, "Place not found: ${exception.message}")
            val statusCode = exception.statusCode
            TODO("Handle error with given status code")


Display attributions in your app

When your app displays place information, the app must also display attributions. See the documentation on attributions.

More about place IDs

The place ID used in the Places SDK for Android is the same identifier as used in the Places API. Each place ID can refer to only one place, but a single place can have more than one place ID. There are other circumstances which may cause a place to get a new place ID. For example, this may happen if a business moves to a new location.

When you request a place by specifying a place ID, you can be confident that you will always receive the same place in the response (if the place still exists). Note, however, that the response may contain a place ID that is different from the one in your request.

For more information, see the place ID overview.