Automated Google Maps Business Scraper
Web AppFeatured

Automated Google Maps Business Scraper

Completed: April 2025

About This Project

Description:

This tool is a powerful Node.js & Puppeteer-based scraper that automates the extraction of business data from Google Maps. It allows users to provide keywords, locations, or geolocation coordinates and retrieves structured business information including names, addresses, phone numbers, websites, and distances within a specified radius.

Designed for marketers, researchers, or businesses needing bulk business data, the scraper supports real-time progress updates, duplicate filtering, and invalid data handling, ensuring reliable and efficient data collection.


Functionalities:

  • ๐Ÿ” Keyword & Location Search โ€“ Input any keyword and a location or use live geolocation to target specific areas.

  • ๐Ÿข Business Data Extraction โ€“ Scrapes name, phone number, website, address, and calculates distance from a given point.

  • ๐Ÿ“ Radius Filtering โ€“ Only returns businesses within a specified radius in meters/kilometers.

  • ๐Ÿ” Duplicate Handling โ€“ Automatically detects and skips duplicate entries.

  • ๐Ÿšซ Invalid Data Filtering โ€“ Skips entries with missing or malformed addresses.

  • ๐Ÿ“ก Real-Time Streaming โ€“ Uses Server-Sent Events (SSE) to stream progress and results live to the client.

  • ๐Ÿงญ Geocoding & Distance Calculation โ€“ Converts locations to coordinates and calculates distances using Node-Geocoder + Geolib.

  • ๐Ÿ—„๏ธ Caching โ€“ Stores geocoding results with Node-Cache for 24 hours to speed up repeated searches.

  • โš™๏ธ Error Handling & Logging โ€“ Detailed logs for debugging, automatic screenshots on scraping errors.

  • ๐Ÿ–ฅ๏ธ Headless Browser Automation โ€“ Puppeteer navigates Google Maps, scrolls listings, and extracts relevant data efficiently.


Technology Stack:

Frontend / Client:

  • โš›๏ธ React.js โ€“ Dynamic user interface (maps-scraper-client/src/App.js)

  • ๐ŸŒ HTML5 & CSS3 โ€“ Public pages (index.html, styles.css)

  • ๐Ÿ–ฅ๏ธ JavaScript โ€“ Client-side logic (script.js)

  • ๐Ÿ”„ Server-Sent Events (SSE) โ€“ Real-time log & data streaming to the browser

Backend / Scraper Engine:

  • ๐ŸŸข Node.js with Express.js โ€“ API endpoints (/api/scrape, /api/scrape-stream)

  • ๐Ÿค– Puppeteer โ€“ Automated browser for Google Maps navigation & scraping

  • ๐Ÿ—บ๏ธ Node-Geocoder + LocationIQ API โ€“ Converts typed locations into latitude/longitude

  • ๐Ÿ“ Geolib โ€“ Distance calculations between user location and businesses

  • ๐Ÿ—„๏ธ Node-Cache โ€“ Stores geocoding results for repeated searches

  • ๐ŸŒ

  • โ€“ Handles API requests safely

Additional Tools / Features:

  • ๐Ÿ“‚ Automatic scrolling & panel handling to extract all visible businesses

  • ๐Ÿ”„ Deduplication & invalid address skipping for cleaner datasets

  • ๐Ÿ“ธ Automatic screenshots for debugging failures

  • โฑ๏ธ Configurable maximum results & timeout handling


Project Gallery

Technologies Used

react.jsHTML5CSS3Server-Sent Events (SSE)Node.js with Express.jsPuppeteerNode-Geocoder + LocationIQ APIGeolibNode-cacheCORS & JSON Middleware

Interested in a similar project?

Let's discuss how we can help bring your vision to life.