Google Maps Scraper: Business Leads with Phones & Emails
Pricing
from $1.00 / 1,000 places
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
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?
| Field | Example |
|---|---|
name | Craft of Dentistry |
category, categories | Dentist; Dental implants provider; Emergency dental service |
address | 7002 Menchaca Rd #100, Austin, TX 78745 |
street, city, state, postalCode, countryCode | 7002 Menchaca Rd #100 · Austin · Texas · 78745 · US |
phone, phoneE164 | +1 512-812-8956 · +15128128956 |
website, domain | https://www.dentistsouthaustintx.com/ · dentistsouthaustintx.com |
rating, reviewsCount | 5 · 957 |
openingHours | Monday 8:30 AM–5 PM, with 24-hour periods for software |
isClaimed | false when Google invites the owner to claim the listing |
isPermanentlyClosed, isTemporarilyClosed | false · false |
lat, lng, timezone | 30.2016 · -97.8074 · America/Chicago |
placeId, cid, googleMapsUrl | ChIJlS5kj59MW4YRUnAMiWbswWk · link to the place |
description, imageUrl | Google's short description and main photo |
emails, socials | info@example.com · Facebook, Instagram, LinkedIn... (with enrichment) |
How to scrape Google Maps
- Open the Input tab and enter one or more search terms, for example
dentistorplumber. - Enter a location such as
Austin, TX, a postal code like10001, USA, or a whole state or country. To search around a point instead, fill in the center point and radius. - Set Max places per search term. This also caps what you pay.
- Optionally add filters (minimum rating, website, category) and turn on Find emails and social profiles on websites.
- Click Start. Places appear in the Output tab as they are found.
- 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:
| Event | Price |
|---|---|
| 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 found | Free |
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.7431with 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,barandcafefind more places thanrestaurant,restaurantsandfood. 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
isClaimedto find businesses that never claimed their Google listing. - Use Category contains to drop loosely related results; for example
dentistkeeps "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, thenclient.actor("stratumics/google-maps-scraper").call(run_input={"searchTerms": ["dentist"], "location": "Austin, TX"}). - JavaScript:
import { ApifyClient } from 'apify-client', thenclient.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
Is it legal to scrape Google Maps?
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.
How many places can I get from one search?
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.