Google Places API

Search APIs

Google Places results for any neighborhood. Set udm=1 and pin the search to a city, a neighborhood, or exact coordinates to get the local businesses Google ranks there, flagged as local results in the same JSON.

POST/v1/keywords200 OK
Request
curl -X POST https://api.accuserp.com/v1/keywords \
  -H "Authorization: Bearer $ACCUSERP_API_TOKEN" \
  --data-urlencode "geo=Shoreditch, London, United Kingdom" \
  --data-urlencode "udm=1" \
  --data-urlencode "keyword=coffee shop"
ResultGET /v1/results?id=…
{
  "ads": {},
  "maps": true,
  "serp": {
    "1": {
      "url": "https://www.example.com/shoreditch-coffee",
      "local": true,
      "title": "Example Coffee Shoreditch",
      "video": false,
      "base_url": "www.example.com",
      "features": {
        "https": true,
        "reviews": true,
        "maps_local": true
      },
      "base_domain": "example.com",
      "description": "Specialty coffee bar and roastery. 4.7 ★ (1,284 reviews) · 12 Example Street, London E1"
    },
    "2": {
      "url": "https://www.example.org/roastery-bar",
      "local": true,
      "title": "Example Roastery & Bar",
      "video": false,
      "base_url": "www.example.org",
      "features": {
        "https": true,
        "reviews": true,
        "maps_local": true
      },
      "base_domain": "example.org",
      "description": "4.5 ★ (612 reviews) · 3 Sample Lane, London E2 · Open until 18:00"
    }
  },
  "video": false,
  "engine": "google",
  "mobile": false,
  "keyword": "coffee shop",
  "ad_count": 0,
  "shopping": {},
  "rank_date": "2026-10-03",
  "serp_count": 10,
  "requested_at": "2026-10-03T09:41:07Z",
  "set_location": "Shoreditch, London, United Kingdom",
  "auto_corrected": false,
  "shopping_count": 0,
  "related_searches": [
    "coffee shop shoreditch open now"
  ],
  "auto_corrected_to": "",
  "related_searches_rank": 11,
  "total_number_of_results": 2140
}

What you can do with it

Why it matters

Rankings where they happen

Local results change street by street. Pin the search with geo, a latitude and longitude pair, or a UULE string, not a data-centre IP.

Local results, flagged

Each local result carries local: true and the maps_local feature flag, so you can separate the pack from organic results in one pass.

The same request shape

Google Local is a parameter on POST /v1/keywords, not a separate integration. Everything else, from callbacks to credits, works the same way.

What comes back

Response

Every result is the same JSON document: metadata about the search, then organic results, ads, and shopping keyed by position. Fetch it with GET /v1/results, or let the callback tell you when it is ready.

serp
Organic results keyed by rank position (1-indexed): url, title, description, base_domain and the SERP feature flags detected on the result.
ads
Ads keyed by position, with ad_location (top, within organic or bottom), headline, display and destination URLs.
shopping
Shopping carousel results keyed by position, same structure as ads.
related_questions
People Also Ask questions, and related_questions_rank for where the block sits on the page.
related_searches
Related search suggestions, and related_searches_rank.
total_number_of_results
The result count Google reports for the keyword.
auto_corrected, auto_corrected_to
Whether Google changed the keyword, and what it searched for instead.
maps, video, serp_count, ad_count, shopping_count
Flags and counts describing the page as a whole.
set_location, locale, rank_date, requested_at
The location and locale that were used, and when the search ran (UTC).

Parameters

Request

Send these as form fields or query parameters to POST /v1/keywords. The full reference is in the docs.

ParameterTypeDescription
keywordrequiredstringThe keyword to search for, UTF-8 encoded.
udmstringGoogle Unified Data Model parameter. udm=1 returns Google Places results. Cannot be combined with tbm.
localestringSearch locale from GET /v1/engines, e.g. en-us. Sets Google's country domain, language and TLD. Defaults to en-us.
geostringFree-form location, e.g. “Shoreditch, London, United Kingdom”. Cannot be combined with latitude/longitude or uule.
latitude, longitudenumberPin the search to coordinates for sub-city precision. Both are required together.
uulestringA Google UULE-encoded location string, if you already have one.
mobilebooleanSearch as a mobile device. Defaults to false.
callbackstringHTTPS URL that receives a POST when the result is ready. Recommended over polling.
prioritybooleanUse the priority queue, dispatched ahead of standard requests. +50% per page.

Frequently asked questions

How precise is the location?

The location is as precise as you need. Pass a free-form geo string for a city or neighborhood, or latitude and longitude for sub-city precision. Only one location strategy can be used per request.

Is this the local pack from a normal search?

A normal Google Search request already flags local pack entries with maps_local. udm=1 asks Google for the Places view, which returns the full list of local businesses.

Same key, same request shape

More engines

Google Search

The parsed Google results page, keyed by position.

locale=en-us
Coming soon

Google News

News results for any topic, locale, and time.

in development
Coming soon

Google Images

Image results for any keyword and locale.

in development
Coming soon

Google Ads

The ads Google serves on a keyword, with placement and destination.

in development
Coming soon

Google AI Overview

The results page as a browser sees it, AI Overview expanded.

in development
Coming soon

Google AI Mode

Google's conversational AI Mode, captured as a rendered page.

in development
Coming soon

ChatGPT

What ChatGPT answers, with the sources it cites.

in development
Coming soon

Copilot

What Copilot answers, with the sources it cites.

in development
Coming soon

Gemini

What Gemini answers, with the sources it cites.

in development

Make AccuSERP your data provider

Get your API token, queue a keyword, and have parsed Google results in your callback within minutes.