Google Maps Business Scraper avatar

Google Maps Business Scraper

Pricing

$20.00/month + usage

Go to Apify Store
Google Maps Business Scraper

Google Maps Business Scraper

Automate Google Maps data extraction at scale. Scrape structured business listings by keyword and location, and receive clean, ready-to-use data including contact details, ratings, and reviews — ideal for lead generation, competitor analysis, and CRM enrichment.

Pricing

$20.00/month + usage

Rating

5.0

(2)

Developer

Techionik

Techionik

Maintained by Community

Actor stats

2

Bookmarked

7

Total users

3

Monthly active users

15 days ago

Last modified

Share

🚀 Overview

Google Maps Business Scraper is a production-ready Apify Actor designed for reliable extraction of structured business data directly from Google Maps.

Built with Playwright and Crawlee, this actor supports multiple keywords and multiple locations in a single run, delivering clean, normalized, and deduplicated business listings ready for lead generation, research, and automation workflows.

Designed for clarity, stability, and professional usage.


💼 Ideal For

  • Lead generation campaigns
  • Local business prospecting
  • Market and competitor research
  • CRM enrichment
  • Sales intelligence workflows
  • Data collection for analytics

📊 Data Extracted

For every keyword-location combination, the actor extracts:

  • Business Name
  • Full Address
  • Phone Number
  • Website URL
  • Business Category
  • Rating
  • Number of Reviews

All extracted text is cleaned and normalized to remove formatting artifacts and unwanted characters.


⚙️ How It Works

For each keyword and location pair:

  1. Generates a Google Maps search URL
  2. Loads search results using PlaywrightCrawler
  3. Scrolls dynamically loaded results
  4. Collects unique business listing links
  5. Opens each business detail page
  6. Extracts structured business information
  7. Deduplicates results within each batch
  8. Stops automatically once the defined limit is reached

Each keyword-location batch is processed independently and sequentially for stability.


🧾 Input Configuration

Required Fields

  • keywords (array of strings)
    Example:
    ["cafe", "dentist", "gym"]

  • locations (array of strings)
    Example:
    ["New York", "Los Angeles"]

Optional Field

  • maxResultsPerSearch (integer)
    Default: 10

Defines how many businesses to extract per keyword-location combination.


Example Input

{
"keywords": ["cafe", "dentist"],
"locations": ["New York", "Los Angeles"],
"maxResultsPerSearch": 10
}

This configuration will extract:

  • 10 cafes in New York
  • 10 cafes in Los Angeles
  • 10 dentists in New York
  • 10 dentists in Los Angeles

📦 Output Structure

Each dataset item contains:

{
"name": "Business Name",
"address": "Full Address",
"phone": "+1 234 567 890",
"website": "https://example.com",
"category": "Business Category",
"rating": "4.5",
"reviews": "120"
}

All results are stored in the default Apify Dataset.


📤 Export Options

Data can be exported in:

  • JSON
  • CSV
  • Excel
  • XML

Or accessed programmatically via the Apify API.


🧠 Key Features

  • Multiple keywords and locations in one run
  • Controlled batching per keyword-location pair
  • Automatic deduplication
  • Clean and normalized text output
  • Structured dataset view
  • Stable Playwright-based automation
  • Automatic stop at defined result limit
  • Marketplace-ready performance balance

📈 Performance Notes

  • Default extraction: 10 results per search batch
  • Sequential processing for reliability
  • Performance depends on Google Maps rendering speed
  • Designed for moderate, controlled scraping workloads

⚠️ Limitations

  • Google Maps may apply rate limiting or anti-bot mechanisms
  • Some listings may not display phone numbers or websites
  • Search results depend on Google Maps relevance and geography
  • Country-level searches may produce mixed regional results

🛠 Tech Stack

  • Node.js
  • Apify SDK v3
  • Crawlee
  • Playwright

🛡 Best Practices

For optimal results:

  • Use specific cities instead of entire countries
  • Avoid extremely high limits per batch
  • Space out large-volume runs
  • Monitor dataset quality regularly

📄 Disclaimer

This actor is intended for data research, business intelligence, and automation workflows. Users are responsible for ensuring compliance with Google Maps terms of service and applicable local regulations when collecting and using data.