Google Maps Business Scraper
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
Don Johnson
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
1
Monthly active users
8 days 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.