All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog ,
and this project adheres to Semantic Versioning .
Initial release of Google Maps Business Scraper
PlaywrightCrawler with residential proxy support and automatic rotation
Infinite scroll pagination handling with scroll height tracking
Business listing extraction with comprehensive fields:
Name, address, phone, website
Rating, review count, price level
Categories, photo URLs
Geographic coordinates (latitude/longitude)
Google Maps place ID
Optional review extraction with configurable depth (maxReviewsPerBusiness)
Session management with automatic IP rotation on blocking:
markGood() on successful scrape
retire() on blocking/captcha detection
markBad() on server errors (5xx)
Input validation with required searchQuery field
Comprehensive error handling and logging
maxScrolls limit to control pagination depth
maxResults limit to cap total extracted businesses
Local development support with INPUT.json fallback
Comprehensive README with usage examples and troubleshooting
Actor marketplace metadata (actor.json, input_schema.json, output_schema.json)
Dockerfile with Node.js 24 and Playwright Chrome support
Built on Apify SDK 3.5.3 and Crawlee 3.16.0
Uses apify/actor-node-playwright-chrome:24 base image
Default configuration: maxConcurrency: 3, maxRequestRetries: 5, requestHandlerTimeoutSecs: 300
SessionPool with maxPoolSize: 100 for optimal proxy rotation
Residential proxy groups: ["RESIDENTIAL"] (required for Google Maps anti-bot evasion)