DEV Community

Cover image for I Built a Zero-Config Google Maps Lead Scraper with Playwright (No Docker, No Python, No API Keys)
Md Aquil
Md Aquil

Posted on

I Built a Zero-Config Google Maps Lead Scraper with Playwright (No Docker, No Python, No API Keys)

If you have ever tried extracting local business leads from Google Maps for outreach, sales, or data research, you know the struggle:

  1. Official Google Places API is expensive and strictly rate-limited for bulk queries.
  2. Third-party SaaS services charge anywhere from $49 to $199/month for lead credits.
  3. Existing Open-Source tools often come with heavy friction: requiring Docker Desktop background daemons, complex Python virtual environments, or outdated Puppeteer scripts that break on Google's modern dynamic feeds.

I wanted something instant, lightweight, and local-first — so I built ziara-lead-scrapper, an open-source CLI built with Node.js, TypeScript, and Playwright.


💡 The Problem with Scraping Google Maps

Standard HTTP scrapers (like Axios, Cheerio, or BeautifulSoup) instantly fail on Google Maps because:

  • Results are dynamically injected via client-side JavaScript.
  • Dynamic infinite scroll containers inside an internal div layout.
  • Regional cookie consent banners that block page loads.
  • Strict anti-automation checks on headless browsers.

🛠️ How It Works Under the Hood

1. Zero-Friction Browser Orchestration

Instead of forcing users to install Docker or configure external binaries, the tool leverages Playwright Chromium.
If a standalone Chromium binary isn't detected, it automatically falls back to your local Google Chrome or Microsoft Edge installation.

2. Built-in Anti-Bot Stealth

  • Automatically masks navigator.webdriver.
  • Realistic scroll pacing and micro-delays mimicking human interaction.
  • User-agent rotation and automated cookie consent dismissal.

3. Automated Lead Enrichment (--enrich)

Basic business info (Phone, Address, Rating, Reviews, Website) is good, but contact emails and social profiles are what turn raw data into actionable leads.

When you pass the --enrich flag, the scraper:

  1. Concurrently visits each scraped business website in the background.
  2. Extracts public contact emails.
  3. Pulls company social media handles (LinkedIn, Twitter/X, Instagram, Facebook).
  4. Sanitizes Unicode artifacts and Google icon glyphs (\uE000-\uF8FF).
  5. Exports everything cleanly into CSV or JSON.

🚀 Quickstart: Try It in 60 Seconds

You only need Node.js 18+ installed:


bash
# 1. Clone the repository
git clone https://github.com/Aquil1401/ziara-lead-scrapper.git
cd ziara-lead-scrapper

# 2. Install dependencies & build
npm install
npm run build

# 3. Run a test search
node dist/bin/index.js -q "Coffee Shops in Austin" -l 20 --enrich
Enter fullscreen mode Exit fullscreen mode

Top comments (0)