Pricing
from $10.00 / 1,000 results
Google Maps Business Scraper
Extract business leads from Google Maps by keyword + location. Returns name, address, phone, website, category, rating, review count, and best-effort email β ready for CRM import, cold outreach, or market research. Pay only for the results you receive.
Pricing
from $10.00 / 1,000 results
Rating
0.0
(0)
Developer
Actor stats
0
Bookmarked
4
Total users
1
Monthly active users
a month ago
Last modified
Categories
Share
Google Maps Business Lead Extractor
Pull bulk local business leads from Google Maps by keyword + location. Returns name, address, phone, website, email, opening hours, photos count, rating, review count, plus an AI-style lead score and quality signals for every listing.
Built for sales teams, lead-gen agencies, local marketers, and SMB consultants who need territory-based prospect lists without paying per-seat for legacy data tools.
Why this actor
- Real business contacts β extracts emails from each business's homepage in addition to phone numbers from Google Maps.
- Lead scoring built in β every record ships with a 0β100 lead score and qualitative signals (
high-rating,email-contactable,weak-digital-presence, etc.) so you can filter immediately. - Deduplicated β listings are deduplicated by Google's internal place id, so overlapping searches don't double-charge.
- Geo targeting β anchor the map at a specific lat/lng with
radiusKmto scope results to a territory. - Predictable pricing β pay only per result delivered.
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
keyword | string | yes | β | Business type, e.g. "plumber", "law firm", "coffee shop" |
location | string | yes | β | City / region / ZIP, e.g. "Austin, TX", "94110" |
maxResults | integer | no | 25 | Max business listings to return (1β500) |
radiusKm | integer | no | β | Optional radius (km); needs centerLat + centerLng to take effect |
centerLat | number | no | β | Optional viewport center latitude (used with radiusKm) |
centerLng | number | no | β | Optional viewport center longitude (used with radiusKm) |
scrapeEmail | boolean | no | true | If true, visit each business website and extract an email address |
Example input
{"keyword":"plumber","location":"Austin, TX","maxResults":50}
Output
Each item in the dataset:
{"placeId":"0x865b39e11ea35387:0xf58d36a1244154f1","name":"Reliant Plumbing","category":"Plumber","address":"3841 Ranch Rd 620 S, Austin, TX 78738","phone":"(512) 222-6029","website":"https://reliantplumbing.com/","email":"office@reliantplumbing.com","rating":4.7,"reviewsCount":2897,"photosCount":124,"openingHours":{"Monday":"Open 24 hours","Tuesday":"Open 24 hours","Wednesday":"Open 24 hours","Thursday":"Open 24 hours","Friday":"Open 24 hours","Saturday":"Open 24 hours","Sunday":"Open 24 hours"},"lat":30.3152328,"lng":-97.9479641,"plusCode":"8GG6+H5 Austin, TX","googleMapsUrl":"https://www.google.com/maps/place/Reliant+Plumbing/...","searchKeyword":"plumber","searchLocation":"Austin, TX","categoryTags":["Plumber","home-services"],"qualitySignals":["high-rating","established-volume","has-website","email-contactable","phone-contactable","photo-rich","full-hours-listed"],"leadScore":85,"scrapedAt":"2026-05-15T22:58:51.521Z"}
All data is also exported as CSV / Excel / RSS from the Apify dataset UI β no extra config needed.
Lead score and quality signals
Each record carries a leadScore between 0 and 100, computed from:
- Rating tiers (
high-ratingat β₯ 4.5,low-ratingbelow 3.5) - Review volume (
established-volume,moderate-volume,emerging) - Contact channels (
has-website,email-contactable,phone-contactable) - Listing completeness (
photo-rich,full-hours-listed) - Negative signals (
weak-digital-presence,social-only-presence)
Filter the dataset on leadScore and qualitySignals to triage prospect lists before exporting.
Pricing
Pay-per-result. The Apify Store listing controls the per-record price; you're only charged for records actually delivered to the dataset.
| Volume | Approximate cost |
|---|---|
| 25 | ~$0.25 |
| 100 | ~$1.00 |
| 500 | ~$5.00 |
How it works
- Builds the Google Maps search URL for
${keyword} in ${location}, or anchors the map atcenterLat,centerLngwith a zoom level approximatingradiusKm. - Scrolls the result feed in headless Chromium (Playwright) until
maxResultsunique place URLs are collected (dedup by place id). - Opens each place page, extracts structured fields (name, address, phone, website, hours, photos, lat/lng, rating, review count).
- If
scrapeEmailis enabled, opens each business website and pulls the first validmailto:/ text email, filtering image-filename false positives and known placeholders. - Enriches each record with
categoryTags,qualitySignals, and a 0β100leadScore. - Pushes one row per business to the default Apify dataset.
Runs on apify/actor-node-playwright-chrome:20.
Use cases
- Sales reps building territory call lists with phone + email per business
- Lead-gen agencies filling client CRMs with verified local businesses
- SMB consultants scoping market opportunities in a new city or category
- Franchise / expansion teams mapping competition by ZIP or radius
- Local SEO auditors snapshotting Google Maps presence for a category
Notes
- Best-effort email scraping. Emails are only extracted when present on the business homepage; some businesses use contact forms only.
- For very large geographic areas, prefer running multiple smaller
radiusKmsearches anchored at differentcenterLat,centerLngpoints and dedupe across runs (already deduped within a single run). - Respect Google's terms of service. This actor performs the same fetches a manual user would perform.
