Google Maps Scraper Apify
/install google-maps-scraper-apify
Google Maps Scraper Apify Skill
Overview
This skill helps an AI agent run the Apify Google Maps Scraper actor for local business collection and enrichment.
Default actor:
- Actor ID:
kLdarP5qiTvc9CwtP - Actor name:
x_guru/google-maps-scraper - Store page:
https://apify.com/x_guru/google-maps-scraper
Use this skill when a user asks to:
- collect Google Maps places by search term and location
- scrape direct Google Maps search URLs or place URLs
- enrich existing Google Place IDs
- build local lead lists with websites, phones, addresses, ratings, and coordinates
- add public website contact extraction
- extract Google Maps reviews or images
- create Apify-ready JSON payloads for n8n, CRM, Sheets, or API workflows
Quick Workflow
- Clarify the target: business type, location, desired count, and whether add-ons are needed.
- Build the smallest useful payload first.
- Set a budget guard with Apify
maxTotalChargeUsdwhen the user cares about spend. - Run the actor through
scripts/google_maps_scraper_actor.pyor the Apify API. - Return summary metrics and dataset rows.
- Explain missing fields as normal best-effort behavior when Google Maps or the business website does not expose data.
Payload Rules
- Standard discovery uses
searchStringsArray,locationQuery, andmaxCrawledPlacesPerSearch. - Exact Google Maps URLs use
startUrlsas objects:[{"url": "https://www.google.com/maps/..."}]. - Exact Google Place IDs use
placeIds. - Structured search area uses
countryCode,city,state,county,postalCode,customGeolocation, andstrictLocationBounds;locationQueryhas priority when present. - Broad visible-map collection uses
allPlacesNoSearchAction="all_visible"and optionalallPlacesZoom; use it only for concrete local areas. - Paid filters include
placeCategories,customPlaceCategories,searchMatching,minStars,website, andskipClosedPlaces. - Use
scrapeCompanyContactsonly when the user needs public website emails, phones, or social links. - Use
maxReviewsonly when the user explicitly needs review rows or review fields. - Use
maxImagesonly when the user needs image URLs beyond the main image. - Use
scrapePlaceDetailPagefor richer opening hours, menu links, plus code, inside places, web results, and detailed place metadata. - Place details can be extended with
scrapeTableReservationProviderData,scrapeOrderOnlineWidgetData,includeWebResults, andscrapeInsidePlaces. - Image extraction can be extended with
scrapeImageAuthors. - Keep initial tests small: 10-50 places before scaling.
Authentication
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.
Script Usage
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
Recommended Inputs
Local business discovery
{
"searchStringsArray": ["bike repair shop"],
"locationQuery": "Portland, Oregon, USA",
"maxCrawledPlacesPerSearch": 100,
"language": "en"
}
Exact URLs
{
"startUrls": [
{
"url": "https://www.google.com/maps/search/restaurants+near+New+York,+NY"
}
],
"maxCrawledPlacesPerSearch": 100,
"language": "en"
}
Place IDs
{
"placeIds": ["ChIJN1t_tDeuEmsRUsoyG83frY4"],
"maxCrawledPlacesPerSearch": 1,
"scrapePlaceDetailPage": true
}
Add-on Fields
scrapePlaceDetailPage: extra place details.scrapeCompanyContacts: website contact enrichment.maxReviews: reviews per place.reviewsStartDate: optionalYYYY-MM-DDreview date filter.reviewsSort:newest,mostRelevant,highestRanking, orlowestRanking.reviewsFilterString: keyword filter for review text.reviewsOrigin:allorgoogle.scrapeReviewsPersonalData: include reviewer profile data when allowed.maxImages: additional image URLs per place.
Output Contract
The runner returns JSON with:
okactorIdfetchedAtinputUseditemCountrows[]
Rows are actor dataset items. Common fields include: Core identity:
titlesubTitledescriptionpricecategoryNamecategoriesrankisAdvertisement
Address and geography:
addressneighborhoodstreetcitystatepostalCodecountryCodelocationlocatedInfloorplusCode
Contacts and web presence:
websitephonephoneUnformattedemailsadditionalPhonesfacebooksinstagramslinkedInstwittersyoutubestiktoks
Ratings, reviews, and media:
totalScorereviewsCountreviewsDistributionreviewsreviewsScrapedreviewsFetchStatusreviewsFetchMethodreviewsDateFilterStatusimageUrlimagesimagesCountimageFetchStatusimageFetchMethodimageAuthorsStatusimageCategories
Details and identifiers:
openingHoursadditionalOpeningHourspopularTimesLiveTextpopularTimesLivePercentpopularTimesHistogrammenuservicesLinkreserveTableUrlgoogleFoodUrlpeopleAlsoSearchplacesTagsreviewsTagsgasPriceshotelStarshotelDescriptionhotelAdsplaceIdfidcidkgmidurlsearchPageUrlsearchPageLoadedUrlsearchStringlanguagescrapedAtadditionalInfo
The hosted actor output page also exposes:
- dataset link:
results - run diagnostics link:
summary, pointing toRUN_SUMMARY
Agent Response Rules
- If a run succeeds with zero rows, say that the actor finished but Google Maps returned no matching places for the requested input.
- If add-on fields are missing, explain that they are best-effort and depend on Google Maps or the business website exposing data.
- For lead generation requests, recommend
scrapeCompanyContactspluswebsite=withWebsitewhen the user needs emails. - For large jobs, split by city, keyword, or area and use budget limits per run.
- For compliance-sensitive review workflows, turn
scrapeReviewsPersonalDataoff unless the user explicitly needs reviewer profile fields.
References
references/actor-input-guide.mdreferences/sample_input.jsonreferences/troubleshooting.md
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install google-maps-scraper-apify - 安装完成后,直接呼叫该 Skill 的名称或使用
/google-maps-scraper-apify触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
Google Maps Scraper Apify 是什么?
Use this skill when the user needs Google Maps business data through an Apify actor, including local business leads, place URLs, Place IDs, websites, phones,... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 47 次。
如何安装 Google Maps Scraper Apify?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install google-maps-scraper-apify」即可一键安装,无需额外配置。
Google Maps Scraper Apify 是免费的吗?
是的,Google Maps Scraper Apify 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
Google Maps Scraper Apify 支持哪些平台?
Google Maps Scraper Apify 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Google Maps Scraper Apify?
由 hundevmode(@hundevmode)开发并维护,当前版本 v1.0.0。