Google Map Business Scraper
Pricing
from $9.10 / 1,000 results
Google Map Business Scraper
Scrapes business information from Google Maps including name, address, phone, website, ratings, opening Hours and more.
Pricing
from $9.10 / 1,000 results
Rating
4.9
(3)
Developer
Goldmine
Maintained by CommunityActor stats
24
Bookmarked
523
Total users
9
Monthly active users
2 days ago
Last modified
Categories
Share
๐ Google Maps Business Scraper โ Google Maps Scraper for Local Leads

This Google Maps scraper turns any search on Google Maps into a clean list of businesses. Type what you are looking for โ "dentist", "coffee shop", "plumber" โ and where, and it returns every business Google Maps shows for that search: name, categories, full address, phone number, website, star rating, number of reviews, price range, opening hours for each day of the week, coordinates and the Google Place ID. Sales teams use it to build lead lists, marketers to map local competitors, and analysts to size a market city by city.
Give it one or more search terms and a location, or paste Google Maps links, and get back one row per business as JSON, CSV or Excel. No Google account, API key or browser extension is needed.
๐ Key Features
- ๐ Search by keyword and location โ run many search terms in one location, or paste Google Maps search and place links
- ๐งพ Complete business profiles โ name, categories, description, address split into street, city, postal code, state and country, phone in local and international format, website, rating, reviews count, price range, weekly opening hours, latitude and longitude, Place ID and CID
- ๐ Automatic pagination โ follows the results list page by page until
maxItemsis reached per search term, or Google Maps has no more results - โป๏ธ No duplicates โ a business found by two of your searches is returned, and charged, once
- ๐ธ Spend control โ stops finding businesses as soon as the maximum cost you set for the run is reached
- ๐ก๏ธ No login needed โ works on public Google Maps data; proxy settings are yours to choose
- ๐ค Multiple export formats โ JSON, CSV, Excel, XML via the Apify dataset
- ๐ Schedulable runs โ re-run the same searches weekly to catch new businesses and changed opening hours
๐ฅ Who Is This Actor For?
- Sales and business development teams โ building Google Maps leads lists of local businesses with phone numbers and websites
- Marketing agencies โ prospecting for clients by industry and city, and auditing clients' local competitors
- Market researchers and analysts โ counting and mapping businesses by category, rating and neighbourhood
- Franchise and real estate teams โ scouting locations by the density of nearby competitors
- Data and CRM teams โ enriching and de-duplicating business records with Place IDs
- ๐ค AI builders โ feeding local business data into agents and retrieval pipelines through the Apify API or MCP server
๐ก Common Use Cases
- Export all dentists in Austin with phone numbers and websites to a spreadsheet
- Find every coffee shop in a neighbourhood with its rating and number of reviews
- Build a cold-calling list of plumbers, electricians or roofers in several cities
- Compare opening hours and price ranges of restaurants in a district
- Collect Google Place IDs for a list of businesses to use with other tools
- Track new businesses opening in a category by scheduling the same search every week
๐ Supported URL Types
Search terms are the simplest input. You can also paste Google Maps links into Google Maps URLs:
| URL Type | Example |
|---|---|
| Search results | https://www.google.com/maps/search/pizza+in+Brooklyn |
| Place page | https://www.google.com/maps/place/Le+Cafe+Coffee/@40.76,-73.97,17z/data=!4m6!3m5!1s0x89c2590014a48ff9:0x34466e9af9759422... |
| CID link | https://maps.google.com/?cid=3766819750231249954 |
Short maps.app.goo.gl share links are not supported: open them in a browser and copy the full link from the address bar.
๐ฅ Input
| Field | Type | Description | Default |
|---|---|---|---|
searchTerms | Array | What to search for, one term per line, for example dentist or coffee shop. Each term is searched in location. | โ |
location | String | Where to search: a city, neighbourhood, region or postcode, for example Manhattan, NY. Leave empty if your search terms already include a place. | โ |
startUrls | Array | Google Maps search or place links (see Supported URL Types). | โ |
maxItems | Integer | Maximum number of businesses to return per search term and per search URL. | 20 |
scrapePlaceDetails | Boolean | Adds reviews count, price range and opening hours for every day of the week. Turn off for a quicker run without those three fields. | true |
language | String | Language of categories, descriptions and opening hours text, as a two-letter code (en, de, fr, esโฆ). | en |
proxyConfiguration | Object | Proxy servers used to reach Google Maps. Apify datacenter proxies are enough for most runs. | {"useApifyProxy": true} |
Provide at least one search term or one Google Maps URL.
Example Input
{"searchTerms": ["dentist", "plumber"],"location": "Austin, TX","maxItems": 60,"scrapePlaceDetails": true,"language": "en","proxyConfiguration": {"useApifyProxy": true}}
๐ค Output
Each dataset item is one business:
| Field | Type | Description |
|---|---|---|
searchQuery | String | The search this business was found by (search term with location, or the URL) |
rank | Integer | Position in the Google Maps results for that search, starting at 1 |
name | String | Business name |
category | String | Main Google Maps category |
categories | Array | All Google Maps categories |
description | String | Short description shown on Google Maps, when there is one |
address | String | Full address |
street, neighborhood, city, postalCode, state, countryCode | String | Address components |
phone | String | Phone number as shown on Google Maps |
phoneInternational | String | Phone number in international (E.164) format |
website | String | Business website |
rating | Number | Average star rating, 1 to 5 |
reviewsCount | Integer | Number of Google reviews |
priceRange | String | Price range, when Google Maps shows one |
openingHours | Array | Opening hours for each day, Monday first: { "day", "hours" } |
permanentlyClosed | Boolean | True when Google Maps marks the business as permanently closed |
latitude, longitude | Number | Coordinates |
timezone | String | Time zone of the business |
placeId | String | Google Place ID, usable with the Google Places API |
cid | String | Google Maps customer ID (CID) |
googleMapsUrl | String | Link to the business on Google Maps |
sourceUrl | String | Google Maps link of the search or place the result came from |
scrapedAt | String | When the business was scraped (ISO 8601) |
reviewsCount, priceRange and openingHours are null when scrapePlaceDetails is off. Any field Google Maps does not show for a business is null.
Example Output
{"searchQuery": "dentist in Austin, TX","rank": 4,"name": "South Austin Dentist","category": "Dentist","categories": ["Dentist"],"description": null,"address": "3901 S Lamar Blvd Ste 480, Austin, TX 78704","street": "3901 S Lamar Blvd Ste 480","neighborhood": "South Lamar","city": "Austin","postalCode": "78704","state": "Texas","countryCode": "US","phone": "(737) 437-3801","phoneInternational": "+17374373801","website": "http://southaustindentisttx.com/?utm_source=gbp&utm_medium=organic&utm_campaign=yext_listing","rating": 4.9,"reviewsCount": 178,"priceRange": null,"openingHours": [{ "day": "Monday", "hours": "8 AMโ4 PM" },{ "day": "Tuesday", "hours": "8 AMโ4 PM" },{ "day": "Wednesday", "hours": "8 AMโ4 PM" },{ "day": "Thursday", "hours": "8 AMโ4 PM" },{ "day": "Friday", "hours": "Closed" },{ "day": "Saturday", "hours": "Closed" },{ "day": "Sunday", "hours": "Closed" }],"permanentlyClosed": false,"latitude": 30.237298499999998,"longitude": -97.7902045,"timezone": "America/Chicago","placeId": "ChIJf5afhV5LW4YRy--94BL_3jg","cid": "4097993167498768331","googleMapsUrl": "https://www.google.com/maps?cid=4097993167498768331","sourceUrl": "https://www.google.com/maps/search/dentist+in+Austin%2C+TX","scrapedAt": "2026-09-24T16:38:59.145Z"}
You can export the dataset as JSON, CSV, Excel, XML, RSS, or HTML from the Apify Console or via the Apify API. The Contacts view in the Console shows just names, phone numbers, websites and addresses, ready for a CRM import.
๐ฐ Pricing
This Actor is pay per event (you pay per result): $0.0099 per business, so 1,000 businesses cost $9.90, with lower per-result prices on higher Apify plans. A business found by two of your searches is charged once. Set a maximum cost for the run in the Console and the Actor stops at that limit. A free Apify account is enough to try it.
โ FAQ
What is the Google Maps Business Scraper?
It is a Google Maps business scraper that searches Google Maps for a type of business in a location and returns each result as a structured record with contact details, rating, reviews count and opening hours. You can use it wherever you would otherwise copy businesses out of Google Maps by hand.
How do I scrape Google Maps for a list of businesses?
Enter one or more search terms, a location and how many businesses you want per search, then start the run. To scrape Google Maps for several cities, run the Actor once per city or paste one Google Maps search link per city into Google Maps URLs.
Do I need a Google account, cookies or an API key?
No. The Actor reads the same public information anyone sees on Google Maps without signing in.
Do I need a proxy?
The default Apify datacenter proxy is enough for most runs. You choose the proxy in the input: switch to residential proxies only if the log reports that Google Maps refused requests.
How many results can I get per run?
maxItems limits results per search term and per search URL, so three search terms with maxItems: 50 return up to 150 businesses. Google Maps itself stops showing results after a limited number of places for one search โ for a larger area, split it into smaller locations (neighbourhoods or postcodes) and add each as a search.
Does it handle pagination automatically?
Yes. It follows the results list page by page until it reaches maxItems or Google Maps has no more results.
Why is priceRange empty for some businesses?
Google Maps shows a price range only for some businesses, mostly restaurants and cafรฉs. When it is not shown, the field is null.
Can I get emails and social media profiles?
This Actor returns what Google Maps shows, which does not include emails. Use the Google Maps Contact & Social Media Extractor or Extract Emails, Socials and Contacts from Any Website on the websites it returns.
Can I schedule it or integrate it with my app?
Yes โ every Apify Actor exposes a REST API, webhooks, and integrations with Zapier, Make, Google Sheets and Slack, and can be called from an AI agent via the Apify MCP server.
Is it legal to scrape Google Maps?
This Actor accesses only publicly available information. You are responsible for making sure your use complies with Google's terms of service and the laws in your jurisdiction, including data protection rules when you contact the businesses.
What if Google Maps changes and the Actor breaks?
Open an issue on the Actor's Issues tab and include the run link.
๐งฉ Part of the Contact Data Suite
Actors that turn public listings and websites into contact data for outreach. Also try:
- Google Maps Contact & Social Media Extractor โ emails and social media profiles for Google Maps businesses
- Extract Emails, Socials and Contacts from Any Website โ email addresses and contact details from any list of websites
- Instagram Likers Profile Scraper โ profiles and public contact details of accounts that liked an Instagram post
See every Goldmine Actor at apify.com/logical_scrapers.
๐ท Image Credit
Image credit: google.com/maps
๐ฌ Contact & Support
- Issues & feature requests: use the Issues tab on this Actor's page, where fixes are tracked.
- Email:
coredev.dan@gmail.com - If this Actor saved you time, please leave a โญ rating on the Apify Store. It helps us keep it maintained.