Google Maps Scraper avatar

Google Maps Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Google Maps Scraper

Google Maps Scraper

Extract business data from Google Maps including ratings, reviews, contact info, prices, coordinates, and images. Fast scraper with automatic pagination for any location or search query.

Pricing

from $3.00 / 1,000 results

Rating

5.0

(3)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

3

Bookmarked

271

Total users

4

Monthly active users

a day ago

Last modified

Share

Google Maps Business Scraper

Find real business records from public Google Maps pages. Use a text search to discover places, or provide specific Google Maps place URLs for direct extraction. The actor runs cookielessly in a fresh browser context and streams each record to the dataset as soon as it is verified.

What this actor does

  • Searches Google Maps for a query, optionally combined with a location.
  • Scrapes one or more public place URLs directly.
  • Extracts visible business details such as name, category, address, phone, website, rating, review count, hours, coordinates, place ID, and photos when Google exposes them.
  • Deduplicates records using an observed place ID or canonical Maps URL.
  • Retries transient page failures with a bounded optional proxy fallback.
  • Snapshots public result-card fields before detail navigation; if a detail page is slow or unavailable, emits that observed card as a conservative fallback instead of losing the result or inventing detail-only fields.
  • Omits unavailable fields instead of returning null placeholders, guessed values, or fabricated businesses.

Output per record

Each business row normally includes:

FieldMeaning
recordTypebusiness
searchTermThe search that found this business, so batch runs stay traceable
nameBusiness name shown by Google Maps
categoryNameVisible category information, when available
addressPublic address
phonePublic phone number, when shown
websitePublic website, when shown
totalScoreVisible rating, when rated
reviewsCountVisible review count
priceLevelVisible price information, when shown
plusCodePublic Plus Code, when shown
locationObserved latitude and longitude
latitude / longitudeThe same observed coordinates as plain columns, for spreadsheets and CRM imports
placeIdCanonical Google Place ID (the ChIJ... token), when Google exposes one
featureIdLegacy public Google Maps feature ID (the 0x...:0x... token), when Google exposes one. It is emitted separately and is never relabelled as a placeId
kgmidObserved Knowledge Graph identifier (the /g/... token in the canonical URL)
locatedInParent place when Google shows "Located in:" — useful for shops inside malls, stations, and buildings
placeAttributesGoogle's own published attribute chips, exactly as shown, e.g. LGBTQ+ friendly, Check-in time: 3:00 PM, Check-out time: 12:00 PM
hasStreetView / streetViewCountSet when Google exposes a Street View control for the place
fuelPricesFuel grades and their published prices for a gas station, e.g. [{"grade": "Regular", "price": "$4.79"}]. Only a grade with a directly observed price is emitted; stale marks a price Google flags as over 24 hours old.
hotelStars / hotelStarRatingStar class as Google labels it, plus the numeric value
checkInTime / checkOutTimePublished check-in and check-out times
priceOfferAmount / priceOfferCurrencyThe nightly price Google currently shows, and its currency
priceOfferDateRangeThe dates that price applies to
priceOfferFreeCancellationDirectly observed, localized free-cancellation note from the target hotel's booking offer; filter labels such as "Free cancellation only" are not emitted
hotelAmenitiesNamed amenities with whether Google marks each one available, e.g. [{"name": "Pool", "available": true}]; localized badge text is preserved exactly as Google displays it, including explicit unavailable entries
descriptionEditorial description visible on the place page
hoursStatus / hoursVisible business hours, when available
isOpenNowLive open/closed state Google shows for the place, when available
ratingHistogramVisible rating distribution, when available
serviceOptionsVisible service-option labels, such as dine-in, takeout, or delivery
amenitiesVisible header amenity labels; localized text and Google's availability wording are preserved exactly, and the field is omitted when that source surface is unavailable
menuLinkPublic menu link, when shown
bookingLinksPublic booking, order, or reservation links, when shown
photosSamplePublic image URLs visible on the place page
photoCountNumber of photos Google reports for the place, when available
popularTimesSummaryPublished popular-times text, when Google exposes it
claimedSet to false only when Google itself shows a "Claim this business" control
permanentlyClosed / temporarilyClosedSet to true only when Google itself marks the place permanently or temporarily closed
googleMapsUrlCanonical or observed Maps URL
sourceUrlURL used as source context
scrapedAtUTC scrape timestamp

Fields are conditional. A business without a website, phone, rating, hours, or photos simply omits that field.

Input

FieldTypeDescription
modeenumsearch (default), placeUrls, or placeIds
searchQuerystringSearch terms such as coffee shops in Brooklyn; used in search mode
locationstringOptional location appended to the query, such as London, UK
placeUrlslist of strings or URL objectsFull public Google Maps place URLs; required in placeUrls mode. Common copied quotes, tracking parameters, country domains, and short links are normalized.
placeIdslist of stringsCanonical Google Place IDs beginning with ChIJ; required in placeIds mode and resolved through Google's public URL API. Feature IDs/CIDs are not accepted as Place IDs.
maxResultsinteger, 1–100000Requested ceiling per search. Records are emitted until the public feed ends, the ceiling for that search is reached, or the bounded runtime deadline expires. With a batch, every search gets its own allowance, so one busy term cannot starve the others.
searchTermslist of stringsRun several search terms in one go, for example ["coffee shops", "dentists"]. Each term is searched in every location you provide.
locationslist of stringsRun the search across several places in one go, for example ["New York, NY", "Austin, TX"].
minRatingnumber, 1–5Keep only businesses rated at or above this value. A business with no published rating does not qualify, so it is skipped.
maxRatingnumber, 1–5Keep only businesses rated at or below this value.
minReviewsintegerKeep only businesses with at least this many reviews.
maxReviewsintegerKeep only businesses with at most this many reviews.
openNowbooleanKeep only businesses Google currently shows as open.
hasWebsitebooleanKeep only businesses that publish a website on their listing.
hasPhonebooleanKeep only businesses that publish a phone number on their listing.
nameFilterstringKeep only businesses whose name contains this text.
excludeCategorieslist of stringsSkip businesses whose category contains any of these words.
includeClosedbooleanWhen off, permanently closed businesses are skipped. On by default.
languageenumMaps interface language; defaults to English
proxyConfigurationobjectOptional proxy override. By default the actor starts with Apify Residential (US); direct access is only a bounded fallback if the Residential route cannot be set up or does not return a usable page.

Examples

Example: search for local businesses

{
"mode": "search",
"searchQuery": "coffee shops",
"location": "Brooklyn, NY",
"maxResults": 20,
"language": "en"
}

Example: many search terms across several cities, filtered

{
"mode": "search",
"searchTerms": ["coffee shops", "bakeries"],
"locations": ["Austin, TX", "Dallas, TX"],
"minRating": 4.0,
"minReviews": 25,
"hasWebsite": true,
"maxResults": 50
}

This searches all four term-and-city combinations in one run, keeps only well-reviewed businesses that publish a website, and drops anything that does not qualify.

Example: search internationally

{
"mode": "search",
"searchQuery": "寿司",
"location": "東京 日本",
"maxResults": 10,
"language": "ja"
}

Example: scrape specific place URLs

{
"mode": "placeUrls",
"placeUrls": [
"https://www.google.com/maps/place/GRIND+THE+NYC+COFFEE+SHOP+%26+BAGEL+HOUSE/@40.7590839,-73.9918101,17z/data=!3m1!4m6!3m5!1s0x89c259125a931087:0x3d471d4575240620!8m2!3d40.7590839!4d-73.9918101!16s%2Fg%2F11kgnrjx7t"
],
"maxResults": 1
}

Example: scrape canonical Place IDs

{
"mode": "placeIds",
"placeIds": ["ChIJabtoT7hlwokRLECK0SW3_8I"],
"maxResults": 1
}

Use cases

  • Local market and competitor research.
  • Business directory and location-data projects.
  • Prospecting by category and geography.
  • Store or branch discovery from a controlled list of place URLs.
  • Enriching a dataset with public ratings, hours, websites, and coordinates.

Cookieless and high-volume behavior

No Google login, cookies, browser profile, or authenticated session is required. The actor starts with direct public access and uses bounded retries; a blocked or unavailable page is not converted into a fake empty business. If Google serves its intermittent limited-view shell while preserving the target's contact anchors, the actor tries up to two fresh anonymous browser contexts for both direct place URLs and search-detail hydration. A complete render wins without merging fields across contexts; if every attempt remains degraded, the richest single observed row is retained with the upstream limited-view condition.

Search mode snapshots each public result card before opening detail pages. A successfully hydrated detail record is preferred; when the detail budget is exhausted or navigation fails, the actor may emit a card-level record containing only fields visibly present on that card (for example name, rating, review count, category, price, description, address, and the observed Maps URL). Detail-only fields such as phone, website, Place ID, coordinates, hours, photos, and service options are omitted from that fallback row unless they were obtained from the place page. This keeps result coverage and field provenance explicit.

Records are pushed progressively, so memory does not grow with the complete result set. Direct URL mode accepts large batches up to the schema limit. A single text search is still limited by the public result feed Google exposes; use the Google Maps Area Scanner for systematic geographic coverage beyond one search window.

FAQ

Are all fields always present? No. Google publishes different fields for different businesses and regions. Unavailable values are omitted.

Does the actor invent ratings, review counts, or identifiers? No. Values are emitted only when observed on the public page or canonical URL.

Can I scrape more than 120 search results? You can request up to 100,000. Google commonly exposes around 120 or fewer cards in one public feed; the actor forwards the requested ceiling and follows the feed until source exhaustion or its bounded runtime deadline. For systematic geographic coverage, use the Area Scanner or provide a large placeUrls list in direct mode.

What happens with duplicate URLs? Records are deduplicated using an observed place ID or canonical URL; a name-and-address fallback is used only when no stable identifier is exposed.

What happens if Google limits the page? The actor keeps already-emitted records and reports an honest terminal status. It never pads the dataset to reach maxResults.

ActorUse it for
Google Maps Reviews ScraperReviews, reviewer details, photos, and owner responses
Google Maps Photos ScraperPlace photo URLs and visible photo metadata
Google Maps Business Hours ScraperRegular and special business hours
Google Maps Popular Times ScraperDirectly published popular-times values
Google Maps Email ExtractorPublic website email and social-link enrichment
Google Maps Area ScannerBounding-box, circle, and polygon coverage
Google Maps Leads ScraperSearch plus optional website contact enrichment
Google Maps MCP ServerSearch and review tools for AI assistants
Google Maps Directions ScraperPublic route and travel-mode information
Google Maps Geocoding ScraperAddress and coordinate lookup
Google Maps Similar Places ScraperRelated-place discovery
Google Maps Menu ScraperPublic menu items and prices
Google Maps Nearby ScraperPlaces near a coordinate
Google Maps Place List ScraperCurated lists and list/search URLs
Google Maps Timezone ScraperTimezone data for coordinates

Use Google Maps data responsibly and follow applicable terms and laws.