Local Business Scraper for Google - Ratings, Phones & Websites avatar

Local Business Scraper for Google - Ratings, Phones & Websites

Pricing

from $1.65 / 1,000 business listings

Go to Apify Store
Local Business Scraper for Google - Ratings, Phones & Websites

Local Business Scraper for Google - Ratings, Phones & Websites

Scrape Google's local business results by search: name, rating, exact review count, category, address, phone, website, hours, booking link and Google Maps id, plus the owner's description, review quotes and social profiles. 42 countries. Independent tool, not affiliated with Google LLC.

Pricing

from $1.65 / 1,000 business listings

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

2

Monthly active users

2 days ago

Last modified

Share

Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Google LLC or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "Google Local results" is referenced only to describe the publicly available website this Actor collects data from.

Search Google's local business results - the businesses Google lists for dentist in denver co on its map and Places results - and get every business as a clean row: name, star rating, the exact review count, category, street and full address, phone, website, today's opening status and the whole week's hours, booking link, Google place ID, Maps CID and map coordinates. Turn on details and each row also carries the owner's own description, review quotes, what reviewers mention most (with counts), the venue it sits inside and the social profiles linked from its website. 20 businesses per page, many pages per search, 42 country editions. No login, no browser, no API key.

What you get

FieldWhat it holds
name, category, categories, address, fullAddress, city, state, postalCode, neighborhoodThe business and where it is
rating, reviewCount, ratingTextStar rating and the exact number of Google reviews (2,275, not "2.2K")
hoursText, openStatus, opensText, openingHours, openingHoursTextOpen now or closed, when that changes, and the hours for every day of the week
phone, phoneE164, website, bookingUrl, appointmentsProvider, orderOnlineUrlHow to reach or book the business
reviewSnippetA featured review quote
placeId, kgId, cid, fid, mapsUrl, googleSearchUrl, latitude, longitudeGoogle's ids for the business, links to it on Google Maps and Google Search, and its map position
editorialSummary, accessibility, photoCount, imageUrl, timezoneGoogle's own summary, accessibility features, photo count and main photo
description, reviewSnippets, reviewTopics, locatedIn, socialProfilesWith details on: the owner's description, review quotes, what reviewers mention (with counts), the venue it is located in, and Facebook / Instagram / LinkedIn / X / YouTube / TikTok profiles from its website
position, page, searchQuery, sourceUrlRank in Google's results and how the row was found

Text versions of the list fields (socialProfilesText, reviewSnippetsText, reviewTopicsText, openingHoursText, categoriesText) are included for spreadsheets.

Why this scraper

  • Exact review counts and ratings, fast. Every row carries the full review count as a number, read from Google's own data, page after page in seconds.
  • Contact data on every row. Phone, website, full address and booking link come with the listing itself, not as an extra.
  • Details that help you qualify a business. The owner's description, review quotes and the topics reviewers mention most ("friendly staff (209)", "hygienist (50)") show what a business is known for before you call.
  • Rank as Google ranks it. Rows carry the position Google gave them for that search, page by page, so you can track who leads a category in a city.
  • Every row is an organic listing. Google's local business data carries no paid placements.
  • International. 42 country editions and 21 interface languages; the search starts on the chosen country's map.

Use cases

  • Local lead generation - dentists, plumbers, agencies, restaurants in a city with phone, website, social profiles and booking link.
  • Local SEO and rank tracking - who ranks for a keyword in a city, with rating and review count, on a schedule.
  • Reputation monitoring - ratings, review counts, review quotes and review topics for your locations and competitors.
  • Market mapping - density of a business type across areas, with coordinates for your own maps.
  • Data enrichment - Google place ID, Maps CID, website and phone for a list of searches.

How to use

  1. Enter one or more local searches - dentist in denver co, coffee shop in shoreditch london, Zahnarzt in Berlin Mitte.
  2. Keep Add details on for the fullest record, or turn it off for a cheaper list that still has phone, website, address and hours.
  3. Optionally set a minimum rating or review count, the country edition and language, and Maximum businesses. Run; rows land in the dataset within seconds.

You can also paste Google local-results URLs (google.com/search?q=...&tbm=lcl) or Google Maps search URLs (google.com/maps/search/...) into Google Local URLs, or import a list of them from a text file or Google Sheet. A Maps URL keeps the map position it was copied from.

Input

{
"queries": ["dentist in denver co", "dentist in boulder co"],
"countryCode": "us",
"language": "en",
"enrichWithDetails": true,
"minRating": "4",
"maxResults": 100
}

Every field is optional. With no input at all the actor runs a small sample search so you can see the output shape.

Output example

{
"type": "place",
"name": "The Denver Dentists",
"rating": 4.5,
"reviewCount": 667,
"ratingText": "Rated 4.5 out of 5, 667 user reviews",
"category": "Dentist",
"address": "2190 E 17th Ave",
"hoursText": "Closed · Opens 8 AM Tue",
"openStatus": "Closed",
"opensText": "Opens 8 AM Tue",
"reviewSnippet": "Location, staff, and overall experience of the office was amazing.",
"kgId": "/g/1thx936m",
"isSponsored": false,
"searchQuery": "dentist in denver co",
"position": 2,
"page": 1,
"countryCode": "us",
"language": "en",
"phone": "(303) 731-2005",
"phoneE164": "+13037312005",
"website": "http://www.thedenverdentists.com/",
"bookingUrl": "https://www.patientsreach.io/schedule/TheDenverDentists/patient_types/?...",
"appointmentsProvider": "patientsreach.io",
"fullAddress": "2190 E 17th Ave, Denver, CO 80206",
"city": "Denver, Colorado",
"description": "The Denver Dentists is your trusted dentist in Denver, CO, where comfort, excellence, and community come together. ...",
"socialProfiles": [
{ "network": "Facebook", "url": "https://www.facebook.com/thedenverdentists" },
{ "network": "Instagram", "url": "https://www.instagram.com/thedenverdentists" }
],
"cid": "7630162263290551343",
"mapsUrl": "https://www.google.com/maps?cid=7630162263290551343",
"reviewSnippets": [
"Location, staff, and overall experience of the office was amazing.",
"Detailed price breakdown with payment options, and no extra expense surprises!",
"The music is too loud, as if they are trying to create a club atmosphere."
],
"detailsFetched": true,
"placeId": "ChIJyxDJBfR5bIcRLxwG8ibI42k",
"latitude": 39.7430704,
"longitude": -104.961213,
"categories": ["Dentist", "Cosmetic dentist", "Dental clinic", "Dental implants provider"],
"postalCode": "80206",
"state": "CO",
"neighborhood": "Central",
"openingHoursText": "Mon 8 AM–5 PM; Tue 8 AM–5 PM; Wed 7 AM–3 PM; Thu 7 AM–3 PM; Fri 7 AM–3 PM; Sat Closed; Sun Closed",
"photoCount": 119,
"reviewTopics": [{ "topic": "friendly staff", "mentions": 209 }, { "topic": "kind staff", "mentions": 78 }, { "topic": "hygienist", "mentions": 50 }],
"scrapedAt": "2026-10-20T00:52:29.980Z"
}

Reliability - read this before you buy

  • 20 businesses per page; a city search usually runs to 10-15 pages. Use Maximum pages per query and Maximum businesses to choose how deep to go, and several queries (neighbourhoods, business types) for whole regions.
  • Name the place in the search. Google places a search on the city or area it names. If Google cannot place it, the actor looks the place name up and searches there, and businesses Google lists far outside it are skipped and never charged. A search with no place ("dentist near me") is placed by Google wherever it guesses the searcher is, so always add a city, or paste a Google Maps search URL to keep that map's area.
  • Details are charged as a separate event, and only when a detail was found. Rows whose business has no description, review quotes, topics, venue or social profiles carry the listing fields and are not charged for details.
  • Some fields depend on the business. Hours, website, phone, description, booking links and social profiles exist only where the business published them; those fields are null or empty when Google or the website does not show them - nothing is invented.
  • Social profiles come from the business's own website (its home page), so a business without a website, or a site that hides its links from a plain page load, has none.
  • Kept for compatibility: highlights, servicesLink and extras are part of every row so existing integrations keep working, but Google's local data no longer publishes them, so they stay empty. isSponsored is always false.
  • Every run ends with a plain-language status message that says what happened and, when a run returns nothing, which input to change.

How much does it cost to scrape Google Local results?

This Actor uses Apify's pay-per-event pricing: you are charged only for the results it delivers, with no monthly rental and no start fee. The events it can charge are:

  • Business listing - Charged once per business written to your dataset: name, rating, exact review count, category, address, phone, website, opening hours, featured review, map coordinates and Google ids. Duplicates and businesses that fail your rating or review filters are never charged.
  • Business details - Charged only when details are turned on, once per business whose Google record was read and gave at least one detail: the owner's description, review quotes, what reviewers mention, the venue it sits in, or social profiles from its website. Never charged when no detail was found.
  • Search results page - Charged once per page of Google local results read (up to 20 businesses each). A search that finds no businesses is charged as one page. In monitor mode, pages read only to remember businesses already in the results are free.

The current price of each event is shown on the Pricing tab of this page. Set a maximum total charge on the run if you want a hard cap on spend, and use the input limits to control how much the Actor fetches.

Automate & schedule

Run this Actor on autopilot and pull results into your own stack:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });
const run = await client.actor('scrapesage/google-local-scraper').call({
// your input - see the Input section above
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} records`);

Integrate with any app

Connect the dataset to thousands of apps - no code required:

  • Make - multi-step automation scenarios.
  • Zapier - push new records straight into your CRM or spreadsheet.
  • Slack - get notified when a scheduled run finds something new.
  • Google Drive / Sheets - auto-export every run to a spreadsheet.
  • Airbyte - pipe results into your data warehouse.
  • GitHub - trigger runs from commits or releases.

Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. You can call this Actor from Claude, ChatGPT or any agent framework through the Apify MCP server - describe the data you need and let the assistant run this Actor for you.

Agent-ready: autonomous payments (x402 & Skyfire)

This actor is agent-ready: AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:

  • x402: an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server, with no account and no API key.
  • Skyfire: agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

Tips

  • Put the place in the query (... in denver co) or in Location; a business type plus a city or neighbourhood gives the best list.
  • Pick the country edition of the place: gb for London, de for Berlin, au for Sydney. The search starts on that country's map.
  • For rank tracking, turn details off, set a fixed Maximum pages per query, and schedule the same queries daily; position and page show the movement.
  • minReviews is the quickest way to a list of established businesses; minRating for the best-rated.
  • Monitor mode: the first run delivers up to Maximum businesses and records every business in your searches (up to Maximum pages per query); later runs deliver only businesses that were not in those searches before. Pair it with a schedule.
  • Hotels, guest houses and other lodging are listed like any other business.

FAQ

Is this Google Maps? It reads the business listings Google shows for a local search, which are the same businesses you see on Google Maps for that search. mapsUrl opens each business on Google Maps and googleSearchUrl on Google Search.

Do I get reviews? You get the rating, the exact review count, a featured review quote and, with details on, more review quotes and the topics reviewers mention most - not the full review list.

Does it log in or use cookies? No. It reads Google's public local business data without an account.

What happens when Google does not answer or a page is unreadable? The request is retried on a fresh connection; if a search still fails, the run carries on with the other searches and the status message names the search that failed. A run never fails hard on a transient error.

Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Google LLC or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

"Google Local results" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official Google Local results product, is not authorised or certified by Google LLC, and does not distribute Google Local results software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.

Need help?

Open an issue on the Actor's Issues tab, or visit the Apify help center. Feature requests are welcome - this Actor is actively maintained.