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): Designed for arrival, navigation, delivery, rideshare, and campus exploration. It resolves an address, Place ID, or coordinate pair into a comprehensiveDestinationobject 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,GeocodeLocation,GeocodePlace): Designed for address-to-coordinate conversion and reverse coordinate lookup. Each method returns aGeocodeResultcontaining 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 ( POST /v4/geocode/destinations) |
Returns navigationPoints with travel modes, usage tags (PICKUP, DROPOFF, PARKING), and navigation point tokens for precise turn-by-turn routing. |
| Identify physical building doors or gates for pedestrian arrival or last-mile delivery | Search for destinations ( 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 ( 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 ( 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 ( POST /v4/geocode/destinations) |
Returns nearby landmarks with relational descriptions, straight-line distances, and travel distances, plus experimental AI-powered arrival summaries. |
| Convert a street address into a single latitude/longitude coordinate pair to center a map or place a basic marker | Geocode an address ( 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 ( 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 ( 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 ( 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 with parking types like street or garage, and associated parkingFacilities[]) |
No |
| Street View imagery & annotations (Experimental, v4alpha) |
Yes (streetViewThumbnail 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:
{ "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:
{ "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 theX-Goog-FieldMaskheader or$fieldsquery 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. - Supported geographic entities:
SearchDestinationsis 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"), useGeocodeAddressinstead.
Next steps
- Explore Search for destinations to learn how to query by address, Place ID, or coordinates.
- Learn how to pass navigation point tokens to the Navigation SDK or Routes API.
- Try the Get started quickstart for interactive
curlexamples.