Google Maps Scraper + Email Extractor
Pricing
from $0.84 / 1,000 results
Google Maps Scraper + Email Extractor
Scrapes Google Maps business listings — name, address, coordinates, rating, review count, phone, website, categories and opening status — with real pagination. Optionally visits each business website to extract contact emails. HTTP only, no API key.
Pricing
from $0.84 / 1,000 results
Rating
0.0
(0)
Developer
Ibnu Adzim
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Pulls business listings straight from Google Maps — name, address, coordinates, rating, review count, phone, website, categories and opening status — and optionally visits each business's own website to find a contact email.
| Per query | Real pagination, ~20 places per page, no duplicates |
| Returns | name · full address · lat/lng · rating · review count · phone · website · categories · neighbourhood · opening status |
| Emails | optional — visits the business website and its contact pages |
| Method | HTTP only. No API key, no login, no browser |
| Anti-bot | none on this endpoint — 6/6 TLS profiles answered 200 cold |
Example input
{"searchQueries": ["digital marketing agency jakarta"],"latitude": -6.2,"longitude": 106.8,"maxPlacesPerQuery": 60,"extractEmails": true}
Set the search centre — it is a real filter
latitude / longitude are not a hint. Google searches around that point,
so the same query at a different centre returns a different neighbourhood's
businesses. Changing the query but leaving the default centre is the single most
common way to get confusing results — if you ask for "dentist in Berlin" while
the centre is still Jakarta, Google will do its best with Jakarta.
searchRadiusHint widens or narrows the area around that centre.
Email extraction
Turn on extractEmails and every place that lists a website gets visited:
homepage first, then /contact, /contact-us, /kontak, /hubungi-kami,
/about — stopping as soon as an address turns up.
It costs no extra Google traffic at all, only requests to the businesses' own sites, so it is safe to leave on; it just makes runs longer. On a sample run of 20 agencies, 20 had a website and 12 yielded an email.
Addresses written as name (at) domain (dot) com are decoded. Template
boilerplate — example@, noreply@, Sentry and Wix CMS addresses, and image
filenames that happen to look like addresses — is filtered out.
Output
Every row carries the portfolio envelope — _input, _source, _scrapedAt,
recordType:
PLACE— one per business.SEARCH_SUMMARY— one per query: how many places came back, how many pages were read, how many had a website, how many yielded an email, and the Maps vs website request counts so the cost of a run is visible in the data.ERROR— one per query that failed, so every input maps to at least one row.
Known limits — worth reading
- Review count is missing on roughly one run in five. Google serves the place
record in two variants at random, and only one of them carries the count — in
the other it is absent from the response entirely, so there is nothing to
parse. The actor re-asks once when a page comes back without it, which covers
most of the gap; when it still is not there the field is honestly
nullrather than guessed. Nothing in the request controls which variant you get. - No reviews. Google's review endpoints are either retired (the one its robots.txt permits) or require an authenticated session (the one that still works, which robots.txt also disallows). A review scraper is not buildable HTTP-only, so this actor does not pretend to.
- No web search results. This scrapes Google Maps, not Google Search. Google no longer serves organic results as HTML to non-JavaScript clients — eleven request shapes were tested, including from a residential connection — so a SERP scraper needs a real browser, which this actor deliberately is not.
- Around 400 places per query, in practice fewer. Results thin out and start repeating well before that; the actor stops as soon as a page adds nothing new rather than paying for pages that repeat themselves.
- Some places have no website or phone. That is the listing, not a miss — 48 of 80 sampled places had a website.
Proxy and cost
Defaults to Apify Proxy on the shared datacenter pool, which is included in your plan at no extra cost and works fine here. If you ever see Google's rate wall, switch the group to Residential in the proxy field — it uses real consumer IPs, but Apify bills residential traffic per gigabyte, so leave it off unless you need it.