Use cases / Google Maps API
Local SEO competitor audit
Last updated September 28, 2026. Response excerpts are recorded from the live API.
Who
Who runs this, and what for
| Team | What they decide with it |
|---|---|
| Local SEO agencies | What to fix first for a client: categories, reviews, or coverage of the searches that matter. |
| Multi-location businesses | Which locations underperform their local competitors, and on what. |
| Franchise and brand teams | How each location compares with independents in its area. |
Pipeline
The calls, step by step
01Search what customers search
Run the searches customers type, each as its own call. position is the order in the Maps list; drop sponsored results before you compare positions.
GET /v1/search?engine=google_maps&q=plumbers+in+Denver&country=us · results.0
{ "position": 1, "title": "Applewood Plumbing Heating & Electric", "place_id": "ChIJkWUJx22Ha4cRVVLq4AJk7Ng", "data_id": "0x876b876dc7096591:0xd8ec6402e0ea5255", "cid": "15630978370222314069", "latitude": 39.7583004, "longitude": -105.0512657, "rating": 4.8, "reviews_count": 17793, "category": "Plumber", "price": null, "address": "5000 W 29th Ave", "open_state": "Open · Closes 10 PM", "phone": "(303) 444-1633", "website": "https://www.applewoodfixit.com/", "description": null, "wheelchair_accessible": null, "action_links": [ { "label": "Book online", "url": "https://book.servicetitan.com/lhxa271djh03w5bfje81s0qd" } ], "thumbnail": null, "sponsored": false, "url": "https://www.google.com/maps/place/?q=place_id:ChIJkWUJx22Ha4cRVVLq4AJk7Ng" }Recorded response. Live values differ. 02Compare the businesses above you
Rating, reviews_count, and category explain much of the order. A competitor with ten times the reviews, or a more specific category, will usually rank above you.
GET /v1/search?engine=google_maps&q=plumbers+in+Denver&country=us · results.1
{ "position": 2, "title": "Brothers Plumbing, Heating & Electric", "place_id": "ChIJszGcvzV0bIcR3_6j5Gru8sM", "data_id": "0x876c7435bf9c31b3:0xc3f2ee6ae4a3fedf", "cid": "14119609924629823199", "latitude": 39.8096461, "longitude": -104.9881312, "rating": 4.7, "reviews_count": 9173, "category": "Plumber", "price": null, "address": "6201 Broadway", "open_state": "Open · Closes 8 PM", "phone": "(720) 994-7132", "website": "http://www.brothersplumbing.com/", "description": null, "wheelchair_accessible": true, "action_links": [ { "label": "Book online", "url": "https://book.servicetitan.com/xlcp8o3v3fnyrpk2sh94bcux" } ], "thumbnail": null, "sponsored": false, "url": "https://www.google.com/maps/place/?q=place_id:ChIJszGcvzV0bIcR3_6j5Gru8sM" }Recorded response. Live values differ. 03Read what reviews mention
Place returns review_topics, the phrases Google extracts from reviews with how often each is mentioned, plus the rating histogram and the week's hours. Topics a competitor is praised for are services to name in your own profile.
GET /v1/place?engine=google_maps&place_id=ChIJszGcvzV0bIcR3_6j5Gru8sM · place.review_topics
[ { "topic": "furnace repair", "mentions": 315 }, { "topic": "knowledgeable staff", "mentions": 2454 }, { "topic": "water heater replacement", "mentions": 166 } ]Recorded response. Live values differ.
Code
A script to start from
local_audit.py
# Local competitor audit: how a business compares with the others Google
# Maps shows for the searches its customers make.
import os, requests
API = "https://api.clair.im"
HEADERS = {"Authorization": f"Bearer {os.environ['CLAIR_API_KEY']}"}
MY_PLACE_ID = "ChIJszGcvzV0bIcR3_6j5Gru8sM"
SEARCHES = ["plumber denver", "water heater repair denver", "emergency plumber denver"]
def get(path, **params):
r = requests.get(f"{API}{path}", headers=HEADERS, timeout=120,
params={"engine": "google_maps", **params})
r.raise_for_status()
return r.json()
for q in SEARCHES:
results = [p for p in get("/v1/search", q=q)["results"] if not p["sponsored"]]
mine = next((p for p in results if p["place_id"] == MY_PLACE_ID), None)
print(f"\n{q}: position {mine['position'] if mine else 'not listed'} of {len(results)}")
for p in results[:5]:
print(f" #{p['position']} {p['title']}: {p['rating']} stars, {p['reviews_count']} reviews")
# What customers mention most, for you and the top competitor of the last search.
for place_id in [MY_PLACE_ID, results[0]["place_id"]]:
place = get("/v1/place", place_id=place_id)["place"]
topics = ", ".join(f"{t['topic']} ({t['mentions']})" for t in place["review_topics"])
print(f"\n{place['title']} [{place['view']} view]: {topics}")
Set CLAIR_API_KEY to a key subscribed to the Google Maps API. Each call is one request against that API's monthly quota.
Cost
What it costs per month
| Schedule | Requests | Plan | Per month | Per 1,000 |
|---|---|---|---|---|
| 1 location, 10 searches, monthly10 searches plus 5 place details = 15 requests. | 15 | Pay as you go | $0.30 | $20 |
| 25 locations, 10 searches each, weekly250 searches × 4 weeks = 1,000, plus one place per location per week = 100. | 1,100 | Pay as you go | $22.11 | $20.10 |
| Agency: 40 clients, 20 searches, weekly800 searches × 4 weeks = 3,200, plus 5 places per client per week = 800. | 4,000 | Pro | $54.36 | $13.59 |
Limits
What to plan for
- Maps positions depend on where the searcher is. Clair searches from the country you pass, and centres the map on latitude and longitude when you send them; a phone in a different neighbourhood can see a different order.
- Google does not publish how it ranks local results. Rating, review count, category, and distance explain much of it, not all.
- Place details can come back in Google's limited view, without review topics or the histogram. place.view says which view you got.
FAQ
Common questions
Is the Maps list the same as the local pack in Google Search?
Closely related, not identical. The local pack in web search shows the top three; the Maps list goes deeper. Google Search results include the local pack when Google shows one.
How do I check rankings from a specific point?
Pass latitude and longitude with a zoom level. Running the same search from a grid of points shows how the order changes across an area.
Can I get all of a competitor's reviews?
No. Place returns the reviews Google shows first, plus the histogram and topics that summarise all of them.
Run it on your own products
200 requests a month free on each API, no card. Enough to run the pipeline on a short list before choosing a plan.
Bloomberg News API
Associated Press API
Glassdoor API
Greenhouse Jobs API

Crunchbase API
Website Contacts API