Google Maps Place List Scraper avatar

Google Maps Place List Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Google Maps Place List Scraper

Google Maps Place List Scraper

Extract ranked places from Google's curated Top lists ('Top hotels in Paris', 'Best coffee in Brooklyn', 'Things to do in Tokyo') or any Google Maps list URL.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

a day ago

Last modified

Share

Extract ranked places from Google's curated Top lists on Google Maps - e.g. Top hotels in Paris, Best coffee in Brooklyn, Things to do in Tokyo - or from a direct Google Maps list / search URL.

What this actor does

  • Top list query mode - type a curated query and get the ranked feed Google shows
  • Direct list URL mode - paste any Google Maps list or search URL
  • Rank preserved - each record carries the position it had in the feed
  • Highlights - the short feature pills Google prints on the list card (Pool, Spa, Free parking, etc.)
  • Amenities - the fuller set of amenity badges the place page itself publishes (with enrichDetails)
  • Optional full enrichment - fetches phone, website, full address, coordinates, place ID via the place page
  • Cookieless recovery - direct access is followed by a hardcoded Apify US RESIDENTIAL recovery path when needed
  • No cookies, no login

Input

FieldTypeDescription
modeenum (topList / listUrl)Choose how to drive the run. Default topList.
querystringThe curated list query (required when mode=topList).
listUrlstringA Google Maps list / search URL (required when mode=listUrl); country-domain and supported short-link variants are normalized.
maxResultsinteger (1-100,000)Requested ceiling. The actor follows the public feed until this ceiling, source exhaustion, or its bounded runtime deadline; Google may expose fewer records. Default 30.
enrichDetailsbooleanVisit each place page for full details. Default true.
languageenumInterface language. Default en.
proxyConfigurationproxyOptional. Defaults to a bounded hardcoded US RESIDENTIAL recovery path after direct attempts.

Examples

Example: curated hotel list

{
"mode": "topList",
"query": "Top hotels in Paris",
"maxResults": 10,
"language": "en"
}

Example: restaurant list with lightweight records

{
"mode": "topList",
"query": "Best sushi restaurants in Tokyo",
"maxResults": 25,
"enrichDetails": false,
"language": "ja"
}

Example: direct Google Maps list URL

{
"mode": "listUrl",
"listUrl": "https://www.google.com/maps/search/top+coffee+shops+in+Seattle",
"maxResults": 50
}

Output per place

{
"recordType": "business",
"listSource": "Top hotels in Paris",
"rank": 1,
"name": "Hôtel Le Bristol Paris",
"categoryName": "5-star hotel",
"totalScore": 4.7,
"reviewsCount": 2891,
"address": "112 Rue du Faubourg Saint-Honoré, 75008 Paris, France",
"phone": "+33 1 53 43 43 00",
"website": "https://www.oetkercollection.com/...",
"priceLevel": "$$$$",
"price": "PKR 980K",
"placeId": "ChIJ...",
"featureId": "0x...:0x...",
"location": {"lat": 48.8718, "lng": 2.3163},
"googleMapsUrl": "https://www.google.com/maps/place/...",
"highlights": ["Pool", "Spa", "Restaurant"],
"amenities": ["Free Wi-Fi", "Paid breakfast", "Parking", "Accessible", "Indoor pool", "Air-conditioned", "Laundry service", "Business center", "Pet-friendly", "Room service", "Kid-friendly", "Restaurant", "Spa", "Fitness center", "Bar"],
"sourceUrl": "https://www.google.com/maps/place/...",
"scrapedAt": "2026-06-16T08:00:00+00:00"
}

A canonical ChIJ... token is always reported as placeId. A legacy 0x...:0x... token is reported as featureId and is never relabelled as a Place ID; if only the legacy form is visible, placeId is omitted rather than filled with it.

priceLevel and price are different datapoints. priceLevel is the standing price band Google shows for a place ($$$$, €€) — a stable classification. price is a price Google prints on the list card itself, exactly as displayed and often as a nightly rate on hotel lists (e.g. PKR 980K for the Ritz, PKR 933K for the Four Seasons). It is returned verbatim — never converted, normalised, or turned into a number — because that string is currency- and viewer-localized and can change between renders (the same hotel was seen at $851, $978, $1,017, and in several currencies depending on the viewer). It is a display string, not a stable fact; when no price is shown on the card the field is omitted (not empty).

Empty / unavailable fields are omitted entirely - no null or "" values appear in the dataset.

With enrichDetails: true (the default), a record may also carry description, plusCode, ratingHistogram, hours, hoursStatus, isOpenNow, serviceOptions, amenities, menuLink, bookingLinks, photosSample, photoCount, popularTimesSummary, claimed, temporarilyClosed, and permanentlyClosed when Google exposes them on the place page.

highlights and amenities are different datapoints. highlights is the short set of feature pills Google prints on the list card itself (typically 3–5 items on a hotel card). amenities is read from the place page's own amenity strip when enrichDetails: true: every badge Google publishes there, including the ones behind "View more amenities", published exactly as displayed (e.g. Spa, Restaurant, Fitness center, Room service, Bar, Airport shuttle, Kitchens in some rooms). Nothing is translated, retitled, or invented. A badge that states the place does not have a feature (e.g. Pool unavailable) is not an amenity and is omitted, and the field is omitted entirely when Google shows no amenity strip — restaurants, cafés, and attractions usually have none, while hotels typically publish 10–19 badges.

Use cases

  • Travel & hospitality research (top hotels, top restaurants per city)
  • Local SEO competitor analysis
  • Lead generation for hospitality / F&B services
  • Tourism content (things-to-do compilations)
  • Market research for new locations

FAQ

Does it need cookies or an API key? No. The scraper is fully self-contained.

Will it work on the Apify free plan? Yes. No login or cookies are required; the actor uses the free-account-compatible Apify RESIDENTIAL group only as a bounded cookieless recovery path.

How many results can I get? You can request up to 100,000. A single public Google feed commonly exposes around 120 or fewer cards; the actor does not hard-clamp that observation and will continue if Google exposes more cards or pages.

Will the highlights match for every place? No. Google only shows feature pills on certain card types (notably hotels). Restaurants, cafés, and attractions usually have a short description instead.

How complete is amenities? It carries the whole set of amenity badges Google publishes for the place when enrichDetails: true, not a hand-picked subset — including the ones only revealed by "View more amenities" (e.g. a 5-star Paris hotel returns all 11–19 badges). Each value is the badge's own displayed text. The field is omitted when Google shows no amenity strip, so its absence means "not published by Google", never "no amenities".

Does it support non-English Maps interfaces? Yes - pick a language from the dropdown.

What happens when Google blocks a run or shows a degraded page? The run status tells the two cases apart. If Google served the results feed and it was genuinely empty, the status is "No places found for this query or list URL." If Google never rendered a results view at all (an upstream block or degraded response), the status instead reads "Google Maps did not return a results view for this query or list URL, even after retrying. This is an upstream block or degraded response, not an empty result set - retry later or configure a different proxy." A zero-row run is never presented as a legitimate empty result when the feed never loaded.

You are responsible for using this public data lawfully and in keeping with Google's terms.

🗺️ 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 Similar Places Scraper"People also search for" / related place discovery - competitor & alternative finder
🍽️ 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 Timezone ScraperIANA timezone + current local time from coordinates