Google Maps Places, Reviews & Emails Scraper avatar

Google Maps Places, Reviews & Emails Scraper

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Google Maps Places, Reviews & Emails Scraper

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

Muhammad Qaseem Iqbal

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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 detailsContact detailsOptional extras
Business nameWebsiteReviews
Google Maps URLListing phone numberOwner responses
CategoryEmails from websiteReview rating
AddressAdditional website phonesReview date text
City, state, postal codeFacebook profileReview images
Country codeInstagram profilePlace image URLs
Latitude and longitudeLinkedIn profileOpening hours
RatingX/Twitter profileRelated attributes where visible
Review countYouTube profileError rows for failed tasks
Plus codeTikTok, Pinterest, Discord linksMap-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

  1. You enter a search term and a location, or provide Google Maps URLs / place IDs.
  2. The Actor opens Google Maps, collects matching places, and visits each place page.
  3. It extracts visible business details such as name, category, address, website, phone, rating, and coordinates.
  4. Optional modules can visit business websites, collect reviews, or collect image URLs.
  5. 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

FieldWhat it means
searchStringsArrayKeywords or business types, such as restaurants, gyms, or dentists
locationQueryCity, area, ZIP/postal code, state, region, or country
locationsA list of multiple locations to search in one run
startUrlsGoogle Maps search URLs or place URLs
placeUrlsDirect Google Maps place URLs
placeIdsGoogle Maps place IDs
categoryFilterWordsCategory words used to keep only matching businesses
maxCrawledPlacesPerSearchMaximum number of places to collect per search
maxTotalPlacesOptional total cap for the whole run
scrapeContactsVisit business websites to find emails, phones, and social profiles
scrapeReviewsCollect visible Google Maps reviews
scrapeImagesCollect Google Maps image URLs
customGeolocationSearch 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 typeWhat it contains
placeOne scraped Google Maps business listing
contactEmail, phone, or social profile found on a business website
reviewOne review, when review scraping is enabled
imageOne image URL, when image scraping is enabled
errorFailed 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 locations for multiple areas in one run
  • Use customGeolocation for a precise map area
  • Use deduplicatePlaces to 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, USA instead of very broad searches
  • Add countryCode such as US, GB, or CA for better localization
  • Start with maxCrawledPlacesPerSearch set to 10 or 25 before running a large scrape
  • Use maxTotalPlaces to cap the whole run
  • Keep maxWebsitePagesPerPlace low, 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.

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.