Google Maps Business Scraper 📍
Pricing
Pay per usage
Google Maps Business Scraper 📍
Extract Google Maps business listings, names, addresses, phone numbers, websites, ratings, reviews, categories, opening hours, and locations. Ideal for B2B lead generation, local SEO research, competitor analysis, market intelligence, and business data extraction.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Shahid Irfan
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Security
Limited permissionsShare
What does Google Maps Business Scraper do?
Google Maps Business Scraper collects business profiles from Google Maps search results and saves them as a structured dataset. Give it a query like coffee shop seattle and it returns the businesses Google shows for that search, including phone numbers, websites, addresses, ratings, review counts, opening hours, coordinates, and photo links. You can run one query or many, and export the dataset as JSON, CSV, or Excel.
The Actor is built for lead lists, local market research, competitor tracking, and location data for internal tools. In a test run on Apify, 90 businesses across two queries took 4.8 seconds, because each page of 20 results is one request.
Why use Google Maps Business Scraper?
- Fast datasets - 20 businesses arrive per request, so a 100-result query is five requests instead of 100 page loads.
- Contact details in one record - Phone, international phone, website, domain, full address, and split address parts are saved together, so a lead list needs no second enrichment step before calls or email.
- No API key or Google account - No Google Cloud project, no Places API key, and no signed-in browser profile.
- Repeatable runs - Schedule the Actor in Apify Console to refresh a market weekly, or call it from your own code through the Apify API.
- Failures are visible - A page that returns no usable data is retried with a fresh connection, and a run that finds no businesses fails with a clear message instead of an empty dataset.
- No duplicates - Places are deduplicated by Google place ID, records are saved in batches while the run continues, and the run summary reports field coverage.
What data can you extract from Google Maps?
| Field | Description |
|---|---|
name | Business name as shown on Google Maps |
category | Primary category, for example Coffee shop |
categories | All categories Google assigns to the place |
address | Full address in one line |
street, city, state, postalCode, country | Address split into parts |
neighborhood | Google neighborhood label when available |
latitude, longitude | Coordinates |
phone | Phone number in local format |
phoneInternational | Phone number in international format |
website, domain | Business website and its hostname |
rating | Average star rating, 1 to 5 |
reviewsCount | Number of Google reviews |
reviewsUrl | Link that opens the review list on Google |
hours | Opening hours for each day |
openNowLabel | Open or closed status with the next opening time |
description | Editorial description lines when Google publishes them |
plusCode | Plus code when available |
timezone | Business timezone |
businessStatus | OPERATIONAL, CLOSED_TEMPORARILY, or CLOSED_PERMANENTLY |
claimed | Present when the listing is marked as owner managed |
logo | Profile image URL |
images | Up to five photo URLs |
placeId | Google place ID, for example ChIJ... |
cid | Numeric customer ID used by maps.google.com/?cid= links |
url | Canonical Google Maps link for the place |
searchQuery | The query that surfaced the business |
scrapedAt | ISO timestamp for the record |
Review text is not included. Google stopped serving reviews to anonymous requests in October 2026, so the Actor returns the rating, the review count, and a link to the review list instead of partial review data.
How to use Google Maps Business Scraper
- Open the Actor in Apify Console.
- Add one or more search queries, written the way you would type them into Google Maps.
- Set how many businesses you want per query.
- Leave the proxy setting on residential, which Google treats as normal traffic.
- Start the run and open the dataset when it finishes.
- Download the dataset or connect it to a schedule, webhook, or integration.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
searchQueries | Array of strings | No | ["coffee shop seattle"] | Queries to search on Google Maps. Add a city to keep results local. |
maxResults | Integer | No | 20 | Businesses to save for each query, 1 to 500. |
includeImages | Boolean | No | true | Save up to five photo URLs per business. |
language | String | No | en | Two-letter interface language, which changes category names and hour formatting. |
countryCode | String | No | us | Two-letter country code used to localize results. |
proxyConfiguration | Object | No | Apify residential proxy | Proxy settings. Residential is recommended. |
Output Data
| Field | Type | Description |
|---|---|---|
name | String | Business name |
category | String | Primary category |
address | String | Full address |
city | String | City |
phone | String | Local phone number |
website | String | Business website |
rating | Number | Average rating |
reviewsCount | Integer | Number of reviews |
hours | String | Opening hours, one entry per day |
latitude, longitude | Number | Coordinates |
images | Array | Photo URLs |
placeId | String | Google place ID |
url | String | Google Maps link |
searchQuery | String | Query that found the business |
scrapedAt | String | ISO timestamp |
The full record contains the additional fields listed in the data table above. Fields Google does not publish for a place are left out of that record instead of being written as empty strings.
Usage Examples
Collect coffee shops in one city
{"searchQueries": ["coffee shop seattle"],"maxResults": 50}
Build a multi-city lead list
{"searchQueries": ["plumber austin","plumber dallas","plumber houston"],"maxResults": 100,"includeImages": false}
Localize results for a German market
{"searchQueries": ["zahnarzt berlin"],"maxResults": 60,"language": "de","countryCode": "de"}
Run several queries at once
{"searchQueries": ["dentist boston", "dentist cambridge"],"maxResults": 40}
Sample Output
{"name": "Storyville Coffee Pike Place","placeId": "ChIJBR3G8LJqkFQRWD2Wzn0qG3c","cid": "8582500234709843288","category": "Coffee shop","categories": ["Coffee shop", "Bakery", "Cafe", "Coffee roastery"],"address": "94 Pike St Top floor Suite 34, Seattle, WA 98101","street": "94 Pike St Top floor Suite 34","city": "Seattle","state": "Washington","postalCode": "98101","country": "US","neighborhood": "Pike Pine Retail Core","latitude": 47.608792,"longitude": -122.340046,"phone": "(206) 780-5777","phoneInternational": "+12067805777","website": "https://storyville.com/pages/pike-place-market","domain": "storyville.com","rating": 4.6,"reviewsCount": 3233,"reviewsUrl": "https://search.google.com/local/reviews?placeid=ChIJBR3G8LJqkFQRWD2Wzn0qG3c","hours": "Sunday: 6:59 AM-6 PM; Monday: 6:59 AM-5 PM; Tuesday: 6:59 AM-5 PM","description": "High-style, modern craft coffee cafe · Market-based spot for artisanal coffee & baked goods in stylish wood-clad digs with fireplace.","timezone": "America/Los_Angeles","businessStatus": "OPERATIONAL","logo": "https://lh5.googleusercontent.com/-6Uq0FFtNx4I/AAAAAAAAAAI/AAAAAAAAAAA/C0vD4GoygMA/s44-p-k-no-ns-nd/photo.jpg","images": ["https://lh3.googleusercontent.com/grass-cs/AABkmLfB7_zJhRZ6LTV5HppwF3PpeLdPvXorc5XTOH2XSEE3JYoDrmXKKa3VRpcFx0SlDWd1vUxBjEj8QaKs-zSA4-p7jHMyXUTPQhzQ2L9HLf4gK0VXTzU5tEtVi6qvaRkWMSmmmsT6QQ=w408-h306-k-no"],"url": "https://www.google.com/maps/place/?q=place_id:ChIJBR3G8LJqkFQRWD2Wzn0qG3c","searchQuery": "coffee shop seattle","scrapedAt": "2026-11-01T13:17:36.720Z"}
openNowLabel, plusCode, and claimed are left out of this sample because that
record did not include them. They appear when Google publishes the value for a place.
Tips for best results
- Put a place in the query.
dentist austinreturns local practices.dentistalone mixes in results from everywhere Google serves. - Start small. Run 20 results first, check the dataset, then raise
maxResults. - Use residential proxies for volume. Google serves datacenter addresses a consent page or a block page more often, which reduces result counts.
- Split broad markets. A single query returns up to a few hundred places; for full city coverage, run one query per district or ZIP code.
- Keep the language and country consistent. Matching
languageandcountryCodeto the target market produces local category names and correct hour formats. - Watch for missing phones. Small businesses often publish no phone number or website. That is a source limitation, not a run failure.
Integrations
- Google Sheets - Send the dataset to a spreadsheet for review and follow-up.
- Webhooks - Trigger your own service when a run finishes.
- Make and Zapier - Push new businesses into a CRM or outreach tool.
- Apify API - Start runs and read datasets from your own application.
- Schedules - Refresh a market daily, weekly, or monthly.
- CSV, Excel, JSON, XML - Download the dataset in any of these formats.
Frequently Asked Questions
How many businesses can I get per query?
Google returns 20 businesses per page and the Actor pages through results until it reaches maxResults, up to 500 per query. Very broad queries stop earlier because Google has no more results for them.
Do I need a Google API key?
No. The Actor reads the public Google Maps result pages, so you do not need a Places API key, a Google account, or billing on Google Cloud.
Can I export the results to CSV or Excel?
Yes. Every Apify dataset can be downloaded as CSV, Excel, JSON, XML, or HTML, and the same data is available through the Apify API.
Why are some phone numbers or websites missing?
Google only shows contact details a business has published. Places without a verified phone or website produce records without those fields.
Can I get review text?
No. Google stopped serving review content to anonymous requests in October 2026. The Actor returns rating, reviewsCount, and reviewsUrl, which opens the full review list on Google.
Can I run the Actor on a schedule?
Yes. Create a schedule in Apify Console and reuse the same input. Each run writes a fresh dataset, so you can compare markets over time.
Does the Actor remove duplicates?
Yes. Businesses are deduplicated by Google place ID across pages and across queries in the same run, so a place that appears under two searches is saved once.
What happens if Google changes its page format?
The Actor reads the current request from the live Google Maps page when a page returns no records, retries with a fresh connection, and logs a warning if a result still cannot be read. It fails the run with a clear message when no businesses are found, so an empty dataset is never reported as a success.
How long does a run take?
About 20 businesses per request. A test run of 90 businesses across two queries took 4.8 seconds on Apify. Queries run in parallel, and the residential proxy adds some latency per request.
Support
Report problems or request new fields through the Issues tab on the Actor page. Include the input you used and the run ID so the failure can be reproduced.
Legal Notice
This Actor collects publicly available business information from Google Maps. You are responsible for using the data in line with Google's terms, applicable privacy laws, and the rules of the markets you contact. Do not use the dataset for spam or for any purpose that violates local regulations.