Google Local API | Local Pack & Business Search SERPs avatar

Google Local API | Local Pack & Business Search SERPs

Pricing

from $0.01 / 1,000 results

Go to Apify Store
Google Local API | Local Pack & Business Search SERPs

Google Local API | Local Pack & Business Search SERPs

Search Google Local results - the local pack inside Google Search SERPs. Extract businesses with rating, reviews, phone, hours, place_id, GPS coordinates. Country, language, and device targeting. Pay per page. MCP-ready for AI agents.

Pricing

from $0.01 / 1,000 results

Rating

5.0

(4)

Developer

John

John

Maintained by Community

Actor stats

9

Bookmarked

36

Total users

20

Monthly active users

a day ago

Last modified

Share

Google Local API | Local Pack & Business Search SERPs (MCP-ready)

Search Google Local results - the local pack inside Google Search SERPs - and get clean JSON back. Local businesses with rating, reviews, phone, hours, place_id, GPS coordinates, ads, and related place suggestions. Pay per page. MCP-ready for Claude, ChatGPT, Cursor, and other AI agents.

Pass a search query (and optionally a city) to the Google Local API and it returns the same structured data Google shows in the local pack on its Search results page: titles, ratings, review counts, addresses, phone numbers, opening hours, business categories, price tiers, place IDs, GPS coordinates, action links (directions, website, order, phone, reservations), and the related-place suggestions Google surfaces under the main results. Country, language, Google domain, and device controls are all exposed.

This is the only Apify Actor focused on the Google Local Search SERP (the local pack inside a normal Google Search), as opposed to scraping Google Maps directly. The result is 100% reliability (no browsers, no captchas), the exact data layout Google ships to users on the web, and per-page pricing that is predictable regardless of how many businesses appear.


Use with Claude, ChatGPT, Cursor & other AI agents (MCP)

This Actor is a first-class tool on the Apify MCP Server. Any MCP-compatible AI agent - Claude (Desktop, Web, Code), ChatGPT (via custom GPT or MCP bridge), Cursor, VS Code, Cline, Windsurf, Kilo Code, Opencode, Glama - can discover and call this Actor in natural language.

What an AI agent does with this:

User: "Find me the highest-rated dentists in Brooklyn that take walk-ins."

Agent calls search-actors("google local") on the Apify MCP server, picks this Actor, calls it with {"q": "dentists walk-ins", "location": "Brooklyn, New York, United States", "max_pages": 2}, gets the local pack businesses back, ranks them by rating and review count, and returns a short list to the user with phone numbers.

Quick setup - Claude Desktop

Add this to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/actors-mcp-server"],
"env": {
"APIFY_TOKEN": "YOUR_APIFY_API_TOKEN"
}
}
}
}

Restart Claude Desktop. Then ask Claude something like "Find vegan restaurants in Austin with at least 4.5 stars and 200+ reviews." Claude will discover this Actor, ask permission to call it, and return structured results.

Quick setup - Cursor / VS Code / Cline / Windsurf

These editors support dynamic tool discovery, so after the first call this Actor is registered as a named tool for the rest of the session, and subsequent prompts skip the discovery step entirely.

Point your MCP client at:

https://mcp.apify.com

…with header Authorization: Bearer YOUR_APIFY_API_TOKEN. Full setup: Apify MCP integration docs.

Quick setup - ChatGPT (and other static MCP clients)

ChatGPT, Gemini CLI, and Amazon Q connect through the same https://mcp.apify.com endpoint and call this Actor via the generic call-actor tool. Same result, just no session-level tool registration.

Use cases for AI agents

  • Local lead-gen agents - "Pull every plumber in {city} with under 50 reviews so I can pitch SEO services."
  • Local SEO copilots - "Where does {brand} rank in the local pack for 'best coffee' across these 25 cities?"
  • Reservation / booking assistants - "Find me three Italian places near Union Square with a 4.5+ rating and a phone link."
  • Competitor monitoring agents - "Watch the top-3 local pack results for 'pediatric dentist Brooklyn' weekly."
  • Market research agents - "How many CrossFit gyms are in each of these 100 zips, and what is the median rating?"

What this Actor does

A Google Local search wrapper that takes a query and returns the local pack businesses Google would show on the Search results page, plus the local ads and the related-place suggestions Google adds beneath them. Localize by country, language, Google domain, and device. Set max_pages to walk through more results. Each page is one billable event.

Whether you are powering an AI agent through MCP, building a local-business directory, running local SEO rank tracking, or generating outreach lists, this Actor produces the structured local pack data you need.

SEO benefit: Local pack data lets agencies and in-house teams measure visibility for geo-targeted keywords, benchmark competitors, and prioritize Google Business Profile optimization.


What data you get

FieldDescription
Business detailsTitle, type/category, description, price tier ($, $$, $$$, $$$$)
Ratings & reviewsAverage star rating, total review count, raw review text label
ContactAddress, phone number, opening hours, "Open 24 hours" labels
Identifiersplace_id (Google CID), provider_id, lsig signature, place-search URL
Geogps_coordinates (latitude + longitude) for every listing
Action linksDirections, website, order, schedule, phone (when available)
MediaThumbnail image, large thumbnail
Service optionsDine-in, takeout, delivery, in-store shopping, curbside pickup, no-contact delivery, etc.
AdsPaid local placements (Google Local Ads) with the same business fields plus an ad title
Related places"Discover more places" suggestions Google appends under the main results
Paginationpagination.current (page index). Use the max_pages input to fetch more pages.
MetadataPages processed, total results estimate, pagination status

Key features

Comprehensive coverage - Every public local pack field Google returns: rating, reviews, phone, hours, GPS, place_id, service options, ad placements, related places.

Country, language, and Google domain controls - gl (200+ country codes), hl (200+ languages), google_domain (regional google.* domains). Localize the search exactly the way a real user in that market would see it.

Device emulation - device switches between desktop (about 20 results per page) and mobile (about 10 results per page) layouts.

Smart pagination - Set max_pages to fetch as many pages as you need, or 0 for unlimited (bounded by a 20-page safety cap). The Actor walks pages automatically; you do not need to manage offsets.

Transparent pay-per-page pricing - $0.02 setup + $0.02 per page. No subscriptions, no result-count surprises, no per-business markup.

Production-grade reliability - API-backed instead of browser-based, so no captchas, no proxies, no rate-limit gymnastics. Schema-validated output. Structured error records for invalid input.

Pre-flight budget check - Before any work is done, the Actor compares the projected cost against your remaining spending limit and exits cleanly with an InsufficientFunds error record if there is not enough headroom.

MCP-ready - First-class tool on the Apify MCP Server for Claude, ChatGPT, Cursor, and any other MCP-compatible agent.


Usage examples

{
"q": "coffee",
"location": "Austin, Texas, United States",
"max_pages": 1
}

Example 2: Local SEO rank tracking

{
"q": "best pizza",
"location": "Brooklyn, New York, United States",
"gl": "us",
"hl": "en",
"max_pages": 3
}

Example 3: International market

{
"q": "boulangerie",
"location": "Paris, France",
"google_domain": "google.fr",
"gl": "fr",
"hl": "fr",
"max_pages": 2
}

Example 4: Mobile layout

{
"q": "gym near me",
"location": "San Francisco, California, United States",
"device": "mobile",
"max_pages": 2
}

Example 5: Specific place by Google CID

{
"q": "the standard hotel",
"ludocid": "14414772292044717666",
"max_pages": 1
}

Example output

Each dataset item is one page of Google Local results. Excerpt:

{
"page_number": 1,
"search_timestamp": "2026-05-12T10:30:00.123456",
"search_parameters": {
"q": "coffee",
"location": "Austin, Texas, United States",
"gl": "us",
"hl": "en",
"device": "desktop",
"max_pages": 1
},
"search_metadata": {
"pages_processed": 1,
"max_pages_set": 1,
"pagination_limit_reached": false,
"total_results_estimate": null
},
"local_results": [
{
"position": 1,
"title": "Houndstooth Coffee",
"rating": 4.6,
"reviews_original": "(1.2K)",
"reviews": 1200,
"price": "$$",
"type": "Coffee shop",
"address": "401 Congress Ave Suite 100C, Austin, TX",
"hours": "Open until 7 PM",
"place_id": "1234567890123456789",
"gps_coordinates": {"latitude": 30.2672, "longitude": -97.7431},
"service_options": {"dine_in": true, "takeout": true, "delivery": false},
"links": {
"directions": "https://www.google.com/maps/dir/?...",
"website": "https://houndstoothcoffee.com",
"order": "https://order.example.com/houndstooth"
},
"thumbnail": "https://lh3.googleusercontent.com/...",
"thumbnail_large": "https://lh3.googleusercontent.com/...",
"place_id_search": "https://www.google.com/maps?cid=1234567890123456789"
}
],
"ads_results": [],
"local_map": {"image": "https://..."},
"discover_more_places": [
{"title": "Best coffee", "places": "Mozart's, Cafe Medici, Houndstooth..."}
],
"pagination": {"current": 1}
}

Input parameters

ParameterTypeRequiredDefaultNotes
qstringyescoffeeSearch query
locationstringnoAustin, Texas, United StatesCity-level location; cannot combine with uule
uulestringno-Google-encoded location for precise targeting
google_domainstringnogoogle.comRegional Google domain
glstringnous2-letter country code
hlstringnoen2-letter language code
ludocidstringno-Google CID for a specific place
tbsstringno-Advanced filter string
deviceenumnodesktopdesktop, tablet, or mobile
max_pagesintegerno10 = unlimited (safety cap 20)

Pricing

This Actor uses Apify's pay-per-event model:

EventCostWhen charged
setup$0.02Once per run
page_processed$0.02Per page of results

Worked example: a 10-page run costs $0.02 (setup) + 10 x $0.02 (pages) = $0.22. A single-page run costs $0.04. Failed validation (missing q, conflicting location + uule) writes a structured error record to the dataset and exits without charging anything beyond setup.

You always know your maximum cost up front: setup + (max_pages x page_processed).


How to get started

  1. Click Try for free at the top of this Actor's Apify Store page.
  2. Set a q (search query) and, if you want geo-targeted results, a location.
  3. Run the Actor. Each page is pushed as its own dataset item; you can export to JSON, CSV, or Excel.
  4. (Optional) Wire this Actor into Claude, ChatGPT, or Cursor through the Apify MCP Server - see the MCP section above.

For a Python quick-start and an MCP setup walkthrough, see the example repo on GitHub.


🔌 Integrations: Automate Local Pack Monitoring with the Google Local API

A single run answers one question: who ranks in the Austin coffee local pack today. The real value of the Google Local API comes from running it on a schedule, so local pack rankings, new competitors, and review counts land in your stack automatically. See the full list of Apify platform integrations.

Tasks and Schedules (the core recipe). Save one task per query and city you track, for example "plumber" in Phoenix, then attach a schedule from the Actor's Actions, then Schedule menu. Useful cron strings: 0 7 * * * (daily at 7 AM), 0 */6 * * * (every six hours), 0 9 * * 1 (Mondays). One schedule can trigger many tasks at once, so an agency can refresh every client keyword in a single nightly run. The Google local pack rank tracker for SEO agencies task is a ready-made starting point.

n8n. This API ships an n8n community node (see the n8n integration section below). A four-step monitor: Schedule Trigger, then the Google Local API node, then a Filter on rating or position, then Slack or email with the day's local pack.

Make and Zapier. The same pattern works no-code with Make and Zapier: trigger on a schedule, run the Actor, then route the results where you need them.

Store the history (Supabase). Send each run's businesses into a table so a local pack ranking history accumulates over time. No-code: the n8n Actor node, then a Supabase node. Or in Python, using the real Actor id johnvc/google-local-api and the output fields (each dataset item is one page with a local_results array; each business carries title, rating, reviews, place_id, and gps_coordinates):

from apify_client import ApifyClient
from supabase import create_client
apify = ApifyClient("YOUR_APIFY_TOKEN")
supabase = create_client("YOUR_SUPABASE_URL", "YOUR_SUPABASE_KEY")
run = apify.actor("johnvc/google-local-api").call(run_input={
"q": "plumber",
"location": "Phoenix, Arizona, United States",
"max_pages": 2,
})
rows = []
for page in apify.dataset(run["defaultDatasetId"]).iterate_items():
for biz in page.get("local_results", []):
rows.append({
"query": "plumber",
"city": "Phoenix",
"position": biz.get("position"),
"title": biz.get("title"),
"rating": biz.get("rating"),
"reviews": biz.get("reviews"),
"place_id": biz.get("place_id"),
})
supabase.table("local_pack_rankings").upsert(rows).execute()

MCP and AI agents. Add the Google Local API as a tool in Claude or Cursor through the Apify MCP server so an agent can pull the live local pack on demand (see the MCP section near the top). In Claude Code (free trial) or Claude Cowork (free trial), an agent can answer "which three plumbers rank in the Phoenix local pack, and what are their ratings?" with structured data.

Webhooks. For anything custom, fire an Apify webhook on ACTOR.RUN.SUCCEEDED to push each run's dataset into your own service.


Building a local search or lead-generation pipeline? These tools from the same catalog pair well with the Google Local API:

  • Google Maps Places Scraper: pull the full place profile (photos, complete hours, popular times, and more) for any business you find in the local pack, by place_id.
  • Google Maps Directions API: compute routes and travel times between the local businesses this Actor returns.
  • Google Local Services API: the companion for Local Services Ads and Google Guaranteed pros, a different local surface from the organic local pack.
  • Yelp Search API: cross-reference the same businesses on Yelp for extra reviews and category data.

Alternatives such as the Google SERP Scraper fold the local pack into a general search-results scraper: it carries no user rating and returns the local pack as one nested array among organic results, ads, and snippets. This API is purpose-built for the local pack and returns clean, per-business records with rating, reviews, phone, hours, place_id, and GPS coordinates.


FAQ

Is this a Google Maps scraper?

No. This Actor targets the Google Local Search SERP - the local pack inside a normal Google Search results page. The data layout, ranking, and ad behavior differ from Google Maps. Use this when you care about the SERP surface (local SEO rank tracking, snippet-style results, ad presence inside Search) rather than the Maps app.

How many businesses are returned per page?

Roughly 20 on desktop and 10 on mobile, matching what Google ships. Set device and max_pages to control.

Will my cost spike if Google returns more results than I expected?

No. You pay per page fetched, not per business. The cost of a single-page run is fixed at $0.04 regardless of how many local results that page contains.

Why are there both a location and a uule input?

location is the easy path (just a city name). uule is for advanced users who want sub-city or coordinate-level precision via Google's encoded-location format. They cannot be used together.

What happens if I supply an invalid input?

The Actor exits with a structured error record before doing any billable work. No setup or page charges are applied.

Does this work with AI agents through MCP?

Yes. See the Use with Claude, ChatGPT, Cursor & other AI agents (MCP) section near the top. MCP-compatible clients can discover and call this Actor natively.

Where do I see results?

In the Apify console under your run's Dataset tab. Export as JSON, CSV, or Excel from there. Each dataset item is one page; iterate them to walk all results.

What data does the Google Local API return?

Each dataset item is one page of the local pack. Every business in local_results carries a title, rating, reviews count, price tier, type (category), address, hours, place_id, gps_coordinates, service_options (dine-in, takeout, delivery), and action links (directions, website, order, phone). The record also includes ads_results (paid local placements) and discover_more_places (the related-place suggestions Google appends). See the What data you get section above for the full field list.

Can I schedule the Google Local API?

Yes, and this is where most of the value is. Any run can be automated on a schedule: save a task with your query and city, then attach a schedule from the Actor's Actions, then Schedule menu. Concrete cron strings: 0 7 * * * for daily at 7 AM, 0 */6 * * * for every six hours, and 0 9 * * 1 for Mondays. One schedule can trigger many tasks at once, so an agency can refresh every client keyword in a single run. See the Integrations section above for the full local pack monitoring recipe.

Should I use an API or a Web Scraper?

Both, and this Actor is both. An official API for local search is usually rate limited, quota bound, and often missing fields, while a hand-rolled web scraper fights captchas and breaks when the page changes. This Actor gives you the clean, structured result of a purpose-built API you call yourself, with no quotas and no browser to babysit, over the same local pack a real user sees.

Can I integrate this local search Scraper with other apps?

Yes. It connects to almost any cloud service through Apify integrations: Make, Zapier, Slack, the n8n community node, and webhooks on ACTOR.RUN.SUCCEEDED for custom actions. See the Integrations section above for full recipes.

Can I use the Google Local API with the API?

Yes. The Apify API runs the Actor, schedules it, and fetches datasets, and the apify-client package exists for both Node.js and Python. See the Actor's API tab for ready-made snippets in each language.

Can I use the Google Local API through an MCP server?

Yes. Add it as a tool in any MCP client (Claude, Cursor, and others) through the hosted Apify MCP server with the Actor-specific URL https://mcp.apify.com/?tools=actors,docs,johnvc/google-local-api. In Claude Code (free trial) or Claude Cowork (free trial) your agent can then answer questions like "who ranks in the Chicago dentist local pack?" with live data. See the Apify MCP docs.

Will AI replace Google for local business discovery?

AI assistants increasingly answer "find me a highly rated business near me" directly, but they still pull from the same underlying local results Google ranks. That makes the local pack more important to monitor, not less: feeding an agent live local pack data through MCP is how you keep AI answers grounded in current rankings, reviews, and contact details.

How do I track visibility in Google's AI Overviews for local businesses?

This Actor covers the organic local pack. To monitor how a local business shows up in Google's AI-generated answers, pair it with the Google AI Overview API, then compare the two surfaces for the same query and city.

How else can I collect local business data?

Pair the Google Local API with related tools in the same catalog: the Google Maps Places Scraper for full place profiles by place_id, the Google Maps Directions API for routing between businesses, the Google Local Services API for Local Services Ads, and the Yelp Search API for a second review source. The local pack itself comes from Google; for background see local search.


Whether you are wiring this up as an MCP tool for Claude, ChatGPT, or Cursor - or pulling Google Local data directly through Apify's API - you will have clean, structured local pack results in minutes. Click Try for free to run your first search.

n8n integration

Available as an n8n community node, n8n-nodes-google-local-api. In n8n: Settings, Community Nodes, install n8n-nodes-google-local-api, then use it in any workflow (it also works as an AI Agent tool).

Ready-to-run examples that show this API solving a specific problem. Each opens its own setup so you can run it on your account in one click.

Last Updated: 2026.07.14