Google local results (places list)
v1.0.0by extracthub Updated 11/6/2026 google.com
Places from Google's local results page (google.com/search?q=<query>&tbm=lcl): name, rating, review count, category, price range, address or service area, years in business, opening-hours status, phone and Google knowledge-graph ID, with their position, plus the next-page URL (20 places per page). No JavaScript rendering needed.
@1 follows fixes and added fields. to freeze the output.
Live Preview Not Available
This is a static view of the extractor configuration. To see a live preview and inspect the HTML, please fork this config.
What it returns
result.extracted is a JSON object with these top-level fields (from the current configuration; every released version keeps the schema it was released with, see the changes under Versions and health). A sample is in the extracted data panel above.
| Field | Type |
|---|---|
| places | object{address,category,kgmid,name,openStatus,phone,position,priceRange,rating,reviewCount,reviewSnippet,yearsInBusiness}[] |
| nextPageUrl | string |
How to call Google local results (places list)
Pass the URL of a google.com page and this extractor's pinned id. Authenticate every request with your API key in the X-API-Key header (a test key, exth_test_..., returns simulated results at no cost). Every parameter and error code is described in the API reference.
Realtime: one URL, result in the response
https://api.extracthub.io/api/extractor/extract
Authentication required via X-API-Key header
| Parameter | Type | Required | Description |
|---|---|---|---|
| target_url | string | Yes | The URL to scrape and extract data from |
| extractor_id | string | Yes | This extractor's ID with a version pin: @extracthub1/google-local-results@1. Use @1 for the latest 1.x or @1.2.3 for an exact version. |
| return_raw_html | boolean | No | Include raw HTML in response (default: false) |
| async_fallback | boolean | No | Default true: a request still queued after the wait limit becomes an async job (202 with job_id). false: 503 queue_timeout instead |
| webhook_url | string | No | HTTPS URL notified if the request becomes a job (job.completed / job.failed) |
Code examples
curl -X GET "https://api.extracthub.io/api/extractor/extract?target_url=https://example.com&extractor_id=%40extracthub1%2Fgoogle-local-results%401" \
-H "X-API-Key: YOUR_API_KEY" Example response
Shape of a 200 answer (placeholder values). metadata also carries costUsd, and the X-Extractor-Version header names the exact version that ran. A busy queue answers 202 with job_id, status_url and result_url; poll GET /api/extractor/jobs/{id} (or cancel it with POST /api/extractor/jobs/{id}/cancel).
{
"success": true,
"result": {
"extracted": {
"places": [
{
"position": 0,
"name": "…",
"kgmid": "…",
"rating": 0,
"reviewCount": 0,
"category": "…",
"priceRange": "…",
"yearsInBusiness": 0,
"address": "…",
"openStatus": "…",
"phone": "…",
"reviewSnippet": "…"
}
],
"nextPageUrl": "…"
},
"metadata": {
"url": "https://example.com",
"useProxy": true,
"renderJs": false,
"scrapedAt": "2026-01-01T12:00:00.000Z"
}
}
} Batch: many URLs in one request
The batch runs in the background with the version resolved once at submission. Read the results as NDJSON pages with a stable cursor; succeeded URLs are charged, and failed URLs only when their scrape reached the provider. If your credit runs out the batch pauses and resumes when credit is available, and POST /api/extractor/batch/{id}/cancel stops it. Signed webhooks report batch.completed, batch.failed and batch.paused.
curl -X POST "https://api.extracthub.io/api/extractor/batch" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"extractor_id": "@extracthub1/google-local-results@1",
"targets": [
{ "url": "https://google.com/..." },
{ "url": "https://google.com/..." }
],
"webhook_url": "https://your-app.example/webhooks/extracthub"
}'
# Progress, then results as NDJSON pages (cursor = last index)
curl "https://api.extracthub.io/api/extractor/batch/BATCH_ID" -H "X-API-Key: YOUR_API_KEY"
curl "https://api.extracthub.io/api/extractor/batch/BATCH_ID/results" -H "X-API-Key: YOUR_API_KEY" In a pipeline
In the dashboard's pipeline builder, add Google local results (places list) as an extractor node and set its version pin to 1 (or exactly 1.0.0). A previous node can feed it the URLs it extracts; pipelines run manually or on a cron schedule, report progress live and export JSON, CSV or NDJSON.
With an AI agent (MCP)
Connect Claude Code, Claude Desktop or Cursor to the ExtractHub MCP server (https://api.extracthub.io/mcp, your API key as a Bearer token) and ask in plain language. The agent calls extract with this extractor's pinned id, or create_batch for many URLs, at the same price and limits as the API. Use a test key to try it without credit. Set up the MCP server.
Use ExtractHub to extract https://google.com/... with @extracthub1/google-local-results@1 {
"tool": "extract",
"arguments": {
"extractor_id": "@extracthub1/google-local-results@1",
"url": "https://google.com/..."
}
} Versions and health
Each version is immutable. @N resolves to the newest non-yanked version of major N; a deprecated major keeps working until its sunset date and its responses carry Deprecation and Sunset headers. Health comes from scheduled checks of the released versions.
- v1.0.0 active healthy Released 11/6/2026
First release.
Google local results (places list): frequently asked questions
Is Google local results (places list) a google.com scraper?
Yes. Google local results (places list) is an ExtractHub extractor: a saved, versioned web scraper for google.com pages that returns the page as structured JSON. Call it as a google.com scraper API with extractor_id=@extracthub1/google-local-results@1; it never changes under you, because every released version is immutable.
What data does Google local results (places list) return?
It returns a JSON object with 2 top-level fields: places (object{address,category,kgmid,name,openStatus,phone,position,priceRange,rating,reviewCount,reviewSnippet,yearsInBusiness}[]) and nextPageUrl (string). The extracted data panel on this page shows a sample.
How do I call Google local results (places list)?
Send GET or POST https://api.extracthub.io/api/extractor/extract with your API key in the X-API-Key header, extractor_id=@extracthub1/google-local-results@1 and the URL of a google.com page as the target. For many URLs use POST https://api.extracthub.io/api/extractor/batch, and in a pipeline add it as an extractor node pinned to 1.
Can an AI agent use Google local results (places list)?
Yes. Connect Claude Code, Claude Desktop, Cursor or another MCP client to the ExtractHub MCP server at https://api.extracthub.io/mcp with your API key, then ask it to extract a google.com page: the agent calls the extract tool with extractor_id=@extracthub1/google-local-results@1 (or create_batch for many URLs), at the same price as the API.
Which version should I pin?
Pin the major (@extracthub1/google-local-results@1) to receive fixes and added fields automatically, or the exact version (@extracthub1/google-local-results@1.0.0) to freeze the output. A breaking schema change is always released as a new major, so a major pin never loses or retypes a field.
Does it render JavaScript or use a proxy?
No, it fetches the HTML without JavaScript rendering and it goes through a proxy. Calls are charged at the premium tier (through the scraping proxy, no JavaScript). These settings are part of each released version; JavaScript rendering, XHR capture and browser actions always use the proxy.
More web scrapers in the scraper catalog and in Travel & Hospitality.