Google Maps Scraper
Pricing
from $2.70 / 1,000 results
Google Maps Scraper
Fast HTTP-only Google Maps scraper for places, reviews, photos, phones, emails, websites, social profiles, opening hours and lead data. Export clean business contacts at scale with no browser runtime.
Pricing
from $2.70 / 1,000 results
Rating
0.0
(0)
Developer
Blynx
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Google Maps Business Intelligence Scraper
Fast Apify actor for Google Maps places, details, contacts, reviews, photos and lead intelligence. It runs on HTTP requests only: no Playwright, no Puppeteer and no browser runtime.
What It Extracts
- Place identity:
title,subTitle,categoryName,categories,placeId,dataId,featureId,cid,kgmid,googleMapsUrl,sourceUrl. - Location:
address,addressLines,street,city,state,postalCode,neighborhood,locatedIn,countryCode,coordinates,latitude,longitude,plusCode,compoundPlusCode,timeZone,language. - Business data:
rating,reviewsCount,website,domain,phone,phoneUnformatted,phones,primaryPhone,primaryPhoneUnformatted,priceLevel,openingHours,description,businessDescription,additionalInfo,highlights,reservationLinks,localPosts, owner fields and claim status. - Media:
images,photoUrls,imageUrl, and flat Apify image columnsphoto1Urlthroughphoto5Url. - Website contacts:
contacts.emails,contacts.phones,contacts.uncertainPhones,contacts.socialProfiles,contacts.crawledUrls,contacts.websiteStatus,contacts.error. - Reviews: optional HTTP reviews endpoint adapter with nested place reviews or one dataset item per review.
- Lead intelligence:
leadScore,contactCompletenessScore, anddataQuality.
Output Shape Notes
- Emails are stored in
contacts.emails. contactsalways keeps a stable shape, even when a business has no website or no contacts.phonesis a deduplicated top-level string array that combines the Google Maps phone and website phones.descriptioncan benullwhen Google does not provide a short editorial description. CheckbusinessDescriptionfor the longer owner/business description.imageUrlandphoto1Urlare configured as image columns in Apify dataset views. Thephotosview exposesphoto1Urlthroughphoto5Url.dataQualitycurrently containshasWebsite,hasPhone,hasEmail,hasSocialProfiles,hasCoordinates,hasOpeningHours, andcontactCompletenessScore.
Modes
FULL: search Google Maps and enrich results. If direct seeds are also provided, it processes those too.SEARCH: search places by keyword and optional location.DETAIL: scrape direct Google Maps URLs, Place IDs, CIDs or data IDs.REVIEWS: scrape direct places and emit one dataset item per review.CONTACTS: enrich direct places with website contacts.
Direct seeds can be passed as startUrls, placeIds, featureIds, or via datasetId. Input datasets can contain googleMapsUrl, url, sourceUrl, placeUrl, placeId, cid, dataId, or featureId.
Apify Quality-Test Prefill
Apify quality-test runs the actor with the prefilled input schema. The current prefill is intentionally small and cheap while still testing search, details, contacts, phones, emails and photos:
{"mode": "FULL","searchStringsArray": ["coffee shops"],"locationQuery": "New York, NY","maxCrawledPlacesPerSearch": 1,"scrapePlaceDetailPage": true,"scrapeContacts": true,"maxContactPages": 1,"scrapeReviews": false,"maxReviews": 0,"outputMode": "PLACE_ITEMS","maxImages": 5,"language": "en","countryCode": "US","maxConcurrency": 2,"maxRetries": 3,"maxProxyRetries": 3,"proxy": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"},"rawOutput": false}
Scaled Search Example
{"mode": "FULL","searchStringsArray": ["dentists", "orthodontists"],"locationQuery": "Austin, TX","maxCrawledPlacesPerSearch": 100,"scrapePlaceDetailPage": true,"scrapeContacts": true,"maxContactPages": 5,"scrapeReviews": false,"maxImages": 20,"maxConcurrency": 10,"proxy": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
Reviews
Set scrapeReviews: true and maxReviews above 0. For review-only exports, use REVIEWS mode:
{"mode": "REVIEWS","placeIds": ["ChIJvSQIgqFZwokRFYQbJdzceSs"],"maxReviews": 100,"reviewsSort": "newest","outputMode": "REVIEW_ITEMS"}
Review items include fields such as placeTitle, placeId, dataId, reviewId, authorName, authorPhotoUrl, reviewerId, rating, publishedAt, text, likesCount, owner response fields and review images when Google returns them.
Google can return an empty review payload for some sessions/IPs while still returning place data. The actor treats this as a soft failure, emits the place when using place output, and records warnings rather than failing the run.
Filters And Controls
categoryFilterWords: keep only places whose categories contain one of the provided words.placeMinimumStars: skip places below a minimum rating when rating is available.website:allPlaces,withWebsite, orwithoutWebsite.skipClosedPlaces: skip permanently closed places when Google exposes that status.rawOutput: include raw Google nested arrays for debugging.
Run Locally
pip install -r requirements.txtapify run# orpython -m src
Notes
- Residential proxies are strongly recommended for scale.
- Contact extraction visits the business website homepage plus a small set of contact/about/team/legal pages, capped by
maxContactPages. - Email extraction filters obvious placeholder domains and static asset filenames such as
@2x.png. - Phone extraction removes common ZIP/year/partial-number false positives and deduplicates by normalized digits.
- Search pagination uses Google Maps' internal map endpoint and advances by 20-result offsets.