How to Find Local Business Leads on Google Maps
A useful prospect list starts with a service and a place, not a large pile of email addresses. If you work with dental practices in Warsaw, the first question is whether each result is actually a practice in the area you serve. Contact details and a proposed sales angle come afterward.
The Local Google Maps Lead Scraper collects business listings and can visit their websites for contact information. I maintain this Actor on Apify. This guide starts with ten places in one search, then turns the output into a list you can review before importing it into a CRM.

Decide what makes a business relevant
Choose one business category and one city. Write down the service you offer and the evidence you would need to decide whether a business might benefit from it.
For example, a web-design agency could check whether a practice has a website and a usable appointment or contact page. Those are review questions, not permission to claim that the practice has a broken website. A missing field in a scrape is a reason to inspect the source, not a diagnosis.
Be careful with the filters. If you want to find businesses without websites, turning on onlyWithWebsite removes the very prospects you were looking for. If you require a phone number, onlyWithPhone can help, but first confirm that your regional search is returning phone data correctly.
Run one search with website enrichment
Open the Actor, sign in to Apify, and switch the Input editor to JSON:
{
"searchQueries": ["dentists in Warsaw"],
"country": "pl",
"language": "en",
"maxPlacesPerSearch": 10,
"maxRequestsPerCrawl": 30,
"maxConcurrency": 2,
"includeClosedBusinesses": false,
"includeTemporarilyClosed": false,
"enrichWebsite": true,
"aiEnrichment": false
}
The country code matters. The current schema says it affects the search region and, in many regions, whether results include phones and websites. Match it to the city in your query rather than leaving the location context implicit.
maxPlacesPerSearch limits discovered places for each query. maxRequestsPerCrawl is a separate limit on requests across the crawl. Filters, duplicates, unavailable pages, and request limits can all reduce the final lead count. Ten discovered places are not a promise of ten delivered leads or ten email addresses.
Website enrichment is enabled here so you can inspect contact information. AI enrichment is off because the first task is to verify business fit and the source data. The current input no longer exposes a proxy configuration field; use the controls in this example rather than copying an older proxy block.
Click Start, then open the dataset and inspect the log. Check a few business names, addresses, Maps links, and websites before increasing the search size. If the first results are in the wrong area, fix the query and country instead of broadening the crawl.
Understand the three charges
Pricing as of September 6, 2026:
| Event | Price |
|---|---|
| Unique lead delivered after filtering and deduplication | $0.008 |
| Website enrichment that returns useful data | Additional $0.004 |
| Successful optional AI enrichment | Additional $0.012 |
The Actor also has a start event of $0.00005 per GB of allocated memory, with at least one event. Ten delivered leads with useful website enrichment on all ten correspond to $0.12 in lead and website event fees, before the start charge. If AI enrichment also succeeds on all ten, it adds $0.12.
A website event does not require an email to be found. The documented useful results include social links, contact pages, detected technology, or a page title. Check the live pricing and the run's event breakdown before assuming that website charges equal email-address counts.
Keep business facts separate from enrichment
The output groups the data you need for different decisions:
| Fields | What to check |
|---|---|
businessName, category, address, businessStatus | Is this the right type of business, in your service area, and currently operating? |
placeId, cid, googleMapsUrl | Which listing does the row describe? |
website, phone, websiteEnrichment | Which contact details and website findings need verification? |
leadScore, leadScoreReason | Why did the tool rank this lead, and does that reason matter to your offer? |
The screenshot below comes from an earlier run and illustrates the dataset layout. It is not a current verification of the listed businesses.

The documentation's score uses signals such as a website, phone, email, social links, and review volume. A high score can mean that the business has accessible information. It does not prove purchase intent, budget, or a problem your service solves.
Build a review sheet before a contact list
Export CSV with the business identity, Maps URL, website, phone, score, and score reason. Use JSON when you need the complete nested website-enrichment object. Add your collection time, service-area check, website checked, fit notes, and review status.
First, remove or flag businesses that do not fit the category or area. Keep branches distinct if your service is location-specific. Deduplicating only by website domain can incorrectly merge several locations of the same business.
Next, open the website for the remaining candidates. Confirm that it belongs to the business and inspect the contact page. An extracted address may be a general inbox, an old address, or a contact for another party mentioned on the site. Keep the source context and select a relevant business contact only after review.
Finally, write one factual reason for retaining each prospect. “Practice in our service area; appointment page reviewed” is a useful note. “Needs a new website” is a claim that requires evidence beyond an empty scraper field.
The Actor documents deduplication using several identifiers within its collection workflow. Keep your own stable IDs when importing or combining runs; do not assume a new scheduled run checks your CRM's existing records.
Use AI suggestions as drafts
Enable aiEnrichment only after the basic workflow is useful. Its output can add a business summary, fit assessment, suggested pitch, pain points, and recommended offer. Review those suggestions against the collected website evidence before using them.
A generated pain point is not a fact just because it appears in a structured field. Remove unsupported statements, especially claims about a business's performance or customer experience. This guide creates a reviewed prospect list and draft ideas; sending messages is a separate action.
If you want to enrich an existing lead file instead of discovering businesses, the AI lead enrichment guide covers that separate workflow.
Diagnose missing contacts before adding more cities
If many businesses lack phones or websites, check country and compare a few Maps listings manually. If website enrichment is empty, verify that it was enabled and review the website request results. A site may be unavailable or may not expose the contact data you expected.
If the lead count is low, inspect the business filters and both limits. The README describes a practical Maps result ceiling around 120 for a search, even though the Actor accepts a larger discovery cap. A larger number in the input does not guarantee all businesses in a city.
Once the first list is useful, save the input as an Apify task. Preserve query, country, date, and review notes between exports so you can distinguish a new business from a previously reviewed one.
For a coded workflow, see the Google Maps Node.js example. Use the current actor name and input fields when adapting an older example.
Frequently asked questions
Does the Actor find email addresses on Google Maps?
Website enrichment visits the business website to look for contact information. Finding a Maps listing does not guarantee an email address, and a returned address still needs review.
Does maxPlacesPerSearch cap the whole run?
No. It limits discovered places per search. maxRequestsPerCrawl is a separate request limit across the crawl. Neither guarantees a particular number of delivered leads after filters and deduplication.
Does a high lead score mean a business wants my service?
No. The score summarizes signals such as available contact information and review volume. Read leadScoreReason and verify that the business fits your offer before treating it as a qualified prospect.
