· 13 min read
Google Maps Leads Scraper: Up to 2,500 Free Results a Month (2026)
Records cost $2.00 per 1,000 results on the free tier, and the first run example caps at 10 results for at most $0.02. Each result can return up to 32 possible keys covering Google Maps listing details and public website contact points like email addresses and social profiles. It serves sales teams and growth engineers compiling regional B2B prospect lists from storefront directories. It is not for anyone who needs private personal direct-dial phone numbers or named decision-maker profiles, which the public records do not include.
Try it before you read further. Apify's free plan includes $5.00 of usage every month with no credit card, enough for up to 2,500 results at $0.002 each before platform usage. Open Google Maps Leads Scraper on Apify and run the prefilled example.
How reliable is Google Maps Leads Scraper in production?
Across the last 30 days of public runs on the Apify platform, Google Maps Leads Scraper recorded 589 runs with the following outcomes.
| Outcome | Runs | Share |
|---|---|---|
| Succeeded | 557 | 94.6% |
| Failed | 0 | 0.0% |
| Aborted by the user | 17 | 2.9% |
| Timed out | 15 | 2.5% |
| Total | 589 | 100.0% |
In the last 30 days, expect about 3 in a hundred runs to fail or time out. Plan scheduling workflows to account for the 2.5% combined rate of timeouts and failures rather than expecting unhandled exceptions. Add automated retry logic for timed-out runs and keep search batches moderate to stay well within execution limits.
What does it cost to run Google Maps Leads Scraper?
Each result costs $0.002 on Apify's free plan, which is $2.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.
| Apify plan | Per result | Per 1,000 results |
|---|---|---|
| FREE | $0.002 | $2.00 |
| BRONZE | $0.00167 | $1.67 |
| SILVER | $0.00133 | $1.33 |
| GOLD | $0.001 | $1.00 |
| PLATINUM | $0.001 | $1.00 |
| DIAMOND | $0.001 | $1.00 |
Worked example: collecting 10,000 results costs $20.00 in result charges before run-start fees and platform usage. With 2.5% of runs failing or timing out in the last 30 days, budget for re-running a portion of those batches rather than assuming every run completes.
The primary billing driver is max_results, which caps how many lead items write to your dataset. Setting extractEmails increases run duration and compute consumption, but result charges track purely the items delivered. The most economical approach is running with max_results set to 10 on a targeted query before scaling up volume.
How do you run Google Maps Leads Scraper from the API?
None of its 10 controls is strictly required, so the defaults below produce a valid run on their own. The payload below uses the schema's own prefilled values, so it runs as written once you substitute your API token.
Call the synchronous endpoint to start a run and receive dataset items in one request:
curl -X POST "https://api.apify.com/v2/acts/crawlerbros~google-maps-leads/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"category":"bakery","state":"CA","max_results":10,"extractEmails":true,"language":"en","proxyConfiguration":{"useApifyProxy":true}}'
The same run from Python, using the official client:
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run_input = {
"category": "bakery",
"state": "CA",
"max_results": 10,
"extractEmails": True,
"language": "en",
"proxyConfiguration": {
"useApifyProxy": True
}
}
run = client.actor("crawlerbros~google-maps-leads").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
And from Node.js:
import { ApifyClient } from 'apify-client'
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
const input = {
"category": "bakery",
"state": "CA",
"max_results": 10,
"extractEmails": true,
"language": "en",
"proxyConfiguration": {
"useApifyProxy": true
}
}
const run = await client.actor('crawlerbros~google-maps-leads').call(input)
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)
The synchronous endpoint holds the connection open until the run finishes, which is convenient for small batches and wrong for large ones. For anything long running, start the run asynchronously and poll, or attach a webhook, so a dropped connection does not cost you the results.
Which Google Maps Leads Scraper inputs matter, and which can you skip?
The main controls are searchQueries and keyword, which determine the geographic and niche scope of the crawl. For broad national runs, state and category work well together. Leave proxyConfiguration on its default settings, as the system manages proxy escalation internally when needed.
category(string): Predefined Google Maps business category (e.g., bakery, dentist, plumber). Used when keyword is not provided.keyword(string): Custom keyword search. If provided, takes priority over category (e.g., 'boutique coffee', 'pet grooming').state(string): US state filter (2-letter code) or 'All' for nationwide. Only used when country is US or not set. Default:"CA".country(string): Target country for global searches. When set to a non-US country, the state filter is ignored.max_results(integer): Maximum number of business leads to return (1-100,000). Results are pushed progressively. Default:100.minRating(number): Only include businesses with a rating at or above this value (1.0-5.0). Leave empty to include all.extractEmails(boolean): If on, crawls each business website to extract email addresses and social media links. Default:true.language(string): Language for Google Maps interface and results. Default:"en".searchQueries(array): Optional array of free-text Google Maps queries. If provided, overrides the category/keyword+state/country combination.proxyConfiguration(object): Proxy settings. Apify Proxy AUTO is recommended.
Fixed-choice controls: state accepts 51 values (default CA), including CA (California), All (nationwide), AL (Alabama), AK (Alaska); country accepts 14 values, including US (United States), GB (United Kingdom), CA (Canada), AU (Australia); language accepts 11 values (default en), including en (English), es (Spanish), fr (French), de (German).
What does Google Maps Leads Scraper return?
The output supplies essential business intelligence, including ratings, categories, coordinates, and discovered website contact points like email addresses and social handles. It conspicuously lacks personal executive titles, unlisted personal contact numbers, and private employee rosters.
- Maps place data:
name,googleBusinessCategories,street,city,state,zip,country,countryCode,phoneNumber,url,reviewScore,reviewsNumber,placeId,featureId,googleMapsUrl,priceLevel,plusCode, andlocation. - Optional website enrichment (
extractEmails: true):email,emails,websitePhones,contactPageUrl,websitePagesCrawled,facebook,instagram,linkedin,twitter,youtube, andtiktok. - Record context:
recordType,sourceUrl, andscrapedAt.
These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.
How do you build the workflow end to end?
Open Google Maps Leads Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.
- Run an initial probe with searchQueries set to a single entry like ['bakeries in London'] and max_results capped at 10.
- Verify the first run dataset items contain populated name, street, and placeId values before expanding volume.
- Toggle extractEmails to true if your pipeline demands contactPageUrl, email, or social profiles, noting the additional crawl time per lead.
- Set minRating if you want the Actor to filter low-rated businesses before pushing records to the dataset.
- Expand searchQueries into a batch of specific localized queries or configure the category and state fields for broader regional coverage.
- Inspect the returned records to confirm that canonical placeId tokens start with ChIJ and legacy identifiers are kept in featureId.
- Review websitePagesCrawled on enriched records to check the reach of the external domain sweep.
How do you apply it? Three worked playbooks
These are Google Maps Leads Scraper's own documented use cases, each worked through as an operating pattern rather than a description.
Use case 1: Build local prospecting lists
Outcome: Build local prospecting lists with public business details.
Configure: Set category to 'bakery', state to 'CA', extractEmails to false, and max_results to 100.
Working method: Start with a single business category in one state to inspect geographical relevance and base Maps attributes. Check that records return valid phoneNumber, url, and street fields before broadening the search across other US states.
Deliverable: A structured tabular dataset containing local trade leads with names, verified addresses, phone numbers, and web domains.
Stop condition: Stop if returned records show non-target industries or fall outside the requested state boundaries.
Use case 2: Enrich place contact details
Outcome: Enrich place results with contact information from each business website.
Configure: Set searchQueries to ['bakeries in London'], extractEmails to true, and max_results to 50.
Working method: Execute the query with website enrichment turned on. Compare the populated email, emails, and websitePhones keys against the base Maps phone numbers to verify secondary contact collection across public site pages.
Deliverable: A lead list enriched with direct inbox addresses, secondary contact numbers, and social channel profiles.
Stop condition: Stop if websitePagesCrawled consistently returns 0 despite populated url fields in the place records.
Use case 3: Multi-query category comparison
Outcome: Compare categories and locations across several search queries.
Configure: Set searchQueries to ['coffee shops in Tokyo', 'bakeries in Tokyo'], language to 'ja', extractEmails to false, and max_results to 25.
Working method: Submit several contrasting search queries concurrently. Group the output records by placeId to measure market density, category overlap, and average reviewScore across different districts.
Deliverable: A normalized multi-category market overview ready for cross-segment density and rating comparisons.
Stop condition: Stop if the deduplication fails to consolidate identical venues sharing the same placeId across queries.
What breaks, and how do you design around it?
- Optional Google Maps fields are omitted when Google does not publish them, rather than filled with empty or placeholder values.
When Google Maps omits optional fields such as priceLevel or specific street numbers, records will omit those keys entirely instead of populating nulls. Build downstream consumption schemas to treat missing keys gracefully rather than expecting rigid schemas. For large-scale data sweeps, split wide territory searches into distinct regional queries via searchQueries to prevent query timeouts.
When should you not use Google Maps Leads Scraper?
Do not use this Actor if you solely require core place profiles, operating hours, and customer review sentiments without any web-crawled contact details. In that situation, running full enrichment wastes execution time. Instead, deploy Google Maps Scraper to collect baseline business directory items, reviews, and amenities directly. Similarly, if your search is strictly localized around a specific geographic coordinate rather than general keyword discovery, use Google Maps Nearby Places to bound results by precise coordinate distance and category parameters.
What should you check before trusting the output?
- Discard or quarantine records missing placeId or featureId, as downstream deduplication requires at least one persistent identifier.
- Halt execution if street, city, or countryCode are entirely blank across five consecutive records, signaling search query misalignment.
- Flag records where extractEmails is true but websitePagesCrawled is 0, which indicates unreachable or missing domain links in url.
- Ensure email values pass standard RFC address syntax checks before feeding them into outbound outreach sequences.
None of this proves a record is correct. It gives a scheduled Google Maps Leads Scraper run defined points where it should stop instead of quietly passing bad data downstream.
Frequently asked questions
What is the baseline cost to scrape leads with this Actor?
Results cost $2.00 per 1,000 results on the free tier. Run-start charges apply each time execution begins, and standard Apify platform compute usage is billed separately. The default test run with max_results set to 10 incurs at most $0.02 in result charges.
Where does the extracted email and social data come from?
Contact fields do not come from Google Maps. When extractEmails is true, the Actor crawls publicly visible pages on each venue's linked website to find published addresses, phone numbers, and social media URLs.
How reliable is this Actor for scheduled, automated runs?
Across 589 public runs over the last 30 days, 557 succeeded, 0 failed, 17 were aborted by users, and 15 timed out. Together, 2.5% of runs failed or timed out, about 3 in a hundred.
Why are certain fields missing from the output dataset?
The Actor omits fields when source data is unavailable rather than inserting null placeholders. If a business does not list a website or street address on Google Maps, those keys are absent from the record.
Can I search across several different cities or categories at once?
Yes. You can supply an array of phrases inside searchQueries. When populated, this parameter overrides the single category and keyword inputs, pulling records across all specified searches in one run.
Where to go next
When you are ready to run it, open Google Maps Leads Scraper on Apify; the free plan covers up to 2,500 results a month.
Start with the Google Maps Leads Scraper Actor page for the current input schema, pricing tier, and run history.
It is part of the Google Maps Scraping Suite, which puts every related Actor on one page with its price and run history.
If you are comparing approaches rather than committing to one Actor, these category pages list every option we publish:
- Review scrapers covers 182 Actors in this family.
Other Actors we maintain for related data:
- Google Maps Email Extractor: Extract business emails, phone numbers, and social media links from Google Maps.
- Google Maps Nearby Places: Find places near a coordinate.
- Google Maps Similar Places Scraper: Extract 'People also search for' / similar / related places from any Google Maps business page - name, place ID, rating, reviews, category, image, and coordinates.
- Google Maps Scraper: Extract business data from Google Maps including ratings, reviews, contact info, prices, coordinates, and images.
- Google Maps Timezone & Local Time Lookup: Resolve the IANA timezone, current local time, UTC offset, and daylight-saving information for any coordinate.
- Google Maps Directions Scraper: Extract driving, walking, bicycling, and transit directions between any two locations from Google Maps - distance, duration, traffic, route alternatives, and turn-by-turn steps.
- Dentist & Healthcare Provider Lead Scraper: Scrape dentist, doctor, clinic, orthodontist, and other healthcare provider leads from Google Maps.
- Google Maps Geocoding Scraper: Bidirectional geocoding via Google Maps: convert addresses to coordinates (forward) or coordinates to addresses (reverse).
Related guides:
- Google Maps Email Extractor: 3 Practical Use Cases
- Google Maps Nearby Places: Up to 1,000 Free Results a Month (2026)
- Google Maps Scraper: 49 Data Fields, Up to 1,000 Free Results/Month
- Google Maps Geocoding Scraper: 13 Data Fields per Record (2026)
Resources
Actor documentation, input schema, and pricing: verified against the published Actor on 2026-09-27.
Actor last updated by its maintainers on 2026-09-27.
Run outcome figures cover the 30 day public window ending 2026-09-27.
Featured actors
Google Maps Leads Scraper
Scrape business leads from Google Maps. Search by query and extract business name, category, address, phone, website, rating, review count, place ID, and coordinates. Optionally enrich with emails, phone numbers, and social links crawled from each business's website.
Run on Apify ↗