cloro

Google Local Pack API

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 reviewsG2.com software review platform logo
Used daily by these awesome companies
1,000,000,000 monthly API calls

Every local-pack field, documented

Trend 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.

FieldTypeDescription
positionnumberPosition within the pack (1-indexed).
titlestringBusiness name as displayed on the SERP.
placeIdstringGoogle 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.
ratingnumberAverage star rating (0–5).
reviewsstringReview count as displayed by Google (e.g. "26K"). Free-form string, not normalized to a number.
pricestringPrice band as displayed by Google (e.g. "$10–20"). Currency symbol matches the locale.
typestringBusiness category (e.g. "Pizza", "Plumber").
yearsInBusinessstringYears-in-business badge, when shown (typical on service-style packs).
addressstringStreet address or locality as displayed on the SERP.
phonestringPhone number, when shown (locale-formatted).
hoursstringOpening-hours text as displayed (e.g. "Open · Closes 11 PM", "Open 24 hours").
descriptionstringTrailing snippet — a review quote or a service-options line.
linksobjectAction links, when rendered — website and directions (absolute Google Maps URL). Service-style packs carry these; restaurant packs typically don't.
localResultsMoreLinkstringTop-level field: absolute URL of Google's expanded Local Finder, present when a “More places” control is rendered.

The local 3-pack in one request

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.

Request example

python
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"])

Response example

200 OKapplication/json
{
  "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"
  }
}

Pricing that scales with you

Pick a plan that fits your volume. Price per credit drops as you scale.

Free
$0.00
per 1,000 credits
  • $0/mo
  • 500 credits
  • 1 concurrent job
  • 1 seat
  • Documentation assistant
Lite
$0.80
per 1,000 credits
  • $30/mo
  • 37,500 credits
  • 10 concurrent jobs
  • Unlimited seats
  • Email support
Hobby
$0.40
per 1,000 credits
  • $100/mo
  • 250,000 credits
  • 20 concurrent jobs
  • Unlimited seats
  • Email support
Starter
$0.39
per 1,000 credits
  • $250/mo
  • 650,000 credits
  • 50 concurrent jobs
  • Unlimited seats
  • Email support
Scale
$500+/mo
More credits
  • Volume discounts
  • More concurrency
  • Unlimited seats
  • Faster support
Compare all 11 tiers
PlanPrice / moCreditsPer 1kConcurrencySeatsSupport
Free$050011Documentation assistant
Lite$3037,500$0.8010UnlimitedEmail
Hobby$100250,000$0.4020UnlimitedEmail
Starter$250650,000$0.3950UnlimitedEmail
GrowthPopular$5001,350,000$0.3775UnlimitedPriority email
Business$1,0002,800,000$0.36100UnlimitedPriority email
Enterprise 2K$2,0005,871,025$0.34135UnlimitedSlack
Enterprise 3K$3,0009,306,606$0.32175UnlimitedSlack
Enterprise 4K$4,00012,756,261$0.31215UnlimitedSlack
Enterprise 5K$5,00016,391,783$0.31255UnlimitedSlack
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) 7 credits
ChatGPT (web search) 5 credits
Perplexity 3 credits
Grok 4 credits
Copilot 5 credits
AI Mode 4 credits
AI Overview (incl. SERP) 5 credits
Gemini 4 credits
Google Search 3 credits +2/page
Google News 3 credits +2/page

ChatGPT full response includes query fan-out, ads, and shopping data. Google News uses the same pricing as Google Search.

Estimate your monthly cost and plan

7 credits each
5 credits each
3 credits each
4 credits each
5 credits each
4 credits each
4 credits each
3 credits / 1 page
3 credits / 1 page
Monthly requests
0
Credits needed
0
Recommended plan:

Google local pack scraping, answered

How many places does the local pack return?

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.

Why are fields like phone and hours sometimes missing?

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.

Do I need a separate call to get the local pack?

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.

Can I get the local pack for a specific city?

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.

What does a local pack call cost?

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.

Start scraping the local 3-pack today

Real rendered SERPs, structured JSON, pay only for what you scrape.