Google Maps Scraper avatar

Google Maps Scraper

Pricing

$4.00 / 1,000 place returneds

Go to Apify Store
Google Maps Scraper

Google Maps Scraper

Scrape Google Maps places by search query — name, category, address, rating, review count, phone, website, lat/lng and place ID. Runs a real browser to get past Google's protections, scrolls the full results feed, and never charges for blocked or empty searches.

Pricing

$4.00 / 1,000 place returneds

Rating

5.0

(1)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

2 days ago

Last modified

Share

Search Google Maps and get clean, structured places — name, category, address, rating, review count, phone, website, lat/lng, and the place ID — for any query, anywhere.

Google Maps is one of the hardest targets on the web: the data the page shows is built by client-side JS and the internal API rotates its format constantly, which is why so many Maps scrapers return empty or break within weeks. This actor runs a real browser, lets Maps render its own results, scrolls the entire results feed, and reads the places straight from the rendered cards (stable) instead of reverse-engineering Google's protobuf (fragile).

Input

FieldNotes
searchQueriesOne or more searches, location included in the text — coffee in Brooklyn, dentists near Eiffel Tower.
searchQueryA single search, if you prefer one box.
maxItemsPlaces per query (scrolls the feed to reach it).
languageMaps UI language (en, de, fr…).
countryCode2-letter country for the residential proxy — match it to where you're searching.

Output

One row per place: name, category, address, rating, reviewCount, phone, website, lat, lng, placeId (hex ftid), cid (decimal), placeUrl, searchQuery. Blocked or empty searches return a single coded diagnostic row (BLOCKED / NO_RESULTS) and are not charged.

Fields that can be null: Google only shows some fields on the results card, so website, phone, rating, reviewCount, category and address are frequently null even on otherwise-complete rows — this is Google omitting them on the card, not a scrape failure. name, placeUrl and (when present in the link) lat/lng/placeId/cid are the most consistently populated. You are still charged for these rows because they are genuine place results.

Pricing

Pay-per-result: you are charged once per place row returned. Blocked, empty, and bad-input runs emit an ok:false diagnostic row and are never charged.

Notes & troubleshooting

A residential proxy is required — Google captchas datacenter IPs and your own server IP fast. The actor rotates the whole browser + IP automatically when it hits a captcha. Phone/website are filled when Google shows them on the card; deep per-place fields (full hours, all reviews) are a planned add-on.

  • Got a BLOCKED diagnostic row? You're almost certainly on a datacenter IP or your own IP. Turn on Apify Proxy with the RESIDENTIAL group (the default) and set Proxy country to match where you're searching. Datacenter proxies will keep getting captcha'd.
  • Lots of null website/phone? That's expected — Google doesn't put those on every results card. See the field note above.