Google Maps Tech Stack & Lead Enrichment
Pricing
from $3.50 / 1,000 enriched business leads
Google Maps Tech Stack & Lead Enrichment
Finds public Google Maps business listings and optionally visits each public website for emails, social links, and deterministic technology signals.
Pricing
from $3.50 / 1,000 enriched business leads
Rating
0.0
(0)
Developer
Shwetanshu Mehta
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
This Actor reads public Google Maps search result HTML and returns the phone number when the listing publishes one. When a listing exposes a public website, it also makes a bounded same-site crawl for contact emails, social links, and deterministic technology markers. It does not use private credentials, CAPTCHA bypasses, undocumented authenticated APIs, or invented enrichment.
Input
In the form view, add each search as a separate item in Search keywords. Do not paste the complete JSON object into that individual field.
If you use the full JSON input editor, paste the complete object below:
{"searchKeywords": ["plumbers in Austin TX", "dental clinics in Miami"],"maxResults": 200,"maxPagesPerKeyword": 5,"maxRetries": 2,"proxyConfiguration": { "useApifyProxy": false },"languageCode": "en","countryCode": "us","deepCrawlWebsites": true,"detectTechStack": true}
maxResults is the run-level cap. The Actor requests up to maxPagesPerKeyword pages of roughly 20 places per keyword and stops when a page has no new places. Failed or challenged Google result pages get at most maxRetries retries. Proxying is opt-in; when enabled, each attempt uses a fresh proxy session. Business website enrichment stays direct to avoid multiplying proxy bandwidth. Public-site markup and anti-bot behavior can change; challenge pages are detected, retries are bounded, and CAPTCHAs are never solved or bypassed. Unexpected empty result pages are reported as bounded, query-stripped warnings in RUN_SUMMARY instead of being silently treated as healthy.
Output
Each dataset item contains placeId, title, rating, address, phone, website, emails, socialLinks, techStack, techEvidence, hasMetaPixel, and bounded crawl diagnostics. phone is the public Google Maps phone number when available; otherwise it is null. techEvidence explains why a technology was reported, and Universal Analytics is kept distinct from GA4. enrichmentStatus, qualityScore, and isChargeable make completeness explicit.
Example record:
{"title": "Austin Premier Plumbing","address": "123 Main St, Austin, TX","phone": "+1 512-555-0100","website": "https://austinpremierplumbing.com/","emails": ["contact@austinpremierplumbing.com"],"techStack": ["WordPress", "Google Tag Manager"],"techEvidence": { "WordPress": ["HTML contains a WordPress asset or marker"] },"enrichmentStatus": "enriched","qualityScore": 100,"isChargeable": true,"searchKeyword": "plumbers in Austin TX"}
Resource controls
- One search and one website page are processed at a time; no unbounded
Promise.allfan-out. - Response bodies are streamed with a hard byte limit before parsing.
- Website queues, visited URLs, emails, links, and technology markers are capped.
- Optional proxy dispatchers are short-lived and closed after each Google result-page attempt.
- Dataset records are pushed immediately instead of retaining the result set.
Monetization
The manifest declares the enriched-lead pay-per-event at $0.0035 per useful record ($3.50 per 1,000). Listing-only rows without a phone, email, social link, or technology signal are still returned for transparency but are not charged.
Local development
npm installnpm testnpm run checkapify validate-schema .actor/input_schema.jsonapify run --purge