We have developed a specialized internal tool designed to aggregate business lead data directly from Google Maps. Unlike simple HTML parsers, this application is a full-browser automation suite that mimics real user interaction to reliably extract high-value data points (Names, Addresses, Phone Numbers, Websites, Ratings) from local business searches.
The system is built on Node.js and Playwright, chosen for their speed and reliability in handling dynamic Single Page Applications (SPAs) like Google Maps. It operates by launching a controlled Chromium instance that physically navigates, scrolls, and clicks through search results, ensuring that the data captured is exactly what a human user would see.
The Logic Flow
Initialization: The system boots up and asks the user for a target source—either a quick manual entry or a bulk config.json file containing hundreds of search terms (e.g., "Plumbers in New York", "Coffee Shops in Seattle").
Browser Emulation: A "Headful" (visible) or Headless Chromium browser is launched with sophisticated flags to disable automation detection tracks, using realistic User-Agent strings and viewport settings.
Search & Scroll: For each keyword, the scraper performs a search and locates the "Feed" container. It intelligently executes a scroll loop, monitoring the network and DOM to ensure new items are loaded, stopping only when the user-defined limit is reached or the "End of list" marker is found.
Deep Extraction: Uniquely, our scraper doesn't just grab the list view. It iterates through loaded results, clicking each one to open the detailed side panel. This allows access to hidden fields often not visible in the grid view.
Data Serialization: Extracted data is cleaned (whitespace trimmed, phone numbers normalized) and pushed to a CSV writer which saves the results for immediate use in marketing pipelines.
Like this project
Posted Dec 22, 2025
Developed a Node.js and Playwright tool to extract business lead data from Google Maps.