Capture the map-backed 3-pack that ranks local businesses. Every visible place as structured JSON: position, rating, reviews, category, address, phone, and hours. Target any country or city, sample desktop and mobile separately, and get it in the same call as organic results. That is local rank tracking, city by city.
4.8 · 45 reviewsTrend position per city; compare rating and reviews with whoever outranks you. Field names match the OpenAPI spec exactly. Only position and title are always present, and everything else appears when Google renders it for that place.
| Field | Type | Description |
|---|---|---|
| position | number | Position within the pack (1-indexed). |
| title | string | Business name as displayed on the SERP. |
| placeId | string | Google entity id for the place (e.g. "/g/11bw4ws2mt"), a stable identifier you can match across repeated pulls even after a business changes rank or details. |
| rating | number | Average star rating (0–5). |
| reviews | string | Review count as displayed by Google (e.g. "26K"). Free-form string, not normalized to a number. |
| price | string | Price band as displayed by Google (e.g. "$10–20"). Currency symbol matches the locale. |
| type | string | Business category (e.g. "Pizza", "Plumber"). |
| yearsInBusiness | string | Years-in-business badge, when shown (typical on service-style packs). |
| address | string | Street address or locality as displayed on the SERP. |
| phone | string | Phone number, when shown (locale-formatted). |
| hours | string | Opening-hours text as displayed (e.g. "Open · Closes 11 PM", "Open 24 hours"). |
| description | string | Trailing snippet — a review quote or a service-options line. |
| links | object | Action links, when rendered — website and directions (absolute Google Maps URL). Service-style packs carry these; restaurant packs typically don't. |
| localResultsMoreLink | string | Top-level field: absolute URL of Google's expanded Local Finder, present when a “More places” control is rendered. |
Send a query with a city, get the pack parsed. The result.localResults array preserves pack order, and result.localResultsMoreLink points at Google's expanded Local Finder when a “More places” control is rendered.
from cloro import Cloro
client = Cloro(api_key="sk_live_your_api_key_here")
response = client.monitor.google(
query="best pizza in new york city",
location="New York,New York,United States",
device="desktop",
)
print(response["result"]["organicResults"]){
"success": true,
"result": {
"localResults": [
{
"position": 1,
"title": "Joe's Pizza Broadway",
"placeId": "/g/11bw4ws2mt",
"rating": 4.4,
"reviews": "26K",
"type": "Pizza",
"address": "1435 Broadway"
},
{
"position": 2,
"title": "John's of Bleecker Street",
"placeId": "/g/11b8zbnw8g",
"rating": 4.6,
"reviews": "8.4K",
"type": "Pizza",
"address": "278 Bleecker St"
}
],
"localResultsMoreLink": "https://www.google.com/search?q=best+pizza+in+new+york+city&udm=1"
}
}Pick a plan that fits your volume. Price per credit drops as you scale.
| Plan | Price / mo | Credits | Per 1k | Concurrency | Seats | Support |
|---|---|---|---|---|---|---|
| Free | $0 | 500 | — | 1 | 1 | Documentation assistant |
| Lite | $30 | 37,500 | $0.80 | 10 | Unlimited | |
| Hobby | $100 | 250,000 | $0.40 | 20 | Unlimited | |
| Starter | $250 | 650,000 | $0.39 | 50 | Unlimited | |
| GrowthPopular | $500 | 1,350,000 | $0.37 | 75 | Unlimited | Priority email |
| Business | $1,000 | 2,800,000 | $0.36 | 100 | Unlimited | Priority email |
| Enterprise 2K | $2,000 | 5,871,025 | $0.34 | 135 | Unlimited | Slack |
| Enterprise 3K | $3,000 | 9,306,606 | $0.32 | 175 | Unlimited | Slack |
| Enterprise 4K | $4,000 | 12,756,261 | $0.31 | 215 | Unlimited | Slack |
| Enterprise 5K | $5,000 | 16,391,783 | $0.31 | 255 | Unlimited | Slack |
| Enterprise | $5,000+ | Increased concurrency, overages on credits and credit discounts for annual contracts.Know more | ||||
Credit cost per request varies by provider. The figures below are for async/batch requests; sync requests add a +2 credit surcharge.
ChatGPT full response includes query fan-out, ads, and shopping data. Google News uses the same pricing as Google Search.
The pack exposes only its visible places — typically 3, which is why it's called the 3-pack. The full expanded list isn't embedded in the response; when Google renders a “More places” control, `result.localResultsMoreLink` gives the absolute URL of the expanded Local Finder, which you can follow or scrape separately.
Only `position` and `title` are always present. Every other field is included solely when Google renders it for that place, so availability varies by query. Restaurant and retail packs tend to carry `price` and a review snippet; service packs (plumbers, salons, dentists) tend to carry `yearsInBusiness`, `phone`, `hours`, and a `links` object with website and directions.
No. The local pack ships inside the standard Google SERP response alongside organic results and ads — one call, one credit price. When the query triggers a pack, `result.localResults` is populated automatically.
Yes — and for local-intent queries you should. Use `location` with Google's canonical location name (e.g. "New York,New York,United States") or a pre-encoded `uule` for city-level sampling. The pack re-ranks heavily by city and even by neighborhood, so country-level targeting misses most local-search reality. See our local rank tracking use case.
A base Google SERP request is 3 credits, and credits run from $0.40 per 1,000 on Hobby down to $0.31 at the largest self-serve tier — the local pack is included when present, no add-on flags. See pricing for the full credit table.