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:
- Official Google Places API is expensive and strictly rate-limited for bulk queries.
- Third-party SaaS services charge anywhere from $49 to $199/month for lead credits.
- 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
divlayout. - 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:
- Concurrently visits each scraped business website in the background.
- Extracts public contact emails.
- Pulls company social media handles (LinkedIn, Twitter/X, Instagram, Facebook).
- Sanitizes Unicode artifacts and Google icon glyphs (
\uE000-\uF8FF). - 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