My Google Maps Pro avatar
My Google Maps Pro

Pricing

from $2.00 / 1,000 results

Go to Apify Store
My Google Maps Pro

My Google Maps Pro

Google Maps Leads Scraper 2025 – extracts emails, phones, social links, reviews, photos, hours & GPS from any search. 95%+ email success · Up to 500 reviews · Bulk mode · Auto proxies & CAPTCHA · 99.9% uptime. Perfect for lead gen & local SEO. Pay-per-result or unlimited monthly.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Data Farming Team

Data Farming Team

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Google Maps Pro Scraper

Advanced Google Maps scraper built with Playwright and Apify SDK. This Actor scrapes Google Maps place data with the following features:

  • Proxy Rotation - Uses Apify residential proxies for scaling and avoiding blocks
  • CAPTCHA Solving - Automatic CAPTCHA detection and solving integration
  • Review Extraction - Scrolls through and extracts all reviews with ratings and responses
  • Photo Downloads - Downloads and stores place photos
  • Contact Extraction - Extracts emails and social media links from business websites

⚠️ Important Requirements

Apify Proxies Required

Google Maps blocks datacenter IPs. This actor requires Apify residential proxies to function properly:

  • Will NOT work on free tier without proxies (timeouts, blocks)
  • Requires paid Apify plan with residential proxy access
  • 💰 Cost: ~$0.50-$1 per 1,000 places scraped (proxy usage)

Without proxies you will see:

  • net::ERR_TIMED_OUT errors
  • CAPTCHA challenges
  • Zero results

Memory Requirements

  • Minimum: 2GB RAM (4GB recommended)
  • Free tier (1GB): Will experience memory overload and timeouts
  • Concurrency: 1-2 for 2GB, 3-5 for 4GB+

Features

Proxy Rotation

  • Automatic proxy rotation using Apify residential proxies
  • Configurable proxy groups and country-specific proxies
  • Essential for scaling and avoiding IP blocks

CAPTCHA Solving

  • Automatic reCAPTCHA v2/v3 detection
  • Integration with Apify Anti-Captcha Actor
  • Retry logic for failed CAPTCHA solving

Review Extraction

  • Automatic scrolling through all reviews
  • Expands "More" buttons to get full review text
  • Extracts ratings, authors, dates, and owner responses

Photo Downloads

  • Extracts photo URLs from place pages
  • Downloads and stores photos in key-value store
  • Supports high-resolution photo extraction

Contact Information

  • Extracts email addresses from business websites
  • Finds social media links (Facebook, Instagram, Twitter, LinkedIn, etc.)
  • Extracts phone numbers

Getting Started

Prerequisites

  • Node.js 16+ installed
  • Apify CLI installed: npm install -g apify-cli
  • Apify account (for proxy access and deployment)

Installation

  1. Install dependencies:
$npm install
  1. Configure your input in storage/key_value_stores/default/INPUT.json:
{
"searches": [
{
"query": "restaurants",
"location": "New York, NY"
}
],
"maxPlaces": 10,
"includeReviews": true,
"maxReviews": 20,
"downloadPhotos": false,
"extractContactInfo": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
},
"captchaConfiguration": {
"antiCaptchaApiKey": "your-api-key-here",
"maxRetries": 3
}
}

Running Locally

Option 1: Using Apify CLI (Recommended)

$apify run

Option 2: Using npm start

$npm start

The scraper will:

  1. Read input from storage/key_value_stores/default/INPUT.json
  2. Scrape Google Maps based on your search queries
  3. Save results to storage/datasets/default/

Input Configuration

FieldTypeDescriptionDefault
searchesArrayList of search queries with locationRequired
maxPlacesNumberMaximum places to scrape per search100
includeReviewsBooleanExtract reviews for each placetrue
maxReviewsNumberMaximum reviews per place50
downloadPhotosBooleanDownload and store photosfalse
extractContactInfoBooleanExtract emails/social from websitesfalse
proxyConfigurationObjectProxy settings (use Apify proxy editor)See below
proxyConfiguration.useApifyProxyBooleanUse Apify residential proxiestrue
proxyConfiguration.apifyProxyGroupsArrayProxy groups (e.g., ["RESIDENTIAL"])["RESIDENTIAL"]
proxyConfiguration.apifyProxyCountryStringISO country code (e.g., "US")Optional
captchaConfiguration.antiCaptchaApiKeyStringAnti-Captcha API keyOptional
captchaConfiguration.maxRetriesNumberMaximum CAPTCHA retry attempts3
maxConcurrencyNumberMaximum concurrent pages (1-10)5
navigationTimeoutSecsNumberPage navigation timeout in seconds120
requestHandlerTimeoutSecsNumberRequest handler timeout in seconds300

Running Tests

# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverage

Output

The scraper outputs data to the default dataset with the following structure. The dataset schema provides 5 different views in the Apify Console for easy data exploration:

Dataset Views

  1. Overview - Basic place information (name, address, phone, rating, website)
  2. Detailed View - Complete information including GPS coordinates and timestamps
  3. With Reviews - Places with their full review data
  4. Contact Information - Places with extracted contact details from websites
  5. Export (All Fields) - All available data for complete export

Output Structure

{
"title": "Place Name",
"address": "123 Main St, City, State",
"phone": "+1 555-1234",
"website": "https://example.com",
"rating": "4.5",
"gps": {
"lat": 40.7128,
"lng": -74.0060
},
"url": "https://www.google.com/maps/place/...",
"scrapedAt": "2024-01-01T00:00:00.000Z",
"reviews": [
{
"author": "John Doe",
"rating": 5,
"text": "Great place!",
"date": "2 weeks ago",
"response": {
"owner": "Business Owner",
"text": "Thank you!",
"date": "2 weeks ago"
}
}
],
"photos": [
{
"key": "photo-place-id-0",
"url": "https://...",
"thumbnail": "https://...",
"alt": "Place photo"
}
],
"contactInfo": {
"emails": ["info@example.com"],
"socialMedia": {
"facebook": "https://facebook.com/...",
"instagram": "https://instagram.com/..."
},
"phoneNumbers": ["+1 555-1234"]
}
}

Deploy to Apify

Prerequisites

  1. Log in to Apify (you'll need your Apify API Token):
$apify login

Deploy

Deploy your Actor to the Apify Platform:

$apify push

Your Actor will be available at Actors -> My Actors.

Communicate with Deployed Actor

After deployment, you can interact with your Actor via the Apify API:

Check Actor Status

# Set your credentials
$env:APIFY_TOKEN="your_api_token"
$env:APIFY_USERNAME="your_username"
# Check if Actor is deployed
node check-actor-status.js

Test the Actor

# Run a test scrape
node test-actor-api.js

See DEPLOYMENT_GUIDE.md for complete deployment and API communication instructions.

Connect Git Repository (Optional)

  1. Go to Actor creation page
  2. Click on Link Git Repository button
  3. Connect your GitHub/GitLab repository

Resources