Google Maps Scraper - Places, Phone, Website & Reviews avatar

Google Maps Scraper - Places, Phone, Website & Reviews

Pricing

Pay per event

Go to Apify Store
Google Maps Scraper - Places, Phone, Website & Reviews

Google Maps Scraper - Places, Phone, Website & Reviews

Scrape Google Maps places by search term and location: name, star rating, review count, category, address, opening hours, and optionally phone and website. Uses a real browser because Maps renders results client-side. Export CSV/JSON/Excel. No API key.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Flash Scrape

Flash Scrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Google Maps Places — Ratings, Reviews & Contacts

Scrape Google Maps by search term and location. Give it dentist + Austin, TX and get back each place's name, star rating, review count, category, street address, opening hours — and optionally phone number and website, which is what turns a directory into a contactable lead list.

No API key. No Google Cloud billing account.


Why this uses a browser

Google Maps serves no place data at all to an ordinary HTTP request. Measured: the search page returns ~200 kb containing zero business names, zero phones and zero addresses, because results render client-side. So this Actor drives a real anti-detect browser instead. That is slower and heavier than a plain HTTP scraper, and priced accordingly — but it is the only way to get this data without a paid Places API key.

What you get per place

FieldNotes
nameBusiness name
categoryGoogle's own category, e.g. Plumber, Dentist
rating0–5 stars
reviews_countTotal review count
addressStreet address as shown
hours_summarye.g. Open · Closes 8 PM, Closed · Opens 8 AM Mon
is_open_nowBoolean, derived from the hours line
phoneRequires fetchContactDetails
websiteRequires fetchContactDetails — Google redirect stripped
plus_code, price_levelWhen shown
place_id, maps_urlStable identifiers for de-duplicating across runs
search_term, search_location, scraped_atProvenance

Verified on a live run: plumber in Denver, CO returned 6/6 populated for name, category, address, rating, review count, phone, website, hours and place_id — with counts like 17,657 and 9,042.

Input

FieldTypeNotes
searchTermsarraye.g. ["dentist", "orthodontist"] — each searched separately
locationstringe.g. "Austin, TX". Combined as <term> in <location>
maxPlacesintegerHard cap per run
scrollDepthintegerHow many times to scroll the feed — this is what controls volume
fetchContactDetailsbooleanAdds phone + website; one extra page load per place, charged separately
minRating, minReviews0 = no filter
onlyWithWebsitebooleanNeeds fetchContactDetails on
proxyConfigurationobjectRecommended; the datacenter group is enough
{
"searchTerms": ["plumber"],
"location": "Denver, CO",
"maxPlaces": 60,
"scrollDepth": 8,
"fetchContactDetails": true,
"minReviews": 20
}

Honest limits

  • Volume comes from scrolling, not pagination. A fresh search shows ~7 places; scrolling grows it to ~25–30 per term. Raising scrollDepth beyond the point where no new places appear does nothing — the Actor detects that and stops early. To go wider, add more search terms or narrower locations, not a bigger scrollDepth.
  • reviews_count is often missing from the results list. Many cards expose only 4.8 stars with no count anywhere in the markup. The Actor recovers it from the place panel, so turn on fetchContactDetails if you need review counts reliably. Without it, expect gaps.
  • phone and website are never in the results list — they exist only on the place panel, hence the separate flag and charge.
  • Rated ≠ reviewed. A place can show a rating on very few reviews; filter with minReviews, not minRating alone, to find genuinely established businesses.
  • This is a browser Actor. It needs ~4 GB memory (already set as the default) and is markedly slower per result than an HTTP scraper. A 1 GB run is killed by the browser's own memory use.
  • If Google serves a consent or bot-check page, the Actor stops and reports how many places went unscraped rather than returning a short list that looks complete. You are only charged for places that returned data.

Use cases

  • Local lead generation — filter by category, rating and review count, then pull phone and website for outreach.
  • Competitor mapping — every rival in a metro with their ratings and review volume side by side.
  • Franchise and territory research — run one term across several cities to compare density and quality.
  • Review-volume benchmarkingreviews_count separates established players from new entrants far better than rating alone.

Pricing

Pay per result: per place delivered, plus a smaller contact-detail charge only for places whose panel was opened for phone and website. Places removed by your filters are not charged.

FAQ

Do I need a Google API key? No. The official Places API requires a billing account; this does not.

Why is reviews_count empty on some rows? Google omits it from the results list for many places. Enable fetchContactDetails and it is read from the place panel instead.

Can I get individual review text? Not in this Actor — it returns the rating and the count, not review bodies.

Why is it slower than your other scrapers? It runs a real browser, because Maps has no server-rendered data to parse.