Google Maps Lead Scraper
Pricing
Pay per usage
Google Maps Lead Scraper
Extracts business leads (name, phone, address, website, rating, reviews) from Google Maps search results for any search term and location.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Ayush Khatiwada
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Turn any Google Maps search into a clean, structured list of business leads — names, phone numbers, websites, addresses, and ratings — ready for cold outreach, CRM import, or market research.
Give it a search like dentists in Austin, TX and it returns every listing it
finds as a row of structured data. No manual copy-paste, no browser extensions.
What you get
Each result is one business, with these fields:
| Field | Type | Description |
|---|---|---|
name | string | Business name as shown on the listing |
category | string | Primary Google category (e.g. "Dentist", "Coffee shop") |
phone | string | Public phone number, when the listing shows one |
website | string | Business website URL, when linked |
address | string | Full street address |
rating | number | Average star rating (e.g. 4.5) |
reviewsCount | integer | Total number of reviews |
googleMapsUrl | string | Direct link back to the listing |
searchQuery | string | The query this lead came from |
scrapedAt | string | ISO 8601 timestamp of extraction |
Fields that a listing doesn't publish come back as null rather than being
omitted — so your rows always have the same shape and import cleanly into
spreadsheets and CRMs.
Export as JSON, CSV, Excel, or XML from the console, or pull it straight from the API.
Input
| Option | Type | Default | Description |
|---|---|---|---|
searchQueries | array of strings | required | One search per line. Include the location for best results. |
maxResultsPerQuery | integer | 30 | Cap on listings per query (1–500). |
maxConcurrency | integer | 2 | Queries processed in parallel (1–10). Lower is more reliable. |
proxyConfiguration | object | Apify Proxy on | Strongly recommended — Google rate-limits datacenter IPs quickly. |
Example input
{"searchQueries": ["dentists in Austin, TX","plumbers near Chicago, IL"],"maxResultsPerQuery": 50,"maxConcurrency": 2,"proxyConfiguration": { "useApifyProxy": true }}
Example output
{"name": "Congress Avenue Dental","category": "Dentist","phone": "+1 512-555-0142","website": "https://example-dental.com","address": "1100 Congress Ave, Austin, TX 78701","rating": 4.7,"reviewsCount": 312,"googleMapsUrl": "https://www.google.com/maps/place/...","searchQuery": "dentists in Austin, TX","scrapedAt": "2026-08-24T09:15:22.104Z"}
Typical uses
- Cold outreach lists — pull every plumber, dentist, or gym in a metro with a phone number attached.
- Finding businesses without websites — filter for
website: nullto spot prospects for web design or SEO services. - Competitor and market mapping — see how many competitors operate in an area and how they rate.
- Enriching an existing CRM — match on name and address to backfill missing phone numbers and ratings.
Tips for good results
- Put the location in the query.
"dentists in Austin, TX"works far better than"dentists", which leaves the location up to Google's guess. - Split large areas into several queries rather than raising
maxResultsPerQuery— Google's results feed stops loading after a few hundred entries per search, so ten city-level queries beat one state-level query. - Keep
maxConcurrencyat 1–3. Higher values scrape faster but raise the chance of being rate-limited, which costs you more in retries than it saves. - Leave Apify Proxy enabled. Without rotating IPs, Google will start serving blocks partway through a run.
Limitations — please read
- Only publicly visible listing data is extracted. No emails, no personal profiles, no data behind a login.
- Google changes its page structure periodically. If fields suddenly come
back
null, the selectors likely need an update — please report it and it will be fixed. - Not every listing has every field. Many small businesses never add a
website or phone number; those come back
null. - Result counts are approximate. Google decides how many listings it will load for a given search, so a query capped at 100 may legitimately return fewer.
- Review the terms that apply to you. This extracts public data, but large-scale commercial scraping of Google properties runs against Google's Terms of Service. You are responsible for how you use the output, including compliance with GDPR/CCPA and local marketing regulations when contacting businesses.
Support
Found a broken selector or want a field added? Open an issue on the Actor's issues tab with the search query you used and what you expected — that's the fastest path to a fix.