**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).

Whether you're building navigation, delivery, or basic map markers, the
Geocoding API provides two distinct method families tailored for
different geospatial needs:

- **Hyperlocal Destination Search
  ([`SearchDestinations`](https://developers.google.com/maps/documentation/geocoding/search-for-destinations.md.txt))** : Designed for **arrival, navigation, delivery, rideshare, and campus
  exploration** . It resolves an address, Place ID, or coordinate pair into a comprehensive [`Destination`](https://developers.google.com/maps/documentation/geocoding/reference/rest/v4/geocode.destinations/searchDestinations.md.txt#destination) object containing building entrances, routable navigation points, building and grounds outlines (GeoJSON polygons), containing-place hierarchies, sub-destinations (such as suites, terminals, or apartment buildings), and relational landmarks.
- **Core Geocoding ([`GeocodeAddress`](https://developers.google.com/maps/documentation/geocoding/geocoding.md.txt),
  [`GeocodeLocation`](https://developers.google.com/maps/documentation/geocoding/reverse-geocoding.md.txt),
  [`GeocodePlace`](https://developers.google.com/maps/documentation/geocoding/places-geocoding.md.txt))** : Designed for **address-to-coordinate conversion and reverse coordinate
  lookup** . Each method returns a [`GeocodeResult`](https://developers.google.com/maps/documentation/geocoding/reference/rest/v4/GeocodeResult.md.txt) containing a single representative point location (`LatLng`), viewport bounds, formatted postal address components, and place type tags.

If you aren't sure which method to use, this guide helps you choose the right
method for your application's architecture.

*** ** * ** ***

## Use-case routing table

Select your primary use case in this table to see the recommended method:

| If your application needs to... | Recommended method | Why choose this method |
|---|---|---|
| Route drivers, couriers, or rideshare vehicles to accurate pickup, drop-off, or parking access points | [**Search for destinations**](https://developers.google.com/maps/documentation/geocoding/search-for-destinations.md.txt) (`POST /v4/geocode/destinations`) | Returns `navigationPoints` with travel modes, usage tags (`PICKUP`, `DROPOFF`, `PARKING`), and [navigation point tokens](https://developers.google.com/maps/documentation/geocoding/navigation-point-tokens.md.txt) for precise turn-by-turn routing. |
| Identify physical building doors or gates for pedestrian arrival or last-mile delivery | [**Search for destinations**](https://developers.google.com/maps/documentation/geocoding/search-for-destinations.md.txt) (`POST /v4/geocode/destinations`) | Returns physical `entrances` with exact coordinates and `PREFERRED` tags, rather than a rooftop centroid. |
| Render 2D building footprints or property/campus boundaries on a map | [**Search for destinations**](https://developers.google.com/maps/documentation/geocoding/search-for-destinations.md.txt) (`POST /v4/geocode/destinations`) | Returns GeoJSON polygons (`displayPolygon`) for both buildings (`structureType: BUILDING`) and grounds (`structureType: GROUNDS`). |
| Disambiguate large complexes (airports, shopping malls, university campuses, multi-building apartment complexes) | [**Search for destinations**](https://developers.google.com/maps/documentation/geocoding/search-for-destinations.md.txt) (`POST /v4/geocode/destinations`) | Returns hierarchical `containingPlaces` and `subDestinations` so users can select a specific terminal, store, or building unit. |
| Provide human-friendly arrival instructions or nearby spatial context ("Across from Central Park") | [**Search for destinations**](https://developers.google.com/maps/documentation/geocoding/search-for-destinations.md.txt) (`POST /v4/geocode/destinations`) | Returns nearby `landmarks` with relational descriptions, straight-line distances, and travel distances, plus experimental [AI-powered arrival summaries](https://developers.google.com/maps/documentation/geocoding/ai-powered-summaries.md.txt). |
| Convert a street address into a single latitude/longitude coordinate pair to center a map or place a basic marker | [**Geocode an address**](https://developers.google.com/maps/documentation/geocoding/geocoding.md.txt) (`GET /v4/geocode/address`) | Lightweight `GET` request returning a single `location` point and viewport bounds. |
| Normalize or parse structured address components at high batch volume without arrival geometry | [**Geocode an address**](https://developers.google.com/maps/documentation/geocoding/geocoding.md.txt) (`GET /v4/geocode/address`) | Returns structured `postalAddress` and `addressComponents` for postal/administrative areas as well as street addresses. |
| Look up a display address or administrative area (city, postal code, state) from GPS coordinates | [**Reverse geocode a location**](https://developers.google.com/maps/documentation/geocoding/reverse-geocoding.md.txt) (`GET /v4/geocode/location`) | Translates raw latitude/longitude coordinates into ranked human-readable addresses across all granularity levels. |
| Retrieve the formatted address and coordinate point for a known Google Maps Place ID | [**Geocode a place**](https://developers.google.com/maps/documentation/geocoding/places-geocoding.md.txt) (`GET /v4/geocode/places/{placeId}`) | Direct lookup when you already have a Place ID (for example, from Place Autocomplete) and only need its address and centroid coordinates. |

*** ** * ** ***

## Capability comparison matrix

The following table compares the data attributes and technical behavior of `SearchDestinations` against the core geocoding methods:

| Feature / Capability | Search for destinations (`SearchDestinations`) | Core Geocoding (`GeocodeAddress` / `Location` / `Place`) |
|---|---|---|
| **Primary purpose** | Hyperlocal destination attributes, navigation routing, and complex place structure | Coordinate conversion, map centering, and address formatting |
| **HTTP method** | `POST` (JSON request body) | `GET` (URL path and query parameters) |
| **Response field mask** | **Required** (must specify `X-Goog-FieldMask` header or `$fields` parameter) | Optional (returns all fields in `GeocodeResult` by default; field mask recommended for latency) |
| **Accepted inputs** | Address string, Place ID, or Lat/Lng coordinates (using `addressQuery`, `place`, or `locationQuery`) | Address string (`GeocodeAddress`), Lat/Lng (`GeocodeLocation`), or Place ID (`GeocodePlace`) |
| **Point coordinates \& spatial extent** | Point coordinates in `primary.location`; spatial extent as a GeoJSON polygon in `primary.displayPolygon` (no rectangular `viewport` field) | Point coordinates in `location`; rectangular bounding boxes in `viewport` and `bounds` |
| **Formatted address \& components** | Yes (in `primary.formattedAddress`, `postalAddress`, and `addressComponents`) | Yes (in `formattedAddress`, `postalAddress`, and `addressComponents`) |
| **Building \& grounds polygons** | **Yes** (GeoJSON polygon in `displayPolygon` for buildings and grounds) | No |
| **Building entrances** | **Yes** (`entrances[]` with coordinates, `tags` like `PREFERRED`, and associated `place` ID; display names are returned on `navigationPoints[]` and `primary`) | No |
| **Navigation points** | **Yes** (`navigationPoints[]` with routable tokens, travel modes, and pickup/dropoff usage) | No |
| **Sub-destinations \& hierarchy** | **Yes** (`containingPlaces[]` and `subDestinations[]` for malls, campuses, and units) | No |
| **Nearby landmarks \& distances** | **Yes** (`landmarks[]` with relational descriptions and straight-line/travel distances) | No |
| **Parking information** *(Experimental, `v4alpha`)* | **Yes** ([`parkingOptions`](https://developers.google.com/maps/documentation/geocoding/parking-options.md.txt) with parking types like street or garage, and associated `parkingFacilities[]`) | No |
| **Street View imagery \& annotations** *(Experimental, `v4alpha`)* | **Yes** ([`streetViewThumbnail`](https://developers.google.com/maps/documentation/geocoding/imagery-annotations.md.txt) and annotations on entrances and navigation points for the Street View Static API) | No |
| **Localities \& political areas** | Unsupported (input must represent a navigable destination such as a building, business, or park) | **Supported** (resolves cities, states, postal codes, and countries) |

*** ** * ** ***

## Side-by-side response comparison

To see the difference in returned data, compare these responses for the same address (`1600 Amphitheatre Pkwy, Mountain View, CA`):

### Search for destinations (`SearchDestinations`)

A `POST` request to `https://geocode.googleapis.com/v4/geocode/destinations` with a field mask returns rich spatial and arrival context:

```json
{
  "destinations": [
    {
      "primary": {
        "place": "places/ChIJj61dQgK6j4AR4GeTYWZsKWw",
        "placeId": "ChIJj61dQgK6j4AR4GeTYWZsKWw",
        "displayName": { "text": "Googleplex", "languageCode": "en" },
        "formattedAddress": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
        "location": { "latitude": 37.4220656, "longitude": -122.0840897 },
        "structureType": "BUILDING",
        "displayPolygon": {
          "type": "Polygon",
          "coordinates": [
            [
              [-122.084958, 37.422145],
              [-122.084112, 37.422610],
              [-122.083510, 37.421980],
              [-122.084958, 37.422145]
            ]
          ]
        }
      },
      "entrances": [
        {
          "location": { "latitude": 37.422189, "longitude": -122.084215 },
          "tags": ["PREFERRED"],
          "place": "places/ChIJj61dQgK6j4AR4GeTYWZsKWw"
        }
      ],
      "navigationPoints": [
        {
          "navigationPointToken": "Eg...",
          "displayName": { "text": "Amphitheatre Pkwy Dropoff", "languageCode": "en" },
          "location": { "latitude": 37.421912, "longitude": -122.084301 },
          "travelModes": ["DRIVE"],
          "usages": ["DROPOFF", "PICKUP"]
        }
      ],
      "containingPlaces": [
        {
          "place": "places/ChIJ...",
          "displayName": { "text": "Google Charleston Campus", "languageCode": "en" },
          "structureType": "GROUNDS"
        }
      ],
      "landmarks": [
        {
          "place": {
            "displayName": { "text": "Charleston Park", "languageCode": "en" }
          },
          "relationalDescription": { "text": "Adjacent to Charleston Park", "languageCode": "en" },
          "straightLineDistanceMeters": 85.4
        }
      ]
    }
  ]
}
```

### Core geocoding (`GeocodeAddress`)

A `GET` request to `https://geocode.googleapis.com/v4/geocode/address/1600+Amphitheatre+Parkway,+Mountain+View,+CA` returns the address components and a single rooftop point:

```json
{
  "results": [
    {
      "place": "//places.googleapis.com/places/ChIJj61dQgK6j4AR4GeTYWZsKWw",
      "placeId": "ChIJj61dQgK6j4AR4GeTYWZsKWw",
      "location": {
        "latitude": 37.4220656,
        "longitude": -122.0840897
      },
      "granularity": "ROOFTOP",
      "viewport": {
        "low": { "latitude": 37.4207166, "longitude": -122.0854386 },
        "high": { "latitude": 37.4234145, "longitude": -122.0827407 }
      },
      "formattedAddress": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
      "types": ["premise", "street_address"]
    }
  ]
}
```

*** ** * ** ***

## Important technical considerations

- **Field mask requirement** : When calling `SearchDestinations`, you **must** include a field mask (using the `X-Goog-FieldMask` header or `$fields` query parameter). Request only the fields your application consumes (for example, `destinations.primary.location,destinations.entrances,destinations.navigationPoints`) to optimize response latency. See [Choose fields to return](https://developers.google.com/maps/documentation/geocoding/choose-fields.md.txt).
- **Supported geographic entities** : `SearchDestinations` is designed for physical destinations where a user or vehicle can arrive (buildings, businesses, homes, parks, campuses). If your input query is a broad political or administrative region (such as `"California"`, `"94043"`, or `"Chicago, IL"`), use [`GeocodeAddress`](https://developers.google.com/maps/documentation/geocoding/geocoding.md.txt) instead.

## Next steps

- Explore [Search for destinations](https://developers.google.com/maps/documentation/geocoding/search-for-destinations.md.txt) to learn how to query by address, Place ID, or coordinates.
- Learn how to pass [navigation point tokens](https://developers.google.com/maps/documentation/geocoding/navigation-point-tokens.md.txt) to the Navigation SDK or Routes API.
- Try the [Get started quickstart](https://developers.google.com/maps/documentation/geocoding/start-v4.md.txt) for interactive `curl` examples.