# Changelog of Google Maps Lead Extractor Pro (`eloquent_mountain/google-maps-lead-extractor-pro`) Actor

- **URL**: https://apify.com/eloquent\_mountain/google-maps-lead-extractor-pro/changelog.md
- **Full Actor documentation**: https://apify.com/eloquent\_mountain/google-maps-lead-extractor-pro.md

## Changelog

All notable changes to Google Maps Lead Extractor Pro will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

### \[1.0.1] - 2026-08-08

#### Fixed

- 🐛 **Runs no longer hit the platform run timeout.** Automated QA runs were being
  aborted at the 300s mark and marked as failed, with an empty dataset. Three
  causes, all fixed:
  - The actor ran with the platform's default memory allocation, which grants only
    a fraction of a CPU core. Chromium was CPU-starved for the whole run (autoscaling
    stayed pinned at concurrency 1), so a single consent check could take 30+ seconds.
    `defaultMemoryMbytes`/`minMemoryMbytes` now request 4096 MB — one full CPU core.
  - The run deadline was only checked when a request *started*. A business page takes
    tens of seconds, so one accepted a few seconds before the deadline still overran
    the hard timeout. Requests are now admitted only if enough time remains to finish
    them, and a hard-exit safety net abandons any wedged request before the platform
    can kill the run.
  - Businesses were saved only after their website visit completed, so a run that
    stopped early reported *zero* results despite having scraped many. Scraped
    businesses whose enrichment never ran are now flushed to the dataset on exit.
- 🐛 **Review extraction returned 0 reviews** while still costing ~40s per business.
  It slept on fixed timers and matched overly broad containers; it now waits for the
  review list to actually render and reads it from the real review containers.

#### Changed

- ⚡ Blocks images, fonts and media, and navigates on `domcontentloaded` instead of
  `load` — the single biggest reduction in per-page time. Photo URL extraction is
  unaffected.
- ⚡ Cookie consent is detected with one cheap CSS query instead of probing six
  selectors (including expensive `:has-text()` ones) on every page.
- ⚡ Every wait, navigation and selector timeout is now clamped to the time actually
  left in the run.
- 🔧 `maxResults` prefill lowered from 10 to 5 so the console's prefilled example run
  finishes comfortably.

#### Note

The Actor's **default run timeout** is a platform setting and cannot be expressed in
`.actor/actor.json`. See DEPLOYMENT.md — raise it in the Apify Console for large
`maxResults` values.

### \[1.0.0] - 2025-10-31

#### Added

- 🎉 Initial release of Google Maps Lead Extractor Pro
- ✅ Multi-query search support for batch processing
- ✅ Comprehensive business data extraction:
  - Business name, category, rating, review count
  - Address, phone number, website
  - Operating hours and Plus Code
  - Geolocation coordinates (latitude/longitude)
- ✅ Review extraction with configurable limits
- ✅ Email discovery from business websites
- ✅ Social media profile extraction (Facebook, Instagram, LinkedIn, Twitter)
- ✅ Photo URL extraction
- ✅ Multi-language support (9 languages)
- ✅ Configurable concurrency for performance optimization
- ✅ Apify proxy integration for reliability
- ✅ Multiple export formats (JSON, CSV, Excel)
- 📚 Comprehensive documentation:
  - README with features and use cases
  - DEPLOYMENT guide for Apify platform
  - EXAMPLES with real-world use cases
  - Utility functions for data processing
- 🛠️ Utility functions:
  - Lead scoring algorithm
  - CRM formatting (Salesforce, HubSpot, Pipedrive)
  - Data deduplication
  - Filtering and sorting helpers
  - Summary statistics generation
- 🎯 Input schema with validation
- 🐳 Docker configuration for Apify deployment
- 📊 Dataset views for result visualization

#### Technical Details

- Built with Apify SDK v3.0
- Uses Playwright for browser automation
- Crawlee v3.0 for web crawling
- Node.js 18+ runtime
- Modular architecture for easy maintenance

#### Performance

- \~50-100 businesses per minute (basic scraping)
- \~30-50 businesses per minute (with email extraction)
- \~20-30 businesses per minute (with reviews + emails)
- Configurable concurrency (1-20 parallel browsers)

#### Known Limitations

- Email extraction success depends on website accessibility
- Some websites may block automated access
- Google Maps may rate-limit requests without proxies
- Review extraction limited to visible reviews on page

### \[Unreleased]

#### Planned Features

- \[ ] Advanced email validation and verification
- \[ ] Phone number formatting and validation
- \[ ] Sentiment analysis for reviews
- \[ ] Automatic lead scoring with ML
- \[ ] Integration with more CRMs (Zoho, Pipedrive API)
- \[ ] Webhook notifications for completed runs
- \[ ] Incremental updates (only scrape new/changed businesses)
- \[ ] Export to additional formats (XML, Parquet)
- \[ ] Business hours parsing and normalization
- \[ ] Duplicate detection across multiple runs
- \[ ] Custom field extraction via CSS selectors
- \[ ] API endpoint for real-time scraping
- \[ ] Dashboard for analytics and insights

#### Potential Improvements

- \[ ] Optimize memory usage for large datasets
- \[ ] Add retry logic for failed requests
- \[ ] Implement caching for visited websites
- \[ ] Add support for more social media platforms (TikTok, YouTube)
- \[ ] Improve address parsing for international addresses
- \[ ] Add geofencing for location-based filtering
- \[ ] Implement rate limiting controls
- \[ ] Add support for Google Maps categories
- \[ ] Create browser extension for easy configuration

***

### Version History

#### Version Numbering

- **Major (X.0.0)**: Breaking changes, major new features
- **Minor (1.X.0)**: New features, backward compatible
- **Patch (1.0.X)**: Bug fixes, minor improvements

#### Release Schedule

- **Patch releases**: As needed for bug fixes
- **Minor releases**: Monthly for new features
- **Major releases**: Quarterly for significant updates

***

### Migration Guides

#### Migrating to v1.0.0

This is the initial release, no migration needed.

***

### Support

For issues, feature requests, or questions:

- 🐛 **Bug Reports**: Create an issue in Apify for this actor
- 💡 **Feature Requests**: Create an issue in Apify for this actor

***

**Note**: This changelog follows the [Keep a Changelog](https://keepachangelog.com/) format and uses [Semantic Versioning](https://semver.org/).
