Install
openclaw skills install google-maps-scraper-apifyUse this skill when the user needs Google Maps business data through an Apify actor, including local business leads, place URLs, Place IDs, websites, phones, addresses, coordinates, reviews, images, opening hours, and optional website contact enrichment.
openclaw skills install google-maps-scraper-apifyThis skill helps an AI agent run the Apify Google Maps Scraper actor for local business collection and enrichment.
Default actor:
kLdarP5qiTvc9CwtPx_guru/google-maps-scraperhttps://apify.com/x_guru/google-maps-scraperUse this skill when a user asks to:
maxTotalChargeUsd when the user cares about spend.scripts/google_maps_scraper_actor.py or the Apify API.searchStringsArray, locationQuery, and maxCrawledPlacesPerSearch.startUrls as objects: [{"url": "https://www.google.com/maps/..."}].placeIds.countryCode, city, state, county, postalCode, customGeolocation, and strictLocationBounds; locationQuery has priority when present.allPlacesNoSearchAction="all_visible" and optional allPlacesZoom; use it only for concrete local areas.placeCategories, customPlaceCategories, searchMatching, minStars, website, and skipClosedPlaces.scrapeCompanyContacts only when the user needs public website emails, phones, or social links.maxReviews only when the user explicitly needs review rows or review fields.maxImages only when the user needs image URLs beyond the main image.scrapePlaceDetailPage for richer opening hours, menu links, plus code, inside places, web results, and detailed place metadata.scrapeTableReservationProviderData, scrapeOrderOnlineWidgetData, includeWebResults, and scrapeInsidePlaces.scrapeImageAuthors.Use the Apify API token from the environment:
export APIFY_TOKEN='apify_api_xxx'
Never hardcode or print the full token in user-facing output.
Install requirements if your runtime expects a requirements step:
pip install -r requirements.txt
Run a quick search:
APIFY_TOKEN='apify_api_xxx' \
python3 scripts/google_maps_scraper_actor.py quick-search \
--query "bike repair shop" \
--location "Portland, Oregon, USA" \
--limit 25 \
--budget-usd 1
Run with reviews:
APIFY_TOKEN='apify_api_xxx' \
python3 scripts/google_maps_scraper_actor.py quick-search \
--query "dentist" \
--location "Austin, Texas, USA" \
--limit 20 \
--reviews 10 \
--reviews-sort newest \
--budget-usd 1
Run with website contacts:
APIFY_TOKEN='apify_api_xxx' \
python3 scripts/google_maps_scraper_actor.py quick-search \
--query "roofing contractor" \
--location "Denver, Colorado, USA" \
--limit 50 \
--with-contacts \
--only-with-website \
--budget-usd 2
Run a custom payload:
APIFY_TOKEN='apify_api_xxx' \
python3 scripts/google_maps_scraper_actor.py run \
--input-file references/sample_input.json \
--budget-usd 2
{
"searchStringsArray": ["bike repair shop"],
"locationQuery": "Portland, Oregon, USA",
"maxCrawledPlacesPerSearch": 100,
"language": "en"
}
{
"startUrls": [
{
"url": "https://www.google.com/maps/search/restaurants+near+New+York,+NY"
}
],
"maxCrawledPlacesPerSearch": 100,
"language": "en"
}
{
"placeIds": ["ChIJN1t_tDeuEmsRUsoyG83frY4"],
"maxCrawledPlacesPerSearch": 1,
"scrapePlaceDetailPage": true
}
scrapePlaceDetailPage: extra place details.scrapeCompanyContacts: website contact enrichment.maxReviews: reviews per place.reviewsStartDate: optional YYYY-MM-DD review date filter.reviewsSort: newest, mostRelevant, highestRanking, or lowestRanking.reviewsFilterString: keyword filter for review text.reviewsOrigin: all or google.scrapeReviewsPersonalData: include reviewer profile data when allowed.maxImages: additional image URLs per place.The runner returns JSON with:
okactorIdfetchedAtinputUseditemCountrows[]Rows are actor dataset items. Common fields include: Core identity:
titlesubTitledescriptionpricecategoryNamecategoriesrankisAdvertisementAddress and geography:
addressneighborhoodstreetcitystatepostalCodecountryCodelocationlocatedInfloorplusCodeContacts and web presence:
websitephonephoneUnformattedemailsadditionalPhonesfacebooksinstagramslinkedInstwittersyoutubestiktoksRatings, reviews, and media:
totalScorereviewsCountreviewsDistributionreviewsreviewsScrapedreviewsFetchStatusreviewsFetchMethodreviewsDateFilterStatusimageUrlimagesimagesCountimageFetchStatusimageFetchMethodimageAuthorsStatusimageCategoriesDetails and identifiers:
openingHoursadditionalOpeningHourspopularTimesLiveTextpopularTimesLivePercentpopularTimesHistogrammenuservicesLinkreserveTableUrlgoogleFoodUrlpeopleAlsoSearchplacesTagsreviewsTagsgasPriceshotelStarshotelDescriptionhotelAdsplaceIdfidcidkgmidurlsearchPageUrlsearchPageLoadedUrlsearchStringlanguagescrapedAtadditionalInfoThe hosted actor output page also exposes:
resultssummary, pointing to RUN_SUMMARYscrapeCompanyContacts plus website=withWebsite when the user needs emails.scrapeReviewsPersonalData off unless the user explicitly needs reviewer profile fields.references/actor-input-guide.mdreferences/sample_input.jsonreferences/troubleshooting.md