Extract business details from Google Maps by search query: name, address, phone, website, rating, hours, coordinates, and optionally email addresses. Pay only for records you receive ($0.003/result).
Email extraction from business websites (PPE event EMAIL_EXTRACTED at $0.005). Enable with includeEmails=true input.
Contact-page fallback: if homepage has no email, scraper also tries /contact, /contact-us, /kontakt, /contacto, /impressum, /about. Significantly higher hit rate than homepage-only.
mailto: link priority over regex text scan (higher precision).
Noise filtering: excludes noreply, postmaster, sentry.io, wixpress.com and similar false positives.
Changed
extract_email() signature unchanged (internal only) — consumers call the same function.
[0.2.0] — 2026-04-21
Added
Concurrent scraping: new concurrency input parameter (1–20, default 5). Five parallel workers deliver 3–5x faster throughput on large queries.
Retry logic: each failed place is retried up to 3 times with exponential backoff (2 s, 5 s). Partial failures no longer abort the entire run.
Place URL deduplication: duplicate listings that appear multiple times in the Google Maps sidebar are filtered before scraping.
Per-place timeout: 90-second hard cap per listing prevents stuck workers from blocking the queue.
Error counter: run completion log now reports X saved, Y failed for visibility into partial failures.
Fixed
reviewsCount now populated: DOM selector updated to div.F7nice span[aria-label*='reviews'] with regex-based integer extraction. Previously always returned null.
priceLevel now populated: DOM selector updated to span.mgr77e with leading · character stripped. Previously always returned null.
Changed
Input schema: concurrency field added.
Browser context moved to run() level — shared across all queries. Previously a new browser context was created per query.
[0.1.0] — 2026-04-21
Added
Initial release: Google Maps Business Scraper.
Pay-Per-Event pricing: $0.003 per record, $0.005 per email (when includeEmails=true).
Input: searchQueries, maxResultsPerQuery (1–1000), language (EN/CS/DE/ES/FR), includeEmails, includePhotos.