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 — no separate request.
4.8 · 42 reviewsThe 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"
}
}Field names match the OpenAPI spec exactly. Only position and title are always present — 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"). |
| 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. |
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 | Community |
| 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.