Google Maps B2B Leads & Contact Scraper avatar

Google Maps B2B Leads & Contact Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Google Maps B2B Leads & Contact Scraper

Google Maps B2B Leads & Contact Scraper

Extract business leads from Google Maps including names, addresses, websites, phone numbers, ratings, direct emails, and social media profiles.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Richie C. Tungadi

Richie C. Tungadi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Categories

Share

An Apify Actor that discovers businesses on Google Maps, opens their detail panels, and optionally visits their public websites for contact emails and social profiles.

Input

{
"queries": ["Digital marketing agency Jakarta"],
"maxResults": 20,
"extractEmails": true,
"language": "en",
"proxyConfiguration": {"useApifyProxy": true}
}
  • queries: non-empty search strings; exact duplicate queries are removed.
  • maxResults: 1–500 leads per query, default 20. This is a limit, not a guarantee.
  • extractEmails: default true; checks the homepage and at most one same-host contact/about page. Email deliverability and ownership are not verified.
  • language: default en. Card parsing recognizes English/Indonesian opening statuses and comma/dot decimal ratings. Other languages may leave fields empty.
  • proxyConfiguration: default {"useApifyProxy": true}. Supports Apify proxy groups or custom proxy URLs. Set {"useApifyProxy": false} for a direct run. A requested proxy must initialize successfully; there is no silent direct fallback. The same configured proxy is used for browser and contact-site requests.

Output

The default dataset contains query, title, category, address, phone, website, emails, socials, rating, reviewsCount, status, latitude, longitude, and googleMapsUrl. Missing source fields may be null or absent. Coordinates come from the business URL, never the map viewport center. Apify can export the dataset as JSON/CSV/Excel. No CRM integration is included.

Per-lead detailError or contactErrors records incomplete extraction. The RUN_SUMMARY key-value record contains totals and per-query outcomes. Failed queries cause a failed run after other queries finish; already saved leads remain available. Website failures preserve the business lead and show up in the summary. An explicit no-results page is a completed query with zero leads. An unknown or blocked page is a query failure, not a successful empty result.

Local development

Use Python 3.12+ and an isolated environment:

python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -r requirements.txt
.\.venv\Scripts\python.exe -m playwright install chromium
.\.venv\Scripts\python.exe -m unittest discover -s tests -v

To include browser integration fixtures, set $env:RUN_BROWSER_TESTS = "1" and rerun the unittest command above. These fixtures use routed local HTML.

For a small direct smoke test, save the following as storage/key_value_stores/default/INPUT.json:

{"queries":["Coffee shops Jakarta"],"maxResults":3,"extractEmails":false,"proxyConfiguration":{"useApifyProxy":false}}

Then run .\.venv\Scripts\python.exe -m src. Results are in local Apify storage. For deployment, connect this repository in Apify Console and build the Actor. The Docker image and Python Playwright package are both pinned to 1.60.0; update both together. The Actor uses root Dockerfile/README auto-discovery.

Operational limits

This uses Google Maps DOM selectors, which can change. CAPTCHA/consent pages and regional layouts can prevent extraction; proxies do not guarantee access. Maps and website visits are sequential; contact requests run in a worker thread so Actor/browser events remain responsive. No high-volume throughput is promised. Data is deduplicated within each query by Maps URL; a business matching different queries may appear once for each query. There is no cross-run resume/deduplication. Website JavaScript is not rendered for contact discovery. Runtime input validation and regression tests do not replace a live Apify smoke test on your target region.