Google Maps Business Scraper 📍 avatar

Google Maps Business Scraper 📍

Pricing

Pay per usage

Go to Apify Store
Google Maps Business Scraper 📍

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

Shahid Irfan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

Categories

Security

Limited permissions

Share

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?

FieldDescription
nameBusiness name as shown on Google Maps
categoryPrimary category, for example Coffee shop
categoriesAll categories Google assigns to the place
addressFull address in one line
street, city, state, postalCode, countryAddress split into parts
neighborhoodGoogle neighborhood label when available
latitude, longitudeCoordinates
phonePhone number in local format
phoneInternationalPhone number in international format
website, domainBusiness website and its hostname
ratingAverage star rating, 1 to 5
reviewsCountNumber of Google reviews
reviewsUrlLink that opens the review list on Google
hoursOpening hours for each day
openNowLabelOpen or closed status with the next opening time
descriptionEditorial description lines when Google publishes them
plusCodePlus code when available
timezoneBusiness timezone
businessStatusOPERATIONAL, CLOSED_TEMPORARILY, or CLOSED_PERMANENTLY
claimedPresent when the listing is marked as owner managed
logoProfile image URL
imagesUp to five photo URLs
placeIdGoogle place ID, for example ChIJ...
cidNumeric customer ID used by maps.google.com/?cid= links
urlCanonical Google Maps link for the place
searchQueryThe query that surfaced the business
scrapedAtISO 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

  1. Open the Actor in Apify Console.
  2. Add one or more search queries, written the way you would type them into Google Maps.
  3. Set how many businesses you want per query.
  4. Leave the proxy setting on residential, which Google treats as normal traffic.
  5. Start the run and open the dataset when it finishes.
  6. Download the dataset or connect it to a schedule, webhook, or integration.

Input Parameters

ParameterTypeRequiredDefaultDescription
searchQueriesArray of stringsNo["coffee shop seattle"]Queries to search on Google Maps. Add a city to keep results local.
maxResultsIntegerNo20Businesses to save for each query, 1 to 500.
includeImagesBooleanNotrueSave up to five photo URLs per business.
languageStringNoenTwo-letter interface language, which changes category names and hour formatting.
countryCodeStringNousTwo-letter country code used to localize results.
proxyConfigurationObjectNoApify residential proxyProxy settings. Residential is recommended.

Output Data

FieldTypeDescription
nameStringBusiness name
categoryStringPrimary category
addressStringFull address
cityStringCity
phoneStringLocal phone number
websiteStringBusiness website
ratingNumberAverage rating
reviewsCountIntegerNumber of reviews
hoursStringOpening hours, one entry per day
latitude, longitudeNumberCoordinates
imagesArrayPhoto URLs
placeIdStringGoogle place ID
urlStringGoogle Maps link
searchQueryStringQuery that found the business
scrapedAtStringISO 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 austin returns local practices. dentist alone 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 language and countryCode to 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.

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.