Geocode with enhanced accuracy

European Economic Area (EEA) developers

The GeocodeAddress and SearchDestinations methods support an optional effort parameter that lets you control the trade-off between response latency and address resolution accuracy.

While standard geocoding handles well-formatted postal addresses in sub-second latency, real-world inputs are often incomplete, informal, or complex (for example, "Flat 4B, Sunrise Apartments, opposite Central Mall, Andheri West, Mumbai" or "where the warriors play, sf"). By configuring a higher effort level, you can instruct the Geocoding API to apply extended reasoning and disambiguation to resolve difficult addresses.

Effort levels

Specify one of the following values for the effort parameter:

Effort level Description Typical latency Recommended use cases
EFFORT_UNSPECIFIED Default value. Behaves the same as LOW effort. Sub-second Default standard geocoding.
LOW Optimizes for the fastest response times. Does not perform extended search or disambiguation for difficult addresses. Sub-second Real-time interactive lookup, high-volume standard address validation.
MEDIUM Balances speed and accuracy. Most requests return with standard low latency. For ambiguous or difficult addresses, the service applies additional processing to improve accuracy, which might take up to a few seconds. Sub-second for standard addresses; up to a few seconds (≤ 4 seconds) for ambiguous addresses Interactive user workflows (such as address confirmation at checkout) where users can tolerate a brief pause.
HIGH Maximizes address resolution accuracy for incomplete, informal, or complex addresses. Response times might be significantly longer. Up to 20 seconds for complex addresses Background processing, batch geocoding, logistics dispatch, or asynchronous post-checkout address refinement.

Request examples

Search for destinations (SearchDestinations)

Include the effort field in the JSON request body of your POST request to https://geocode.googleapis.com/v4alpha/geocode/destinations. The effort parameter primarily affects addressQuery resolution:

curl -X POST -d '{
  "addressQuery": {
    "addressQuery": "Flat 4B, Sunrise Apartments, opposite Central Mall, Andheri West, Mumbai"
  },
  "effort": "HIGH"
}' \
-H 'Content-Type: application/json' \
-H "X-Goog-Api-Key: API_KEY" \
-H "X-Goog-FieldMask: *" \
https://geocode.googleapis.com/v4alpha/geocode/destinations

Geocode an address (GeocodeAddress)

Pass the effort parameter as a URL query parameter in your GET request to the /v4alpha/ endpoint:

curl -X GET -H 'Content-Type: application/json' \
-H "X-Goog-Api-Key: API_KEY" \
"https://geocode.googleapis.com/v4alpha/geocode/address/where+the+warriors+play,+sf?effort=MEDIUM"

Mitigating latency impact

When using MEDIUM or HIGH effort in your application, sending a single-pass request is the simplest integration, but requests in these modes can incur higher latency, which can delay synchronous, user-facing, and latency-sensitive workflows.

To mitigate this latency impact on interactive user flows (such as checkout or booking), you can use a multi-pass workflow:

  1. Pass 1 (Interactive): Send a synchronous request with effort=LOW (or default) to validate the address immediately with sub-second latency.
  2. Pass 2 (Background): Send an asynchronous follow-up request with effort=MEDIUM or effort=HIGH (for example, post-checkout or before dispatch) to resolve complex addresses into high-precision coordinates, entrances, and navigation points without blocking the user.

Usage limits

During the Experimental (v4alpha) launch stage, requests with effort set to MEDIUM or HIGH are subject to stricter rate limits than standard (LOW) requests. If your application exceeds these rate limits, the API returns a RESOURCE_EXHAUSTED (HTTP 429) error. If you encounter HTTP 429 errors or require higher quota for your use case, contact us through the feedback channel.

Feedback

This is an experimental feature of the Geocoding API. We would appreciate feedback at geocoding-feedback-channel@google.com.