**European Economic Area (EEA) developers**

> [!NOTE]
> If your billing address is in the European Economic Area, effective on 8 July 2025, the [Google Maps Platform EEA Terms of Service](https://cloud.google.com/terms/maps-platform/eea) will apply to your use of the Services. Functionality varies by region. [Learn more](https://developers.google.com/maps/comms/eea/faq.md.txt).

> [!NOTE]
> **Building for navigation, delivery, rideshare, or physical arrival?**
>
> This page documents core coordinate and address lookup. If your application needs hyperlocal arrival data, such as **building entrances** , **routable navigation point tokens** , **2D building outlines (polygons)** , **sub-destinations** , or **nearby landmarks** , use [**Search for destinations**](https://developers.google.com/maps/documentation/geocoding/search-for-destinations.md.txt) (`SearchDestinations`) instead. To compare capabilities, see [Choose a geocoding method](https://developers.google.com/maps/documentation/geocoding/choose-a-method.md.txt).

Place geocoding lets you retrieve an address from a [place
ID](https://developers.google.com/maps/documentation/places/web-service/place-id).

Place IDs uniquely identify a place in the Google Places database and on Google
Maps. Retrieve place IDs when you [Geocode
an
address](https://developers.google.com/maps/documentation/geocoding). You can also retrieve a place ID from many other APIs, such as
[Place Details (New)](https://developers.google.com/maps/documentation/places/web-service/place-details.md.txt),
[Text Search (New)](https://developers.google.com/maps/documentation/places/web-service/text-search.md.txt),
and [Nearby
Search
(New)](https://developers.google.com/maps/documentation/places/web-service/nearby-search).

## Place geocoding requests

A [place
geocoding](https://developers.google.com/maps/documentation/geocoding/reference/rest/v4/geocode.places)
request is an HTTP GET request in the form:

```
https://geocode.googleapis.com/v4/geocode/places/PLACE_ID
```

Where <var translate="no">PLACE_ID</var> contains the place ID of the location of interest.

Pass all other parameters as URL parameters or, for parameters such as the API
key or field mask, in headers as part of the GET request. For example:

```html
https://geocode.googleapis.com/v4/geocode/places/ChIJj61dQgK6j4AR4GeTYWZsKWw?key=API_KEY
```

Or in a curl command:

```
curl -X GET -H 'Content-Type: application/json' \
-H "X-Goog-Api-Key: API_KEY" \
"https://geocode.googleapis.com/v4/geocode/places/ChIJj61dQgK6j4AR4GeTYWZsKWw"
```

### Use OAuth to make a request

Geocoding API v4 supports [OAuth
2.0](https://developers.google.com/maps/documentation/geocoding/oauth-token) for authentication. To use OAuth
with the Geocoding API, the OAuth token must be assigned the correct scope.
Geocoding API supports the following scopes for use with place geocoding:

- `https://www.googleapis.com/auth/maps-platform.geocode` --- Use with all Geocoding API methods.
- `https://www.googleapis.com/auth/maps-platform.geocode.place` --- Use only with `GeocodePlace` for place geocoding.

Also, you can use the general `https://www.googleapis.com/auth/cloud-platform`
scope for all Geocoding API methods. That scope is useful during development,
but not production, because it is a general scope that allows access to all
methods.

For more information and examples, see [Use
OAuth](https://developers.google.com/maps/documentation/geocoding/oauth-token).

## Place geocoding responses

Place geocoding returns a
[`GeocodeResult`](https://developers.google.com/maps/documentation/geocoding/reference/rest/v4/GeocodeResult.md.txt)
object that represents the place corresponding to the place ID.

The Geocoding API responses include `types` arrays in two main places within the
[`GeocodeResult`](https://developers.google.com/maps/documentation/geocoding/reference/rest/v4/GeocodeResult.md.txt):

1. **`GeocodeResult.types`** : This array indicates the overall type(s) of the result. The possible values are drawn from the Place types used by the Places API. For more information, see [Place types Tables A and B](https://developers.google.com/maps/documentation/places/web-service/place-types.md.txt).
2. **`GeocodeResult.addressComponents[].types`** : Each address component has a `types` array indicating the type of that specific part of the address. These values are drawn from the [Address types and address component](https://developers.google.com/maps/documentation/places/web-service/place-types.md.txt#address-types) types table used by the Places API.

The complete JSON object is in the form:

```json
{
  "place": "//places.googleapis.com/places/ChIJj61dQgK6j4AR4GeTYWZsKWw",
  "placeId": "ChIJj61dQgK6j4AR4GeTYWZsKWw",
  "location": {
    "latitude": 37.4220541,
    "longitude": -122.08532419999999
  },
  "granularity": "ROOFTOP",
  "viewport": {
    "low": {
      "latitude": 37.4209489697085,
      "longitude": -122.08846930000001
    },
    "high": {
      "latitude": 37.4236469302915,
      "longitude": -122.0829156
    }
  },
  "formattedAddress": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
  "postalAddress": {
    "regionCode": "US",
    "languageCode": "en",
    "postalCode": "94043",
    "administrativeArea": "CA",
    "locality": "Mountain View",
    "addressLines": [
      "1600 Amphitheatre Pkwy"
    ]
  },
  "addressComponents": [
    {
      "longText": "1600",
      "shortText": "1600",
      "types": [
        "street_number"
      ]
    },
    {
      "longText": "Amphitheatre Parkway",
      "shortText": "Amphitheatre Pkwy",
      "types": [
        "route"
      ],
      "languageCode": "en"
    },
    {
      "longText": "Mountain View",
      "shortText": "Mountain View",
      "types": [
        "locality",
        "political"
      ],
      "languageCode": "en"
    },
    {
      "longText": "Santa Clara County",
      "shortText": "Santa Clara County",
      "types": [
        "administrative_area_level_2",
        "political"
      ],
      "languageCode": "en"
    },
    {
      "longText": "California",
      "shortText": "CA",
      "types": [
        "administrative_area_level_1",
        "political"
      ],
      "languageCode": "en"
    },
    {
      "longText": "United States",
      "shortText": "US",
      "types": [
        "country",
        "political"
      ],
      "languageCode": "en"
    },
    {
      "longText": "94043",
      "shortText": "94043",
      "types": [
        "postal_code"
      ]
    }
  ],
  "types": [
    "establishment",
    "point_of_interest"
  ]
}
```

## Required parameters

- `place` --- The place ID of the place for which you want to obtain the human-readable address. The place ID is a unique identifier that can be used with other Google APIs. For example, you can use the `placeID` returned by the [Roads API](https://developers.google.com/maps/documentation/roads/snap.md.txt) to get the address for a snapped point. For more information about place IDs, see the [Place IDs](https://developers.google.com/maps/documentation/places/web-service/place-id.md.txt).

## Optional parameters

-

  ### languageCode

  The language in which to return results.
  - See the [list of supported languages](https://developers.google.com/maps/faq.md.txt#languagesupport). Google often updates the supported languages, so this list may not be exhaustive.
  - If `languageCode` isn't supplied, the API defaults to the local language and script of the location. If you specify an invalid language code, the API returns an `INVALID_ARGUMENT` error.
  - The API does its best to provide a street address that is readable for both the user and locals. To achieve that goal, it returns street addresses in the local language, transliterated to a script readable by the user if necessary, observing the preferred language. All other addresses are returned in the preferred language. Address components are all returned in the same language, which is chosen from the first component.
  - If a name is not available in the preferred language, the API uses the closest match.
  - The preferred language has a small influence on the set of results that the API chooses to return, and the order in which they are returned. The geocoder interprets abbreviations differently depending on language, such as the abbreviations for street types, or synonyms that may be valid in one language but not in another.
-

  ### regionCode

  The region code as a
  [two-character CLDR code](https://www.unicode.org/cldr/charts/latest/supplemental/territory_language_information.html) value. There is no default value. Most CLDR codes are identical to ISO 3166-1 codes.

  When geocoding an address, *forward geocoding* , this parameter can influence, but not
  fully restrict, results from the service to the specified region. When geocoding a location or a
  place, *reverse geocoding* or *place geocoding*, this parameter can be used to
  format the address. In all cases, this parameter can affect results based on applicable law.
-

  ### FieldMask

  Create a [response field mask](https://developers.google.com/maps/documentation/geocoding/choose-fields.md.txt) to specify the fields to return in the response. Pass the response field mask to the method by using the URL parameter
  `$fields` or `fields`, or by using the HTTP header
  `X-Goog-FieldMask`. For example, the below request will return only the `formattedAddress` field of the response.

  ```curl
  curl -X GET -H 'Content-Type: application/json' \
  -H 'X-Goog-FieldMask: formattedAddress' \
  -H "X-Goog-Api-Key: API_KEY" \
  "https://geocode.googleapis.com/v4/geocode/places/ChIJj61dQgK6j4AR4GeTYWZsKWw"
  ```
  The response is:

  ```json
  {
    "formattedAddress": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA"
  }
  ```

  See [Choose fields to return](https://developers.google.com/maps/documentation/geocoding/choose-fields.md.txt) for more details.

  > [!IMPORTANT]
  > **Important:** Field masking is a good design practice to ensure that you don't request unnecessary data, which helps to avoid unnecessary processing time.