Google Maps Local Business Scraper avatar

Google Maps Local Business Scraper

Pricing

from $4.00 / 1,000 results

Go to Apify Store
Google Maps Local Business Scraper

Google Maps Local Business Scraper

Collect public local-business listing details from Google Maps searches.

Pricing

from $4.00 / 1,000 results

Rating

0.0

(0)

Developer

Eslam Diaa

Eslam Diaa

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 hours ago

Last modified

Categories

Share

An Apify Actor that searches Google Maps and stores public local-business listing details in the default dataset.

Unofficial tool: This Actor is not affiliated with, endorsed by, or sponsored by Google or Google Maps.

Input

Start with searchQueries and locations, keep Apify Proxy enabled, leave all require* and rating/review filters off, and set maxCandidatesPerSearch higher than maxResultsPerSearch. Once that works, enable filters one at a time.

Common conflicts and zero-result settings

  • scrapeSocialProfiles must be true when requireSocialMedia is true or requiredSocialPlatforms is not empty. Otherwise the Actor rejects the input because social profiles are not being collected.

  • requiredSocialPlatforms means at least one of the selected platforms, not all of them. Use it only when you want to exclude businesses without a specific social platform.

  • requiredWebsiteDomains already requires a matching website. It can be used with requireWebsite, but requireWebsite is redundant in that case.

  • If both minRating and maxRating are set, the minimum cannot be greater than the maximum. The same rule applies to minReviewsCount and maxReviewsCount.

  • openNow, requirePhone, requireAddress, requireWebsite, requireSocialMedia, and keyword filters all reduce the final result set. If no rows appear, turn them off first and then add them back one at a time.

  • maxCandidatesPerSearch should be higher than maxResultsPerSearch when filters are enabled; otherwise the Actor may run out of candidates before finding enough matches.

  • Keep proxyConfiguration.useApifyProxy enabled. Disabling it can cause Google Maps timeouts, anti-automation pages, or no results.

  • searchQueries: keywords or categories, for example restaurants or dentists

  • locations: cities, neighborhoods, or countries

  • maxResultsPerSearch: result limit for each query/location combination

  • language: Google Maps interface language, default en

  • scrapeSocialProfiles: collect public social-media links found on the Maps listing and linked website homepage, default true

  • requireWebsite: keep only businesses with a listed website

  • requiredWebsiteDomains: optionally restrict results to specific website domains

  • requireSocialMedia: keep only businesses with at least one detected social profile

  • requiredSocialPlatforms: optionally require Facebook, Instagram, LinkedIn, X, YouTube, TikTok, or another supported platform

  • minRating / maxRating: filter by Google Maps rating

  • minReviewsCount / maxReviewsCount: filter by Google Maps review count

  • openNow: keep only businesses currently reported as open

  • excludeClosedBusinesses: remove businesses marked permanently or temporarily closed

  • requirePhone / requireAddress: require core contact fields

  • includeKeywords / excludeKeywords: filter against business name, category, and address

  • maxCandidatesPerSearch: increase this when filters are strict; it controls how many listings are inspected to find matching businesses

  • proxyConfiguration: Apify Proxy configuration; enabled by default because Google Maps may block direct cloud IP addresses. Keep the default UNBLOCKER group for normal runs.

Output

Each dataset item includes the business name, category, address, phone, website, public social-media profile links, business status, open-now state, rating, review count, opening hours, coordinates, place ID, Google Maps URL, and the search that found it.

Use this Actor only for data collection that is permitted by applicable laws and service terms. It does not attempt to bypass CAPTCHA or other access controls.

Local development

npm install
apify validate-schema .actor/input_schema.json
apify run

The default local input is stored in storage/key_value_stores/default/INPUT.json when using apify run.