Google Maps Places, Reviews & Emails Scraper
Pricing
from $1.50 / 1,000 results
Google Maps Places, Reviews & Emails Scraper
Extract Google Maps places, business details, emails, social profiles, reviews, photos, opening hours, ratings, categories, coordinates, and URLs.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Muhammad Qaseem Iqbal
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Find businesses on Google Maps and turn them into clean, downloadable lead lists. This Actor can collect company names, addresses, websites, phone numbers, ratings, reviews, opening hours, coordinates, image URLs, and optional contact details from business websites.
Use it for lead generation, competitor research, local SEO, market mapping, CRM enrichment, and location analysis.
This Actor is not affiliated with Google. It works with publicly visible Google Maps pages and business websites.
What can you do with this Actor?
- Build lead lists from Google Maps searches, categories, cities, ZIP codes, or direct place URLs
- Find business contact details such as websites, emails, phone numbers, and social media profiles
- Compare local competitors by rating, review count, category, location, and opening hours
- Research markets and locations using addresses, coordinates, and map-ready output
- Collect reviews for reputation monitoring and customer feedback analysis
- Export data to CSV, Excel, JSON, XML, HTML, RSS, or connect it to other tools through Apify
- Run repeatable searches so you can refresh the same market or category over time
What data can it extract?
| Business details | Contact details | Optional extras |
|---|---|---|
| Business name | Website | Reviews |
| Google Maps URL | Listing phone number | Owner responses |
| Category | Emails from website | Review rating |
| Address | Additional website phones | Review date text |
| City, state, postal code | Facebook profile | Review images |
| Country code | Instagram profile | Place image URLs |
| Latitude and longitude | LinkedIn profile | Opening hours |
| Rating | X/Twitter profile | Related attributes where visible |
| Review count | YouTube profile | Error rows for failed tasks |
| Plus code | TikTok, Pinterest, Discord links | Map-compatible output |
Some fields can be empty when Google Maps or the business website does not show that information.
What this Actor does not include
To keep expectations clear, this version does not include:
- Email deliverability verification
- Binary image downloads; it stores image URLs instead
- Paid people-data enrichment such as employee names, job titles, or personal work emails
- Guaranteed extraction of hidden or private data
- Guaranteed full coverage of every business in a large area from one search
If you need deeper coverage, use specific locations, multiple search terms, or a custom GeoJSON area.
Best use cases
Sales and outreach
Search for businesses by category and city, then export websites, phones, and emails for prospecting.
Example: dentists in Chicago, gyms in New York, cafes in London, plumbers in Manchester.
Local SEO and competitor monitoring
Track ratings, review counts, categories, opening hours, and listing details for competitors in a target area.
Market research
Map business density, compare neighborhoods, find underserved areas, and identify high-rated local operators.
CRM enrichment
Start from Google Maps URLs, place IDs, or existing search terms and add structured business data to your CRM.
How it works
- You enter a search term and a location, or provide Google Maps URLs / place IDs.
- The Actor opens Google Maps, collects matching places, and visits each place page.
- It extracts visible business details such as name, category, address, website, phone, rating, and coordinates.
- Optional modules can visit business websites, collect reviews, or collect image URLs.
- Results are saved in the Apify dataset, with separate views for places, contacts, reviews, images, map data, and errors.
Input
The easiest input is a search term plus a location.
{"searchStringsArray": ["cafes"],"locationQuery": "London, United Kingdom","countryCode": "GB","maxCrawledPlacesPerSearch": 10,"proxyConfiguration": {"useApifyProxy": true}}
Main input fields
| Field | What it means |
|---|---|
searchStringsArray | Keywords or business types, such as restaurants, gyms, or dentists |
locationQuery | City, area, ZIP/postal code, state, region, or country |
locations | A list of multiple locations to search in one run |
startUrls | Google Maps search URLs or place URLs |
placeUrls | Direct Google Maps place URLs |
placeIds | Google Maps place IDs |
categoryFilterWords | Category words used to keep only matching businesses |
maxCrawledPlacesPerSearch | Maximum number of places to collect per search |
maxTotalPlaces | Optional total cap for the whole run |
scrapeContacts | Visit business websites to find emails, phones, and social profiles |
scrapeReviews | Collect visible Google Maps reviews |
scrapeImages | Collect Google Maps image URLs |
customGeolocation | Search inside a custom GeoJSON point, polygon, or multipolygon |
Input examples
Small lead generation run
{"searchStringsArray": ["gyms"],"locationQuery": "New York, USA","countryCode": "US","maxCrawledPlacesPerSearch": 25,"scrapeContacts": true,"maxWebsitePagesPerPlace": 3,"proxyConfiguration": {"useApifyProxy": true}}
Reviews and photos
{"searchStringsArray": ["restaurants"],"locationQuery": "Boston, USA","countryCode": "US","maxCrawledPlacesPerSearch": 20,"scrapeReviews": true,"maxReviewsPerPlace": 50,"scrapeImages": true,"maxImagesPerPlace": 10,"proxyConfiguration": {"useApifyProxy": true}}
Search multiple locations
{"searchStringsArray": ["dentist"],"locations": ["Austin, TX", "Dallas, TX", "Houston, TX"],"countryCode": "US","maxCrawledPlacesPerSearch": 50,"onlyWithWebsite": true,"proxyConfiguration": {"useApifyProxy": true}}
Custom map area
Use a GeoJSON point, polygon, or multipolygon when a city name is too broad or you want to search a specific area.
{"searchStringsArray": ["family law attorney"],"customGeolocation": {"type": "Point","coordinates": [-0.1276, 51.5072]},"radiusKm": 8,"maxCrawledPlacesPerSearch": 100,"proxyConfiguration": {"useApifyProxy": true}}
Coordinates must use [longitude, latitude] order.
Search terms and categories
Good search terms are clear and not too repetitive.
Good example:
["restaurant", "bar", "cafe", "ice cream shop"]
Less useful example:
["restaurant", "restaurants", "best restaurant", "food near me"]
Category filters can reduce unwanted results, but they can also hide valid businesses if Google uses a different category name. For example, Family law attorney, Divorce lawyer, and Legal services can all describe similar businesses. If you need strict category matching, include the synonyms that matter to your use case.
Contact enrichment
Turn on scrapeContacts when you want the Actor to visit business websites and look for:
- Email addresses
- Additional phone numbers
- Facebook, Instagram, LinkedIn, X/Twitter, YouTube, TikTok, Pinterest, or Discord links
Example:
{"scrapeContacts": true,"scrapeEmails": true,"scrapePhonesFromWebsite": true,"scrapeSocialMedia": true,"maxWebsitePagesPerPlace": 3}
The contact crawler is conservative. It focuses on home, contact, about, legal, support, and similar pages. Each contact row includes a sourceUrl so you can see where the contact was found.
Email verification is not included in this version. Extracted emails are marked as not checked.
Reviews
Turn on scrapeReviews to collect review rows.
{"scrapeReviews": true,"maxReviewsPerPlace": 50,"reviewsSort": "newest","reviewsOrigin": "google","includeReviewImages": true,"includeReviewerPersonalData": false}
Reviewer personal data is disabled by default. Enable it only when you have a valid reason to process that information.
Review date filters are best-effort because Google Maps does not provide a stable browser date filter. They work best when reviews are sorted by newest.
Output
Results are stored in the default Apify dataset. You can view them in the Output tab, download them, or access them through the Apify API.
The dataset is organized by row type:
| Row type | What it contains |
|---|---|
place | One scraped Google Maps business listing |
contact | Email, phone, or social profile found on a business website |
review | One review, when review scraping is enabled |
image | One image URL, when image scraping is enabled |
error | Failed tasks with useful debugging information |
Use the dataset views to avoid seeing empty fields from other row types. For example, the Places view is best for business listings, while the Contacts view is best for emails and social profiles.
Example place output
{"rowType": "place","searchString": "gyms","searchLocation": "New York, USA","rank": 1,"title": "Example Gym","categoryName": "Gym","address": "123 Example St, New York, NY 10001","city": "New York","state": "NY","postalCode": "10001","countryCode": "US","website": "https://examplegym.com/","phone": "(646) 555-0199","totalScore": 4.7,"reviewsCount": 245,"location": {"lat": 40.7128,"lng": -74.006},"openingHours": [{"day": "Monday","hours": "6 AM-10 PM"}],"url": "https://www.google.com/maps/place/..."}
Example contact output
{"rowType": "contact","placeTitle": "Example Gym","website": "https://examplegym.com/","type": "email","value": "hello@examplegym.com","sourceUrl": "https://examplegym.com/contact","confidence": "high"}
Example review output
{"rowType": "review","placeTitle": "Example Gym","stars": 5,"text": "Clean equipment and helpful staff.","publishedAtRelative": "2 weeks ago","reviewOrigin": "google","reviewUrl": "https://www.google.com/maps/place/..."}
Map view
The Actor creates a simple results-map.html file in the key-value store. It lists scraped places with coordinates and Google Maps links.
You can also use the dataset's Map view or export latitude and longitude fields to your preferred mapping, CRM, spreadsheet, or business intelligence tool.
How many results can you scrape?
You control the result size with limits such as maxCrawledPlacesPerSearch and maxTotalPlaces.
For small tests, start with 10 to 25 places. For larger lead lists, increase the limits gradually and check the output quality. Google Maps can show different results depending on the search term, location, language, time, and proxy session, so one broad search is not always enough for complete coverage.
For deeper coverage:
- Use specific locations instead of a whole country
- Search several nearby cities, ZIP codes, or neighborhoods
- Use
locationsfor multiple areas in one run - Use
customGeolocationfor a precise map area - Use
deduplicatePlacesto remove overlapping results
Cost and run time
This Actor uses normal Apify platform resources: compute, proxies, traffic, dataset storage, and key-value-store records.
Run time and cost depend mostly on:
- Number of search terms and locations
maxCrawledPlacesPerSearch- Whether website contact crawling is enabled
- Whether review scraping is enabled
- Whether image scraping is enabled
- Proxy and retry behavior
For predictable runs, start small, check the output, then increase limits.
Tips for better results
- Use specific locations such as
Brooklyn, NY, USAinstead of very broad searches - Add
countryCodesuch asUS,GB, orCAfor better localization - Start with
maxCrawledPlacesPerSearchset to 10 or 25 before running a large scrape - Use
maxTotalPlacesto cap the whole run - Keep
maxWebsitePagesPerPlacelow, usually 1 to 5 - Turn on reviews and images only when you really need them
- Use category filters carefully to avoid removing good results
- Use Apify Proxy for Google Maps scraping
Integrations
After a run finishes, you can send the results to:
- Google Sheets
- Make
- Zapier
- Slack
- Airbyte
- Webhooks
- CRM tools
- Data warehouses
- Custom apps through the Apify API
You can also schedule the Actor to run regularly for monitoring ratings, reviews, contact details, or market changes.
FAQ
Can I scrape businesses from multiple locations?
Yes. Use the locations input to provide several cities, states, postal codes, or regions in one run.
Can I scrape by coordinates or a custom area?
Yes. Use customGeolocation with a GeoJSON Point, Polygon, or MultiPolygon. For a point, also set radiusKm.
Can I use direct Google Maps URLs?
Yes. Use startUrls or placeUrls when you already have Google Maps search or place URLs.
Can this Actor find business emails?
Yes, when scrapeContacts and scrapeEmails are enabled. The Actor visits business websites and extracts visible email addresses from a limited number of pages.
Can I scrape only businesses with emails?
You can enable scrapeContacts and then use the Contacts dataset view to work with email rows. The onlyWithEmail filter is available, but website contact crawling happens after place rows are saved, so the cleanest workflow is usually to export the Contacts view or filter the dataset after the run.
Can I scrape reviews only?
Yes. Provide direct Google Maps place URLs or place IDs, enable scrapeReviews, and set maxReviewsPerPlace. The Actor will collect review rows for those places without needing a broad search.
Why are some output fields empty?
Some fields are only available when Google Maps or the business website shows them. Also, the dataset contains different row types. A contact row will not have rating fields, and a place row will not always have email fields. Use the dataset views for cleaner tables.
Can I get one review per row?
Yes. Enable scrapeReviews and use the Reviews dataset view. Each saved review is written as its own review row.
Can I download images?
This version stores image URLs. Binary image download is reserved for a future version.
Can I use this Actor as an API?
Yes. You can run it and fetch results with the Apify API, Apify JavaScript client, or Apify Python client. This is useful for sending Google Maps data into internal tools, dashboards, CRMs, enrichment pipelines, or scheduled workflows.
Is it legal to scrape Google Maps?
Web scraping can be legal when you collect publicly available information, but you are responsible for your use case. Respect applicable laws, privacy rules, intellectual property rights, and Google's terms. Be especially careful when processing personal data.
Limitations
- Google Maps changes often, so some fields may occasionally be missing
- Google may show different results by location, language, proxy, or time
- Searches without a clear location may return fewer results
- Review date filtering is best-effort
- Email verification is not included in this version
- Image downloading is not included in this version
- Website contact extraction is limited by
maxWebsitePagesPerPlace - Captchas, blocks, or empty results may require proxy/session tuning
Feedback
If you find a bug, notice missing data, or have an idea for improvement, use the Actor's Issues tab on Apify. Clear examples, input settings, and run IDs make problems much easier to reproduce.