Google Maps Similar Places Scraper avatar

Google Maps Similar Places Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Google Maps Similar Places Scraper

Google Maps Similar Places Scraper

Extract 'People also search for' / similar / related places from any Google Maps business page - name, place ID, rating, reviews, category, image, and coordinates.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a day ago

Last modified

Share

Extract visible "People also search for" / similar / related-place cards from a Google Maps business page. Returned rows follow the card order and are capped by maxResults; card availability and optional fields depend on what Maps publishes for that place and run.

Perfect for competitive intelligence, market research, hotel comparison shopping, restaurant discovery flows, and building "places like this" recommendation pipelines on top of Google Maps data.

What this actor does

Point the actor at any Google Maps place URL (a restaurant, hotel, landmark, store, etc.) and it returns the related-places carousel that Google shows in the side panel — with every field that Google actually publishes for those related places:

  • Related place name, canonical placeId (ChIJ…, when Google publishes one) and legacy featureId (0x…:0x…, ready for re-scraping)
  • A Google Maps URL from the card when available, otherwise built from the observed feature ID or a name/location fallback
  • Rating (totalScore) and review count
  • Published category name and any available categories list
  • Latitude / longitude coordinates
  • A thumbnail image URL requested at s512 when the source URL supports it
  • Carousel rank (1 = first card shown)
  • The carousel section type ("People also search for", "Similar places", etc.)
  • Back-references to the source business (name, its canonical sourcePlaceId / legacy sourceFeatureId, and URL) so a dataset of multiple sources stays joinable

Input

FieldTypeDescription
placeUrlstringAny Google Maps place URL, including supported short/mobile/country-domain variants; use either this or placeId
placeIdstringCanonical Google Place ID beginning with ChIJ; use instead of placeUrl
maxResultsinteger (1–50)How many related places to extract. Default: 20
languageenumMaps interface language: en, es, fr, de, it, pt, ja, ko, zh, ar, ru. Default: en
proxyConfigurationproxyOptional. The scraper works without proxy by default; if a place fails to load, the actor automatically retries through the proxy you supply here

Examples

{
"placeUrl": "https://www.google.com/maps/place/The+Ritz+London/@51.5070782,-0.1416273,17z/data=!3m1!4b1!4m6!3m5!1s0x48760529d30fc857:0x596135811e044014!8m2!3d51.5070782!4d-0.1416273!16zL20vMDQ3enJ2?hl=en",
"maxResults": 10,
"language": "en"
}
{
"placeId": "ChIJabtoT7hlwokRLECK0SW3_8I",
"maxResults": 20,
"language": "en"
}
{
"placeUrl": "https://www.google.com/maps/place/Sushi+no+Midori/@35.6704396,139.7596577,17z/",
"maxResults": 10,
"language": "ja"
}

One dataset record per related place:

Output keys are conditional rather than a fixed template. Depending on observed page data, a row can include sourceBusinessName, sourcePlaceId, sourceFeatureId, sourcePlaceUrl, relatedSectionType, rank, name, placeId, featureId, googleMapsUrl, categoryName, categories, totalScore, reviewsCount, price, description, distance, latitude, longitude, image, scrapedAt, recordType, and sourceUrl.

Null and empty optional values are omitted. Google-derived fields appear only when observed; rank, record metadata, and source references are actor context. googleMapsUrl may be normalized from a card link or constructed from observed identity/coordinates, and its name-based fallback is not a canonical identity. No null values or sentinels are emitted.

placeId and sourcePlaceId are canonical Google Place IDs and always begin with ChIJ. The legacy 0x…:0x… identifier is a different value and is emitted only as featureId (for a related place) or sourceFeatureId (for the source business) — it is never relabelled as a Place ID. A related place carries placeId only when Google publishes a canonical ID and featureId only when it exposes the legacy form; when both are observed, both fields are populated. The source business follows the same split: sourcePlaceId holds a canonical source ID and sourceFeatureId the legacy token, and whichever form was not observed is omitted rather than substituted.

The actor reads legacy embedded Maps state, visible cards, and XSSI-prefixed Maps preview responses. A 22-context, 11-language sample found cookieless preview rows with feature IDs, coordinates, ratings, review counts, and images; canonical ChIJ… IDs were absent in that sample. Preview payloads are positional and undocumented, so they are treated as an observed fallback surface, not a stable API contract. The actor chooses one best valid payload by row count and then field completeness; it does not combine rows across payloads. If Google does not publish a canonical ID, placeId is omitted rather than guessed from a name, coordinates, or a legacy feature ID.

Use cases

  • Hotel competitive analysis: feed in a hotel URL, get the 10 hotels Google says travelers also looked at
  • Restaurant discovery flows: build "if you liked X, you might like..." recommenders backed by Google's own signals
  • Landmark itineraries: turn one landmark URL into a list of related landmarks (museums adjacent to a famous one, e.g.)
  • Market mapping: chain this actor with the regular Google Maps scraper to expand from a small seed list to a full neighborhood map in two passes
  • SEO & local marketing: see which competitors Google associates with your business listing

FAQ

Does it need cookies / login / an API key?
No. The actor runs against the public Google Maps web UI.

Does it need a proxy?
No login or cookies are required. It tries direct access and lazy-load retries first, then uses the hardcoded Apify US RESIDENTIAL recovery path when the related surface is not observed. If all cookieless attempts fail within the bounded window, it completes with zero rows and an explicit source-unavailable status; it never invents related places.

Will every place have related places?
Carousel availability varies by place and run. The actor retries lazy loading and can use a bounded residential recovery attempt; it omits fields or rows it cannot verify rather than fabricating a complete-looking list.

How many results per page?
Google itself shows 5–8 cards per carousel; the actor's maxResults caps that — and if Google ever increases the carousel size, the actor automatically picks up the extra cards.

Does it work in non-English markets?
Yes. The language input controls the Maps locale. The actor recognizes the observed related-hotel section variants in all 11 supported locales and parses the localized rating, review-count, price, distance, and hotel-class shapes without translating or inventing values. For example, Japanese つ星 and クチコミ … 件, Korean 성급 and 리뷰 … 개, Chinese 星级, Arabic نجمة/تعليقًا, and hyphenated Russian star labels are retained as real Google output. A conditional field is omitted when Google does not expose it.

The public locale oracle and private cloud canaries found that the same four-card hotel carousel was available anonymously in English, Chinese, and Arabic, with cookie-reference contexts used only for QA comparison. See the redacted evidence under Google-Maps/RESEARCH/CODEX/test/.

Can I run it on multiple URLs at once?
Yes — point it at one URL per run. To process many URLs in a batch, run the actor multiple times (e.g., from the Apify Scheduler or a parent actor); each run's output goes to its own dataset and includes the source identity fields (sourcePlaceId and/or sourceFeatureId) so you can join them downstream.

Data Source

Public Google Maps web UI. No login, no API key, no paid third-party service required.

Please use this public data lawfully and in line with Google's terms; how you apply it is your own responsibility.

🗺️ Complete Google Maps Scraper Suite

This actor is part of a comprehensive Google Maps data extraction toolkit by crawlerbros. All actors run cookielessly on the free Apify plan with bounded direct, retry, and residential recovery paths, and return clean, structured data.

ActorWhat it does
🏢 Google Maps Business ScraperExtract business data — name, address, phone, website, rating, reviews, hours, amenities
⭐ Google Maps Reviews ScraperScrape reviews with reviewer Local Guide level, photos, mentioned items, owner replies
📸 Google Maps Photos ScraperExtract all photos from any place — max-resolution URLs, contributor info, categories
🕐 Google Maps Business Hours ScraperFull 7-day hours, timezone, current local time, next open/close, holiday hours
📊 Google Maps Popular Times ScraperBusy hours histogram for all 7 days + current busyness + typical visit time
📧 Google Maps Email ExtractorFind business emails + social media links by crawling websites
🗺️ Google Maps Area ScannerGeographic grid scanning — bypass the 120-place limit with bounding box / circle / polygon
💼 Google Maps Leads ScraperB2B lead generation with email + phone enrichment, US states + global countries
🤖 Google Maps MCP ServerUnified MCP server combining search + reviews for AI assistants
🧭 Google Maps Directions ScraperA→B routing — distance, duration, traffic, route alternatives for driving/walking/transit
📍 Google Maps Geocoding ScraperBidirectional geocoding — address ↔ coordinates, with address components
🍽️ Google Maps Menu ScraperRestaurant menu items, prices, descriptions, photos
📌 Google Maps Nearby ScraperFind places near a coordinate point — lightweight POI search by category
📋 Google Maps Place List ScraperExtract Google's curated "Top X in Y" lists — best hotels/restaurants/things to do
🌍 Google Maps Timezone ScraperIANA timezone + current local time from coordinates