Google Maps Scraper: Business Leads with Phones & Emails avatar

Google Maps Scraper: Business Leads with Phones & Emails

Pricing

from $1.00 / 1,000 places

Go to Apify Store
Google Maps Scraper: Business Leads with Phones & Emails

Google Maps Scraper: Business Leads with Phones & Emails

Get the businesses on Google Maps for any search and area: name, address, phone, website, rating, review count, opening hours, plus emails and social profiles. No 120-place limit.

Pricing

from $1.00 / 1,000 places

Rating

0.0

(0)

Developer

Stratum ICS

Stratum ICS

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

What does Google Maps Scraper do?

Google Maps Scraper extracts business listings from Google Maps for any search term and location: name, address, phone number, website, star rating, review count, opening hours, category and Google place ID. Turn on contact enrichment and it also visits each business website to add email addresses and social media profiles, so a single run gives you a lead list you can load into a CRM.

Type what you are looking for ("dentist", "roofing contractor", "coffee shop") and where ("Austin, TX", "Manchester, UK", "Bavaria, Germany"). The scraper covers the whole area, not just the first screen of results, and returns one clean row per place. Use it from the Apify Console, through the Apify API as a Google Maps API alternative, or from any AI agent connected to Apify.

Why use this Google Maps scraper?

  • No 120-place limit. Google Maps shows a limited number of places per search. This scraper splits dense areas into smaller map views until each one is fully covered, then removes duplicates, so a city search returns hundreds or thousands of places instead of a short list.
  • Cities, counties, states and whole countries. Write the location the way you would type it into Google Maps. For a country or a state, places across the border are left out, so "Germany" does not bring back Swiss or Austrian businesses.
  • Lead-ready fields. Phones in international and E.164 format, the website and its domain, claimed or unclaimed listing status, structured opening hours, coordinates, the Google place ID and CID.
  • Emails and social profiles on demand. With enrichment on, each website's homepage and contact pages are read for emails and Facebook, Instagram, LinkedIn, X, YouTube, TikTok, Pinterest and WhatsApp links. You pay the extra fee only when something is found.
  • Pay only for places you keep. Places removed by your filters (minimum rating, with or without website, category, closed places) are skipped for free.
  • Fast and light. Plain HTTP requests and no browser: 1,000 places usually take about a minute.

Typical uses: lead generation for agencies and sales teams, building prospect lists by city and category, finding businesses without a website or with an unclaimed Google listing (ideal prospects for web design and local SEO services), market and competitor research, and keeping a local business directory up to date.

What data can you extract from Google Maps?

FieldExample
nameCraft of Dentistry
category, categoriesDentist; Dental implants provider; Emergency dental service
address7002 Menchaca Rd #100, Austin, TX 78745
street, city, state, postalCode, countryCode7002 Menchaca Rd #100 · Austin · Texas · 78745 · US
phone, phoneE164+1 512-812-8956 · +15128128956
website, domainhttps://www.dentistsouthaustintx.com/ · dentistsouthaustintx.com
rating, reviewsCount5 · 957
openingHoursMonday 8:30 AM–5 PM, with 24-hour periods for software
isClaimedfalse when Google invites the owner to claim the listing
isPermanentlyClosed, isTemporarilyClosedfalse · false
lat, lng, timezone30.2016 · -97.8074 · America/Chicago
placeId, cid, googleMapsUrlChIJlS5kj59MW4YRUnAMiWbswWk · link to the place
description, imageUrlGoogle's short description and main photo
emails, socialsinfo@example.com · Facebook, Instagram, LinkedIn... (with enrichment)

How to scrape Google Maps

  1. Open the Input tab and enter one or more search terms, for example dentist or plumber.
  2. Enter a location such as Austin, TX, a postal code like 10001, USA, or a whole state or country. To search around a point instead, fill in the center point and radius.
  3. Set Max places per search term. This also caps what you pay.
  4. Optionally add filters (minimum rating, website, category) and turn on Find emails and social profiles on websites.
  5. Click Start. Places appear in the Output tab as they are found.
  6. Download the results as CSV, Excel, JSON or HTML, or send them to Google Sheets, HubSpot, Zapier, Make or n8n.

How much does it cost to scrape Google Maps?

You pay per place saved, plus a small fee for places where contact enrichment finds something:

EventPrice
Place saved (all Google Maps fields)$0.0015 ($1.50 per 1,000)
Emails or social profiles found on the place's website$0.0015 ($1.50 per 1,000)
Places removed by filters, duplicates, websites with nothing foundFree

1,000 places cost about $1.50. With contact enrichment on, if 700 of those 1,000 businesses show an email or a social profile on their website, the run costs $1.50 + $1.05 = $2.55. Apify's free plan includes $5 of monthly credit, enough for more than 3,000 places.

Larger Apify plans pay less per place automatically: $1.20 per 1,000 on Scale and $1.00 per 1,000 on Business, with contacts at $1.20 and $0.90. Each run also has a start fee of $0.00005.

Input

See the Input tab for every option. Example:

{
"searchTerms": ["dentist"],
"location": "Austin, TX",
"maxPlacesPerSearch": 500,
"minRating": 4,
"websiteFilter": "all",
"skipClosedPlaces": true,
"scrapeContacts": true,
"language": "en",
"countryCode": "us"
}
  • Location: a city, region, postal code, neighborhood or country. Add a radius to search only near its center. Leave the location empty to write it inside the search term instead ("dentist in Austin"); that mode returns only what Google shows for that one search.
  • Center point and radius: 30.2672, -97.7431 with a 5 km radius searches a circle; only places inside it are saved.
  • Language and country: change them to get categories and opening hours in another language and local address formats.

Output

You can download the dataset in various formats such as JSON, HTML, CSV or Excel. Two records from real runs, trimmed (opening hours shortened to two days):

{
"placeId": "ChIJlS5kj59MW4YRUnAMiWbswWk",
"cid": "7620631969617702994",
"name": "Craft of Dentistry",
"category": "Dentist",
"categories": ["Dentist", "Dental implants provider", "Denture care center", "Emergency dental service"],
"address": "7002 Menchaca Rd #100, Austin, TX 78745",
"street": "7002 Menchaca Rd #100",
"city": "Austin",
"state": "Texas",
"postalCode": "78745",
"countryCode": "US",
"lat": 30.201578899999998,
"lng": -97.80743729999999,
"phone": "+1 512-812-8956",
"phoneE164": "+15128128956",
"website": "https://www.dentistsouthaustintx.com/",
"domain": "dentistsouthaustintx.com",
"rating": 5,
"reviewsCount": 957,
"openingHours": [
{ "day": "Monday", "hours": "8:30 AM–5 PM", "periods": [{ "open": "08:30", "close": "17:00" }] },
{ "day": "Tuesday", "hours": "8:30 AM–5 PM", "periods": [{ "open": "08:30", "close": "17:00" }] }
],
"isPermanentlyClosed": false,
"isTemporarilyClosed": false,
"isClaimed": true,
"googleMapsUrl": "https://www.google.com/maps/search/?api=1&query=Craft%20of%20Dentistry&query_place_id=ChIJlS5kj59MW4YRUnAMiWbswWk",
"timezone": "America/Chicago",
"searchTerm": "dentist",
"searchLocation": "Austin, TX",
"rank": 5,
"scrapedAt": "2026-10-18T01:07:45.458Z"
}

With contact enrichment on, each record also carries emails and socials:

{
"name": "Austin Lifetime Dental",
"address": "2206 W Parmer Ln, Austin, TX 78727",
"phone": "+1 512-835-1924",
"website": "https://www.lifetimedental.com/?utm_source=GMB&utm_medium=organic&utm_campaign=DevOptimization&utm_content=Website",
"rating": 4.9,
"reviewsCount": 847,
"emails": ["info@lifetimedental.com"],
"socials": {
"facebook": "https://facebook.com/austindental",
"instagram": "https://instagram.com/austinlifetimedental",
"linkedin": "https://linkedin.com/company/austin-lifetime-dental",
"twitter": null,
"youtube": "https://youtube.com/@austinlifetimedental",
"tiktok": null,
"pinterest": null,
"whatsapp": null
}
}

Tips for better results

  • Use distinct search terms. restaurant, bar and cafe find more places than restaurant, restaurants and food. Places found by several terms are saved once.
  • Search a whole state or country with a high maximum. The scraper keeps splitting the map where businesses are dense, so you do not need to list cities one by one.
  • Selling websites? Set Website to "Only places without a website". Selling local SEO? Sort by isClaimed to find businesses that never claimed their Google listing.
  • Use Category contains to drop loosely related results; for example dentist keeps "Cosmetic dentist" but drops "Dental supply store".
  • Large enrichment runs read several pages per website. For tens of thousands of places, raise the run timeout in the run options.
  • Schedule the scraper monthly to keep a lead list or directory fresh.

Integrations and API

  • API: start runs and download results from any language. The API tab has ready code in Python, JavaScript and cURL.
  • Python: from apify_client import ApifyClient, then client.actor("stratumics/google-maps-scraper").call(run_input={"searchTerms": ["dentist"], "location": "Austin, TX"}).
  • JavaScript: import { ApifyClient } from 'apify-client', then client.actor('stratumics/google-maps-scraper').call({ searchTerms: ['dentist'], location: 'Austin, TX' }).
  • No-code: Zapier, Make, n8n, Google Sheets, HubSpot and Slack from the Integrations tab, for example to append new leads to a sheet after every scheduled run.
  • AI agents: connect any MCP-capable assistant to Apify's MCP server (mcp.apify.com) and it can call this scraper as a tool to find local businesses.

FAQ

This scraper collects business information that Google Maps shows to every visitor, plus the contact details businesses publish on their own websites to be contacted. It does not log in and does not collect reviews or reviewer profiles. Your results can still contain personal data, for example a sole trader's name or a named employee's email. Personal data is protected by the GDPR in the European Union and by other laws around the world, so only collect it when you have a legitimate reason, and consult a lawyer if you are unsure. When you email or call the businesses you find, follow the anti-spam and telemarketing rules of their country (for example CAN-SPAM, PECR and the GDPR). Also consider Google's Terms of Service for your use case.

As many as Google Maps lists in the area. The scraper is not capped at the 120 places Google shows per search: it searches smaller and smaller parts of the map where results are dense. A search for dentists across Austin, TX returned more than 1,200 places.

Why do some places have no phone number or website?

Not every business adds them to its Google listing. Service-area businesses (plumbers, roofers, cleaners) often hide their street address too. Those fields are null rather than empty strings.

Why is priceLevel usually empty?

Google shows a price level for only a small share of places in search results, mostly some restaurants and hotels. The field is filled when Google provides it.

What does isClaimed mean?

false means Google shows the "Own this business?" link, so the listing has never been claimed by its owner. true means the listing has an owner. null means Google does not say, for example for vacation rentals.

Does it scrape Google reviews?

Not this Actor: it gives the star rating and the number of reviews for each place, which is what most lead lists need. For the reviews themselves (text, date, reviewer, owner reply), use our Google Maps Reviews Scraper.

What exactly does contact enrichment charge for?

The extra fee applies only to places whose own website showed at least one email address or social profile. Websites that are down, blocked or show nothing are free, and so are places without a website.

Found a problem or need a field?

Open an issue in the Issues tab with the input you used. Every issue is read and usually answered within a day.

Other tools from Stratum ICS

  • App Store Reviews Scraper: Get Apple App Store reviews with star ratings, titles, text, app versions, helpful votes and developer replies, well past Apple's 500-review limit, for any country, plus app ratings.
  • Google News Scraper: Get Google News articles with real publisher URLs (not Google redirects), source, date, image, author and optional full text.
  • Google Play Reviews Scraper: Get Google Play reviews with star ratings, text, app versions, thumbs-up counts, developer replies and feature ratings in any language, plus app details with installs and star histogram.
  • Google Trends Scraper: Get Google Trends data as JSON, CSV or Excel: interest over time, interest by region and city, related queries, and trending searches by country.
  • LinkedIn Jobs Scraper: Scrape LinkedIn jobs with full descriptions, salary ranges, seniority, job type and applicant counts.
  • Telegram Channel Scraper: Get messages from public Telegram channels with views, dates, media, reactions, polls and forwards, plus channel info with exact subscriber counts.
  • Website Contact Scraper: Turn a list of websites into one row per company with verified emails, formatted phone numbers, social profiles (LinkedIn, Facebook, Instagram, X), address and contact page.
  • YouTube Scraper: Get YouTube videos from searches, channels, playlists and links with exact views, likes, comment counts, dates and tags, plus channel profiles and comments.