๐Ÿ“ Google Maps Leads Scraper avatar

๐Ÿ“ Google Maps Leads Scraper

Pricing

from $4.90 / 1,000 results

Go to Apify Store
๐Ÿ“ Google Maps Leads Scraper

๐Ÿ“ Google Maps Leads Scraper

Scrape Google Maps into ready-to-use business leads: name, address, phone, website, rating, reviews, hours, categories and socials. Search by term and location or paste Maps URLs. Rich filters, no API key, results streamed live.

Pricing

from $4.90 / 1,000 results

Rating

0.0

(0)

Developer

Data Minds

Data Minds

Maintained by Community

Actor stats

0

Bookmarked

23

Total users

3

Monthly active users

11 days ago

Last modified

Security

Limited permissions

Share

What is Google Maps Leads Scraper?

Google Maps Leads Scraper turns Google Maps searches into ready-to-use business lead lists. Enter a search term and a location, or paste Maps links, and get names, addresses, phone numbers, websites, ratings, emails and social profiles. No API key is needed. From $0.0049 per lead on the Gold plan.

Just add a search term such as coffee shop, add a place such as Austin, Texas, and click Start. No coding is needed. Typical ways to use it:

  • Lead generation for agencies: Google Maps lead generation for agencies and local businesses starts with a lead list by category and city, imported into your CRM. Extract business leads from Google Maps by niche, then generate B2B leads from Google Maps for each client.
  • B2B prospecting: use it as a prospecting tool for B2B lead generation on Google Maps. Build a lead list for sales prospecting with websites, phones and emails, and find local business phone numbers in one run. It shows how to scrape Google Maps for B2B leads without manual copying.
  • Cold email lead list: build a cold email lead list for local businesses, or Google Maps leads for cold email outreach, by keeping places with a website and checking each email.
  • Find businesses without a website: the Website filter returns businesses without websites as leads. It works as a Google Maps missing website finder. Google Maps no website leads make good web design prospects.
  • Local market research: compare ratings, categories and opening status across a city, county or postal code.
  • Scheduled list building: run the same search on a schedule so your lead data stays fresh.

Because it runs on Apify, you also get the API, scheduling, webhooks, integrations and export of Google Maps data to CSV, Excel, JSON, XML or HTML. It works as a Google Maps scraper without an API key.

What can Google Maps Leads Scraper do?

  • ๐Ÿ” Google Maps extractor for bulk search: run many search terms in one run, with places de-duplicated across the whole run.
  • ๐Ÿ“ง Google Maps email extractor: add emails, phone numbers and eight kinds of social profile links for businesses that have a website.
  • ๐ŸŽฏ Google Maps lead finder with filters: category keywords, minimum rating, name matching, with or without a website, skip closed places.
  • ๐Ÿ“ž Google Maps contact extractor: each lead can carry a listing phone, website phones and social media links in one row.
  • ๐Ÿ“ Scraper by city or zip code: use a free-text location, or city, county, state and postal (zip) code, plus country and language. Get Google Maps leads by category and city.
  • ๐Ÿ”— Start from Maps links: paste place links instead of search terms.
  • โœ… Check emails: optionally flag disposable, free-mail and role addresses and whether each email looks deliverable.

What data can Google Maps Leads Scraper extract?

Every lead is one dataset item. These are the exact field names.

DataFields
๐Ÿช Businesstitle, description, categoryName, categories
๐Ÿ“ Addressaddress, street, neighborhood, city, state, postalCode, countryCode
๐Ÿงญ Locationlocation (lat, lng), timeZone
๐Ÿ“ž Phone from the listingphone, phoneUnformatted
๐ŸŒ Websitewebsite
โญ RatingtotalScore
๐Ÿ•’ Status and hourstodayHours, openStatusText, permanentlyClosed, temporarilyClosed
๐Ÿ“ Attributes and photoadditionalInfo, imageUrl
๐Ÿ”‘ Identifiers and linkplaceId, cid, googleKgId, url
๐Ÿ”Ž Search contextrank, searchString
๐Ÿ“ง Website contactsemails, phones, phonesUncertain
๐Ÿ”— Social profileslinkedIns, twitters, instagrams, facebooks, youtubes, tiktoks, pinterests, discords
โœ… Email checksemailsVerification
๐Ÿšซ Always emptyprice, reviewsCount, claimThisBusiness

Each lead carries Google Maps ratings and opening hours data, and coordinates as latitude and longitude data, in one record. Google Maps social media links appear in the social fields.

Note: website, phone and description are empty when the place does not list them. emails, phones, phonesUncertain and the social fields are filled only when the place has a website and Collect emails & social profiles is on. emailsVerification is filled only when Verify email addresses is on.

What data can't Google Maps Leads Scraper extract?

  • Review text and review counts: reviewsCount is always null.
  • Price level and ownership status: price and claimThisBusiness are always null.
  • The full weekly schedule: only todayHours and openStatusText are returned.

For a different lead workflow, see the Google Maps Email And Phone Number Scraper.


How to scrape Google Maps leads

This Actor is designed for an easy start, even if you have never extracted data from the web before.

  1. Create a free Apify account with your email.
  2. Open Google Maps Leads Scraper.
  3. Add one or more search terms in Search terms (searchStringsArray).
  4. Enter a Location (locationQuery) and set Places per search term (maxCrawledPlacesPerSearch).
  5. Switch filters on or off, such as Website filter or Minimum rating.
  6. Click Start and wait for the run to finish.
  7. Download your leads in JSON, CSV, Excel, XML or HTML from the Output tab.

How much does it cost to scrape Google Maps?

This Actor uses pay-per-event pricing: you pay for each lead saved to the dataset, and Apify platform usage is billed in addition. The price per lead depends on your Apify plan.

PlanPrice per leadPrice per 1,000 leads
Free$0.007$7.00
Bronze$0.0054$5.40
Silver$0.0056$5.60
Gold$0.0049$4.90

A small start charge applies to every run: $0.00005 per GB of memory, minimum one event. The default memory is 4,096 MB (4 GB), so each run starts with 4 events, which is $0.0002.

Worked example: collecting 1,000 leads on the Gold plan costs $4.90 for results plus the $0.0002 start charge, with platform usage billed in addition. Collecting 500 leads on the Free plan costs $3.50.

Is scraping Google Maps free?

You can start for free. The Apify Free plan includes $5 of monthly credit, which covers about 714 leads at the Free price of $0.007 per lead ($5 divided by $0.007), before platform usage. See the pricing tab for all events.


Input

The only required input is Search terms. Set the input in the Actor interface or send it as JSON through the API. This example searches for coffee shops in Austin and collects 20 places:

{
"searchStringsArray": ["coffee shop"],
"locationQuery": "Austin, Texas",
"maxCrawledPlacesPerSearch": 20,
"proxyConfiguration": {
"useApifyProxy": false
}
}

See the input schema for the full description of every field.

FieldTypeRequiredDefaultDescription
searchStringsArrayarrayYesnoneWhat to look for, one term per line. Every term is searched separately.
locationQuerystringNoemptyFree-text place such as Berlin, Germany.
maxCrawledPlacesPerSearchintegerNo20Places to collect per search term (1 to 5000).
startUrlsarrayNoemptyDirect Google Maps place links.
languagestringNoenLanguage of names, categories and descriptions.
countryCodestringNousCountry view to search from.
city, state, county, postalCodestringNoemptyPrecise area fields, combined into one search area.
categoryFilterWordsarrayNoemptyKeep a business only if one word appears in its categories or description.
searchMatchingstringNoallall, only_includes or only_exact name matching.
placeMinimumStarsstringNoemptyMinimum rating, from two to fourAndHalf.
websitestringNoallPlacesallPlaces, withWebsite or withoutWebsite.
skipClosedPlacesbooleanNofalseLeave out closed businesses.
scrapeWebsiteContactsbooleanNotrueCollect emails, phones and social links from each business website.
contactMaxSubpagesintegerNo3Extra contact or about pages per website (0 to 10).
skipBigChainsbooleanNotrueSkip contact collection for a short list of global chains.
verifyEmailsbooleanNofalseCheck every email found.
proxyConfigurationobjectNo{"useApifyProxy": false}Optional network settings. Leave the default unless you need your own.
browserFallbackbooleanNotrueAdds an extra retry step for difficult requests.
maxConcurrencyintegerNo5Business websites opened at the same time (1 to 20).
requestDelaySecondsnumberNo0.8Pause between requests (0 to 10).
maxRetriesintegerNo3Retries per request (1 to 10).

Location fields

Use either locationQuery or the precise fields. If locationQuery is filled, it is used and city, county, state and postalCode are ignored.

  • โœ… Good: "locationQuery": "Manhattan, NYC"
  • โœ… Good: "city": "Miami", "state": "Florida" with locationQuery empty
  • โŒ Bad: "locationQuery": "Austin" together with "postalCode": "78701" (the postal code is ignored)

Warning: Location is not applied to links in startUrls. With no location at all, the search is not limited to any area.

Places per search term and filters

maxCrawledPlacesPerSearch limits how many places are collected per term before your filters run. Filters such as placeMinimumStars, website, categoryFilterWords and skipClosedPlaces then remove places, so you can receive fewer leads than the limit.

  • โœ… Good: raise the limit when you use strict filters.
  • โŒ Bad: expect exactly 20 leads when placeMinimumStars is four and the limit is 20.

Warning: Unrated places are dropped whenever a minimum rating is set.

Paste place links into startUrls to collect specific businesses, one link per line. The business named in the link is looked up and the exact match is preferred in the results.

  • โœ… Good: a link that opens one business on Google Maps.
  • โŒ Bad: a link to your own saved list or to a page that is not a business.

Output

Leads are saved to the run dataset and appear in the Output tab as they are found. Choose a table view (Lead Overview, Contacts, Social Profiles, Location & Map, Business Profile, Email Verification or Source & IDs), select only the fields you need, and download in JSON, CSV, Excel, XML or HTML.

JSON example

Results for the input example above, with one lead shown:

{
"rank": 1,
"searchString": "coffee shop",
"title": "Example Coffee Roasters",
"description": "Neighborhood coffee shop.",
"price": null,
"categoryName": "Coffee shop",
"categories": ["Coffee shop", "Cafe"],
"address": "100 Example Street, Austin, TX 78701, United States",
"neighborhood": "Downtown",
"street": "100 Example Street",
"city": "Austin",
"postalCode": "78701",
"state": "Texas",
"countryCode": "US",
"website": "https://www.example.com/",
"phone": "(512) 555-0100",
"phoneUnformatted": "+15125550100",
"claimThisBusiness": null,
"location": {"lat": 30.2672, "lng": -97.7431},
"totalScore": 4.6,
"permanentlyClosed": false,
"temporarilyClosed": false,
"placeId": "ChIJexample0000000001",
"cid": "0x1111111111111111:0x2222222222222222",
"googleKgId": "/g/example",
"url": "https://www.google.com/maps?cid=1234567890",
"imageUrl": "https://www.example.com/photo.jpg",
"timeZone": "America/Chicago",
"todayHours": "7 am to 6 pm",
"openStatusText": "Open",
"additionalInfo": {"Accessibility": [{"Wheelchair accessible entrance": true}]},
"reviewsCount": null,
"emails": ["hello@example.com"],
"phones": ["+15125550101"],
"phonesUncertain": [],
"linkedIns": [],
"twitters": [],
"instagrams": ["https://www.instagram.com/example"],
"facebooks": ["https://www.facebook.com/example"],
"youtubes": [],
"tiktoks": [],
"pinterests": [],
"discords": [],
"emailsVerification": []
}

Email verification example

With verifyEmails set to true, emailsVerification contains one object per email:

{
"emailsVerification": [
{
"email": "hello@example.com",
"free": false,
"role": true,
"error": "",
"quality": "good",
"result": "ok",
"subResult": "accepted_email"
}
]
}

Run summary example

Each run also saves a run-summary record in the key-value store:

{
"source": "google-maps",
"scrapedAt": "2026-01-01T12:00:00+00:00",
"leads": 20,
"searches": 1,
"placesFound": 20,
"placesSkippedByFilters": 0,
"leadsWithEmail": 12,
"leadsWithPhone": 19,
"leadsWithWebsite": 15,
"leadsWithSocialProfile": 10,
"emailsCollected": 18,
"durationSeconds": 45.2,
"perSearch": [{"search": "coffee shop Austin, Texas", "found": 20, "kept": 20}]
}

Notes and limitations

  • Only today's opening hours are returned, not the full week.
  • price, reviewsCount and claimThisBusiness are present in every row but always null.
  • A phone number from the listing is in phone. Numbers found on websites are in phones, and less certain ones are in phonesUncertain.
  • Not every business publishes an email, so some leads have an empty emails list.

Tips and advanced usage

How many results can you scrape with Google Maps Leads Scraper?

The number of leads depends on how many places match your search, your filters, and the limit you set. A single search term returns at most about 600 places in one run, even if the limit is higher. The best way to know for your use case is a quick test run with 10 to 20 places.

How to get faster or cheaper results

  • Lower maxCrawledPlacesPerSearch for a sample before a full run.
  • Set contactMaxSubpages to 0 or 1 to finish faster when you only need the homepage contacts.
  • Turn off scrapeWebsiteContacts if you only need listing data.
  • Split a large city into several searches by postal code to reach more places.
  • Keep verifyEmails off unless you need the extra checks.

Known issues

  • While skipBigChains is on, contact collection is skipped for a short list of global chains, so those leads have empty contact lists.
  • Businesses that publish no website or no email return empty contact lists.

Integrations and API

Can I use Google Maps Leads Scraper as an API?

Yes. The Apify API gives you programmatic access to this Actor: start runs, schedule them and fetch results. Use the apify-client package for Node.js or Python. See the API tab for ready-to-use code.

How to scrape Google Maps with Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("data_minds/google-maps-leads-scraper").call(run_input={
"searchStringsArray": ["coffee shop"],
"locationQuery": "Austin, Texas",
"maxCrawledPlacesPerSearch": 20,
"proxyConfiguration": {"useApifyProxy": False},
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["emails"])

Can I integrate Google Maps Leads Scraper with other apps?

Yes. Extract leads from Google Maps to Google Sheets, Make, Zapier, Slack and more through Apify integrations. Use webhooks to trigger an action when a run finishes, and use Apify schedules to rerun a search daily, weekly or monthly.

Can I use Google Maps Leads Scraper with AI agents (MCP)?

Yes. Connect it to Claude and other AI assistants through the Apify MCP server. Open the MCP tab for setup steps.


Other Google Maps scrapers

ActorWhat it does
๐Ÿ“ง Google Maps Email And Phone Number ScraperFinds business emails and phone numbers behind Google Maps places, with email verification and generic-address filters.
๐Ÿ”— Dubai Real Estate Scraper โ€” Unit Number & DLD Permit CheckerScrape Dubai real estate listings and get the DLD-verified unit number, RERA permit status, price, size and agent contacts.
๐ŸŽฏ Website Lead IntelligenceTurns a list of company websites into a scored outreach list with verified emails and named decision-makers.
๐Ÿ”— Podcast Directory Scraper โ€” Host Contacts & EmailsSearch the Apple Podcasts directory by keyword, chart or link and get host emails, owner names, websites, social profiles, ratings, publishing...

FAQ

Web scraping is generally legal when you extract publicly available data, but respect personal data rules such as GDPR and the site's terms. Collect personal data only for a legitimate reason. Read Is web scraping legal? for background. This is not legal advice; consult a lawyer.

How does Google Maps Leads Scraper work?

You give it search terms and a location, or Maps links. The run collects the matching businesses, applies your filters, adds contact details from each business website if you enabled that option, and saves one lead per business to the dataset. You then export the results or fetch them through the API.

Why scrape Google Maps leads?

Google Maps lists local businesses with their category, address and rating. Collecting that data into a spreadsheet lets you build prospect lists for sales, find businesses without a website for web design offers, compare competitors in a city, and prepare cold email outreach, instead of copying details by hand one listing at a time.

Can I get emails from Google Maps?

Yes, when the business has a website. Keep Collect emails & social profiles on, and the Actor adds any emails, phone numbers and social links it finds on that website to the lead. Businesses that publish no email return an empty list. You can also turn on email verification to flag weak addresses.

Why am I getting fewer results than expected?

The limit applies to places collected before your filters. Minimum rating, website filter, category keywords, name matching and closed-place filters remove places afterwards. Duplicate places across search terms are also removed. Raise the places limit, loosen the filters, widen the location, or split a large area into several searches.

How do I find businesses without a website?

Set the Website filter to withoutWebsite and run your search. Only places that list no website are saved. You can combine it with a minimum rating and a category word to focus on well-rated businesses in one niche, which makes a useful prospect list for web design or marketing services.

Can I export Google Maps leads to CSV or Excel?

Yes. Every run stores results in a dataset that you can download as JSON, CSV, Excel, XML or HTML. Pick a table view or select only the fields you need first. You can also send the results to Google Sheets with an integration or read them through the Apify API.

Google Maps Leads Scraper not working?

First, check the run log and the input. Make sure Search terms is filled, the location is spelled correctly, and your filters are not too strict. Then try a smaller test run. If the problem continues, open an issue on the Issues tab with your run link so the team can look into it.


Support and feedback

Found a bug or have a feature request? Please create an issue on the Issues tab.

Need a custom solution or more data? Contact us at hello.dataminds@gmail.com.

Built and maintained by the data_minds team on Apify. This Actor is an independent tool, is not affiliated with or endorsed by Google Maps, and you are responsible for using the data in line with applicable laws and terms.