This skill helps an AI agent run the Apify Google Maps Extractor actor for Google Maps place data, local business listings, and optional public website contact enrichment.
Default actor:
2A4RTA5PjN7McqJXxx_guru/google-maps-extractorhttps://apify.com/x_guru/google-maps-extractorhttps://console.apify.com/actors/2A4RTA5PjN7McqJXx/sourceUse this skill when a user asks to:
searchStringsArray, locationQuery, maxCrawledPlacesPerSearch, and language for normal search.startUrls or placeIds for exact known sources.maxTotalChargeUsd when spend matters.scripts/google_maps_extractor_actor.py or call the Apify API directly.RUN_SUMMARY for diagnostics.searchStringsArray, locationQuery, and maxCrawledPlacesPerSearch.startUrls as objects: [{"url": "https://www.google.com/maps/..."}].placeIds.locationQuery.countryCode, city, state, county, postalCode, customGeolocation, and strictLocationBounds.locationQuery has priority when it is present and specific.allPlacesNoSearchAction="all_visible" and optional allPlacesZoom; use it only for concrete local areas.categoryFilterWords, placeCategories, searchMatching, placeMinimumStars, website, and skipClosedPlaces.scrapeContacts only when the user needs public website emails, phones, or social links.scrapePlaceDetailPage when the user needs richer opening hours, menu links, plus code, popular times, inside places, web results, or detailed place metadata.scrapeTableReservationProvider, scrapeOrderOnline, includeWebResults, and scrapeDirectories.Use the Apify API token from the environment:
bash
export APIFY_TOKEN='apify_api_xxx'
Never hardcode or print the full token in user-facing output.
The bundled script uses only Python standard library.
Run a quick search:
bash
APIFY_TOKEN='apify_api_xxx' \
python3 scripts/google_maps_extractor_actor.py quick-search \
--query "bike repair shop" \
--location "Portland, Oregon, USA" \
--limit 25 \
--budget-usd 1
Run with public website contact enrichment:
bash
APIFY_TOKEN='apify_api_xxx' \
python3 scripts/google_maps_extractor_actor.py quick-search \
--query "roofing contractor" \
--location "Denver, Colorado, USA" \
--limit 50 \
--with-contacts \
--only-with-website \
--budget-usd 2
Run by Google Maps URL:
bash
APIFY_TOKEN='apify_api_xxx' \
python3 scripts/google_maps_extractor_actor.py quick-url \
--url "https://www.google.com/maps/search/restaurants+near+New+York,+NY" \
--limit 50 \
--budget-usd 1
Run by Place ID:
bash
APIFY_TOKEN='apify_api_xxx' \
python3 scripts/google_maps_extractor_actor.py quick-place-id \
--place-id "ChIJN1t_tDeuEmsRUsoyG83frY4" \
--details \
--budget-usd 1
Run custom JSON:
bash
APIFY_TOKEN='apify_api_xxx' \
python3 scripts/google_maps_extractor_actor.py run \
--input-file references/sample_input.json \
--budget-usd 1
json
{
"searchStringsArray": ["bike repair shop"],
"locationQuery": "Portland, Oregon, USA",
"maxCrawledPlacesPerSearch": 100,
"language": "en"
}
json
{
"searchStringsArray": ["roofing contractor"],
"locationQuery": "Denver, Colorado, USA",
"maxCrawledPlacesPerSearch": 50,
"website": "withWebsite",
"scrapeContacts": true
}
json
{
"startUrls": [
{
"url": "https://www.google.com/maps/search/restaurants+near+New+York,+NY"
}
],
"maxCrawledPlacesPerSearch": 100,
"language": "en"
}
json
{
"placeIds": ["ChIJN1t_tDeuEmsRUsoyG83frY4"],
"maxCrawledPlacesPerSearch": 1,
"scrapePlaceDetailPage": true
}
The runner returns JSON:
okactorIdfetchedAtinputUseditemCountrows[]Rows are actor dataset items. Important groups:
title, subTitle, description, price, categoryName, categories, rank, isAdvertisementaddress, street, city, state, postalCode, countryCode, location, plusCodewebsite, phone, phoneUnformatted, emails, additionalPhones, social profile arraystotalScore, reviewsCount, reviewsDistribution, reviewsTagsopeningHours, popularTimesHistogram, menu, servicesLink, reserveTableUrl, googleFoodUrl, peopleAlsoSearch, placesTagsplaceId, fid, cid, kgmid, url, searchPageUrl, searchPageLoadedUrlsearchString, language, scrapedAtFor the full contract, read references/input-output-contract.md.
RUN_SUMMARY.scrapeContacts was enabled.scrapePlaceDetailPage was enabled.maxTotalChargeUsd for any user concerned about spend.references/input-output-contract.mdreferences/sample_input.jsonreferences/troubleshooting.md