ParseForge Scrapers

Google Maps Shared List Scraper

parseforge/google-maps-shared-list-scraper

Lead generationAutomationDeveloper tools

Extracts every place from a shared Google Maps list URL and returns each one as a flat row with name, address, phone, website, rating, and category. Export to CSV or JSON.

Run this scraper See the API call
Total users
348
Monthly active
6
Total runs
1.3K
Bookmarked
4
Rating
5.0 (3)
Last modified
2 days ago

This scraper was last updated on .

What does the Google Maps Shared List Scraper return?

ParseForge Banner

📍 Google Maps Shared List Scraper

🚀 Turn any Google Maps shared list into a structured dataset. Paste short links like maps.app.goo.gl/..., extract 40+ fields per place, pull emails from websites, photos, full weekly hours, and top reviews. No API key, no OAuth, no scraping pipeline to maintain.

🕒 Last updated: 2026-04-23 · 📊 40+ fields · 📧 Email extraction · 📷 Photos · 🕒 Hours · ⭐ Reviews · 🚫 No auth required

🎁 Paid plan adds

📧
Website emails
Extracted contact addresses
🕒
Full hours
Day-by-day schedule
📷
Photo gallery
Up to 10 place photos
⭐
Review snippets
Recent review text

The Google Maps Shared List Scraper resolves shared maps.app.goo.gl URLs, parses the underlying list payload, and enriches every place with full Google Maps detail data. You get names, categories, addresses, coordinates, phone numbers, websites, ratings, photos, weekly hours, accessibility attributes, and on paid plans, emails scraped from the place website plus the top 10 reviews.

Shared Google Maps lists are the way people bookmark restaurants, hotels, cafes, and travel spots. They are trivial to build and share, but Google offers no export button, no public API, and no bulk lookup. This Actor closes that gap. Paste one URL or one hundred, get a clean CSV or JSON, and move on.

🎯 Target Audience 💡 Primary Use Cases
Travel planners, food bloggers, sales teams, market researchers, real-estate analysts, agencies, relocation consultants Trip itineraries, lead lists from curated city guides, competitor mapping, venue outreach campaigns, dataset building, content syndication

📋 What the Google Maps Shared List Scraper does

One compact workflow turns a shared list link into a structured dataset:

  • 🔗 Short link resolver. Expands maps.app.goo.gl/... and long google.com/maps/@.../data=... URLs.
  • 📌 List parser. Reads place IDs, CIDs, coordinates, and list metadata directly from the shared payload.
  • 🔍 Place enricher. Fetches the full Google Maps detail record for every place in parallel.
  • 🧹 Deduplicator. Merges the same place across multiple lists and preserves every source list reference.
  • 📧 Email extraction. Visits the place website and pulls publicly listed contact emails (paid plan).
  • ⭐ Review collector. Captures the top 10 visible reviews with author, rating, text, and date (paid plan).
  • 📷 Photo gallery. Full photo set per place including the owner-submitted hero image (paid plan).
  • 🕒 Weekly hours. Seven-day opening schedule plus current open/closed status (paid plan).

Each output row carries an imageUrl, a Google Maps URL, latitude, longitude, plus code, timezone, category hierarchy, accessibility flags, and source list tracking so you always know where a place came from.

💡 Why it matters: a curated Google Maps list is the closest thing to a vetted recommendation. Turning that recommendation into a workable spreadsheet or CRM import used to mean copy-paste or custom scraping. This Actor makes the whole list downloadable in one click.


🎬 Full Demo

🚧 Coming soon: a 3-minute walkthrough showing how to go from a pasted shared link to a downloaded dataset with emails and reviews.


⚙️ Input

InputTypeDefaultBehavior
listUrlsstring[]requiredOne or more shared list URLs. Accepts maps.app.goo.gl/... short links and full google.com/maps/... URLs.
maxPlacesPerListinteger100Cap on places extracted from each list. Free plan capped at 10, paid plan up to 500.
enableAIEnrichmentbooleanfalseAdds travel-recommendation scores, best-for tags, and fills missing websites when enabled.
openRouterApiKeystringnullRequired only when enableAIEnrichment is on. Stored as a secret.
outputFormatstring"csv"Key-value store export. "csv" or "json". Dataset is always available as CSV, Excel, JSON, or XML.
maxConcurrencyinteger5Parallel detail requests. Range 1 to 10.
proxyConfigurationobjectresidentialUses Apify residential proxy by default. Override if you need a specific group.

Example: a single Tokyo food list.

{
    "listUrls": ["https://maps.app.goo.gl/MMjvFNWpUTjiupHc9"],
    "maxPlacesPerList": 100,
    "outputFormat": "csv"
}

Example: merge three city guides into one deduplicated dataset.

{
    "listUrls": [
        "https://maps.app.goo.gl/MMjvFNWpUTjiupHc9",
        "https://maps.app.goo.gl/abc123xyz",
        "https://maps.app.goo.gl/def456uvw"
    ],
    "maxPlacesPerList": 200,
    "maxConcurrency": 8,
    "outputFormat": "json"
}

⚠️ Good to Know: the list itself must be shared publicly. Private lists and lists shared only with a specific Google account cannot be read. Emails, full hours, photo galleries, and reviews are paid-plan fields. Free runs return the core 20 fields for up to 10 places per list.


📊 Output

Each place record carries 40+ fields covering identity, location, contact, ratings, media, hours, attributes, and source tracking. Download as CSV, Excel, JSON, or XML.

🧾 Schema
Field Type Example
📷 heroPhotoUrl string | null "https://lh5.googleusercontent.com/.../photo.jpg"
🏷️ name string "BONGEN COFFEE Tokyo Ginza"
🗂️ category string "Coffee shop"
🗂️ categories string[] ["Coffee shop", "Cafe", "Coffee roastery"]
📍 address string "BONGENCOFFEE Ginza, 2 Chome-16-3 Ginza, Chuo City, Tokyo 104-0061, Japan"
🏙️ city string "Chuo City"
🌐 country string "Japan"
🏳️ countryCode string "JP"
🗺️ state string "Tokyo"
🏘️ neighborhood string "Chuo City"
📮 postalCode string "104-0061"
📍 latitude number 35.6710713
📍 longitude number 139.7708038
🌐 plusCode string "8Q7XMQCC+C8"
🕰️ timezone string "Asia/Tokyo"
⭐ rating number | null 4.4
💬 reviewCount integer | null 1284
💲 priceLevel string | null "$$"
📞 phone string | null "+81 3-6264-3988"
🌍 website string | null "https://bongen-shirafushi-coffee.com/"
🌐 websiteDomain string | null "bongen-shirafushi-coffee.com"
📧 emails string[] ["hello@bongen.jp"] (paid)
📝 description string | null "Specialty pour-over coffee in Ginza."
🕒 currentStatus string | null "Closed · Opens 10 AM"
🕒 isOpen boolean | null false
🕒 businessHours array 7-day schedule (paid)
♿ attributes object { "wheelchairAccessibleEntrance": false }
🚪 permanentlyClosed boolean false
📷 photos string[] photo gallery (paid)
⭐ reviews array top 10 reviews (paid)
🆔 placeId string "11gdkpshx0"
🆔 cid string "0x60188be05b6d603f:..."
📂 sourceLists string[] ["https://maps.app.goo.gl/MMjvFNWpUTjiupHc9"]
📂 sourceListNames string[] ["Tokyo"]
🔗 url string "https://www.google.com/maps/search/?api=1&query=..."
🕒 scrapedAt ISO 8601 "2026-04-21T17:29:32.844Z"
📦 Sample records
☕ Coffee shop: BONGEN COFFEE Tokyo Ginza
{
    "placeId": "11gdkpshx0",
    "name": "BONGEN COFFEE Tokyo Ginza",
    "address": "BONGENCOFFEE Ginza, 2 Chome-16-3 Ginza, Chuo City, Tokyo 104-0061, Japan",
    "streetAddress": "2 Chome-16-3 Ginza",
    "city": "Chuo City",
    "state": "Tokyo",
    "postalCode": "104-0061",
    "countryCode": "JP",
    "latitude": 35.6710713,
    "longitude": 139.7708038,
    "plusCode": "8Q7XMQCC+C8",
    "timezone": "Asia/Tokyo",
    "rating": 4.4,
    "category": "Coffee shop",
    "categories": ["Coffee shop", "Cafe", "Coffee roastery", "Coffee stand"],
    "phone": "+81 3-6264-3988",
    "website": "https://bongen-shirafushi-coffee.com/",
    "websiteDomain": "bongen-shirafushi-coffee.com",
    "currentStatus": "Closed · Opens 10 AM",
    "isOpen": false,
    "attributes": { "wheelchairAccessibleEntrance": false },
    "heroPhotoUrl": "https://lh5.googleusercontent.com/.../photo.jpg",
    "sourceLists": ["https://maps.app.goo.gl/MMjvFNWpUTjiupHc9"],
    "sourceListNames": ["Tokyo"],
    "url": "https://www.google.com/maps/search/?api=1&query=35.6710713,139.7708038",
    "scrapedAt": "2026-04-21T17:29:32.844Z"
}
🍜 Ramen restaurant: Dashi no Toriko, Roppongi
{
    "placeId": "11sv4_qrqs",
    "name": "Dashi no Toriko",
    "address": "Dashi no Toriko, ペンタビル 1F 3 Chome-14-16 Roppongi, Minato City, Tokyo 106-0032, Japan",
    "city": "Minato City",
    "state": "Tokyo",
    "postalCode": "106-0032",
    "countryCode": "JP",
    "latitude": 35.6627008,
    "longitude": 139.7343056,
    "plusCode": "8Q7XMP7M+3P",
    "timezone": "Asia/Tokyo",
    "rating": 3.8,
    "category": "Ramen restaurant",
    "categories": ["Ramen restaurant"],
    "website": "https://www.instagram.com/dashinotorico/",
    "websiteDomain": "instagram.com",
    "attributes": { "wheelchairAccessibleEntrance": false },
    "heroPhotoUrl": "https://lh3.googleusercontent.com/.../photo.jpg",
    "sourceLists": ["https://maps.app.goo.gl/MMjvFNWpUTjiupHc9"],
    "sourceListNames": ["Tokyo"],
    "url": "https://www.google.com/maps/search/?api=1&query=35.6627008,139.7343056",
    "scrapedAt": "2026-04-21T17:29:32.842Z"
}
🥩 Steak house: Mori Mori Tei, Karuizawa
{
    "placeId": "1td1pzb1",
    "name": "Mori Mori Tei",
    "address": "Mori Mori Tei, 115 Oiwake, Karuizawa, Kitasaku District, Nagano 389-0115, Japan",
    "streetAddress": "115 Oiwake",
    "city": "Karuizawa",
    "state": "Kitasaku District, Nagano",
    "postalCode": "389-0115",
    "countryCode": "JP",
    "latitude": 36.3359222,
    "longitude": 138.535553,
    "plusCode": "8Q8W8GPP+96",
    "timezone": "Asia/Tokyo",
    "rating": 4.1,
    "category": "Steak house",
    "categories": ["Steak house"],
    "phone": "+81 267-44-1822",
    "currentStatus": "Closed · Opens 11:20 AM Thu",
    "isOpen": false,
    "sourceLists": ["https://maps.app.goo.gl/MMjvFNWpUTjiupHc9"],
    "sourceListNames": ["Tokyo"],
    "url": "https://www.google.com/maps/search/?api=1&query=36.3359491,138.535506",
    "scrapedAt": "2026-04-21T17:29:32.843Z"
}

✨ Why choose this Actor

Capability
🔗 Short link support. Paste maps.app.goo.gl/... directly. No manual URL cleanup, no need to resolve the redirect yourself.
📋 Multi-list deduplication. Run three city guides in one job. Same place across multiple lists is merged and both source lists are preserved on the record.
📧 Email extraction from websites. Paid plan visits the business website and pulls publicly listed contact emails, ideal for outreach lists.
⭐ Top 10 reviews. Paid plan captures author, rating, text, and published date for sentiment analysis and QA screening.
🕒 Full weekly hours. Seven-day opening schedule per place, not just the current open/closed tag.
📷 Full photo gallery. Owner-submitted hero image plus the full photo set, linkable and embeddable.
🚫 No Google account, no API key. Works entirely off public shared list data. No OAuth, no quota ceiling.

📊 A curated Google Maps list represents hours of human vetting. Exporting it into a CRM or spreadsheet turns that trust signal into a repeatable asset.


📈 How it compares to alternatives

Approach Cost Coverage Refresh Filters Setup
⭐ Google Maps Shared List Scraper (this Actor) $5 free credit, then pay-per-use Any public shared list Live per run Per-list cap, concurrency, AI enrichment ⚡ 2 min
Google Places API $17 per 1,000 Place Details calls Full Google Maps On-demand Heavy quota management 🐢 Days (OAuth + billing setup)
Manual copy-paste from the list Free Tiny Never None 🐌 Hours per list
Generic Google Maps scraper Varies Full search results Per run Query-based, not list-based ⏳ Does not read shared lists
Browser-extension exporters Free to $5 Visible rows only Manual None 🕒 Install + per-browser limits
Custom script Your dev time Depends Depends Depends 🐢 Days to weeks

Pick this Actor when the source of truth is already a shared list and you want the whole thing downloaded in one click.


🚀 How to use

  1. 📝 Sign up. Create a free account with $5 credit (takes 2 minutes).
  2. 🌐 Open the Actor. Go to the Google Maps Shared List Scraper page on the Apify Store.
  3. 🎯 Paste list URLs. Drop one or more maps.app.goo.gl/... links into the input form.
  4. 🚀 Run it. Click Start and let the Actor resolve, parse, and enrich every place.
  5. 📥 Download. Grab your results in the Dataset tab as CSV, Excel, JSON, or XML.

⏱️ Total time from signup to downloaded dataset: 3-5 minutes. No coding required.


💼 Business use cases

🧳 Travel & Hospitality
  • Turn a friend's Tokyo list into a bookable itinerary with hours and phones
  • Pull city-guide lists curated by travel writers into editorial databases
  • Build destination landing pages with names, photos, and ratings
  • Feed concierge apps with pre-vetted venue data
📣 Sales & Marketing
  • Extract emails from a "best restaurants in SF" list for outreach campaigns
  • Build prospect lists of boutique hotels from shared travel guides
  • Sync venue data into HubSpot, Salesforce, or Airtable
  • Score lead quality with Google ratings and review counts
📊 Market Research & Analysts
  • Map competitor locations from analyst-curated shared lists
  • Benchmark ratings and review counts across a peer group
  • Track category mix inside neighborhood shopping lists
  • Export historical snapshots for price-level tracking
🏢 Agencies & Operators
  • White-label location datasets for client deliverables
  • Feed venue databases that power local-SEO pages at scale
  • Enrich relocation packets with curated neighborhood lists
  • Build local event pages from shared venue lists in minutes

🌟 Beyond business use cases

Data like this powers more than commercial workflows. The same structured records support research, education, civic projects, and personal initiatives.

🎓 Research and academia
  • Empirical datasets for papers, thesis work, and coursework
  • Longitudinal studies tracking changes across snapshots
  • Reproducible research with cited, versioned data pulls
  • Classroom exercises on data analysis and ethical scraping
🎨 Personal and creative
  • Side projects, portfolio demos, and indie app launches
  • Data visualizations, dashboards, and infographics
  • Content research for bloggers, YouTubers, and podcasters
  • Hobbyist collections and personal trackers
🤝 Non-profit and civic
  • Transparency reporting and accountability projects
  • Advocacy campaigns backed by public-interest data
  • Community-run databases for local issues
  • Investigative journalism on public records
🧪 Experimentation
  • Prototype AI and machine-learning pipelines with real data
  • Validate product-market hypotheses before engineering spend
  • Train small domain-specific models on niche corpora
  • Test dashboard concepts with live input

🔌 Automating Google Maps Shared List Scraper

Control the scraper programmatically for scheduled runs and pipeline integrations:

  • 🟢 Node.js. Install the apify-client NPM package.
  • 🐍 Python. Use the apify-client PyPI package.
  • 📚 See the Apify API documentation for full details.

The Apify Schedules feature lets you trigger this Actor on any cron interval. Daily or weekly refreshes keep downstream CRMs and content databases in sync with the source list.


🤖 Ask an AI assistant about this scraper

Open a ready-to-send prompt about this ParseForge actor in the AI of your choice:


❓ Frequently Asked Questions

🧩 How does it work?

Paste one or more shared list URLs. The Actor expands any maps.app.goo.gl/... short link, reads the underlying list payload (place IDs and coordinates), and fetches the full Google Maps detail record for every place in parallel. Results are deduplicated across lists and returned as a structured dataset.

🔗 Which URL formats are supported?

Short links in the form https://maps.app.goo.gl/... and full list URLs in the form https://www.google.com/maps/@.../data=.... Anything you can share from the Google Maps app or website should resolve.

🔒 Does the list have to be public?

Yes. Only lists shared publicly (anyone with the link) can be read. Lists shared privately with specific Google accounts are not accessible.

📧 How does email extraction work?

On paid plans, the Actor visits the place website and pulls any publicly listed contact email from the homepage and common contact pages. Only publicly exposed addresses are captured.

⭐ Can I get reviews?

Yes, on paid plans. The Actor returns the top 10 visible reviews per place with author name, star rating, text, and published date.

🕒 Do I get weekly business hours?

Yes, on paid plans. The full 7-day schedule is returned in the businessHours array. Free plans still see the currentStatus field (for example, Closed · Opens 10 AM).

🔁 What if the same place appears in multiple lists?

The Actor deduplicates automatically. The merged record keeps every originating list in the sourceLists and sourceListNames arrays so you know which lists contributed.

🌐 Do I need a Google API key?

No. The Actor works entirely off public list data and public Google Maps pages. No Google Cloud project, no OAuth, no billing setup.

⏰ Can I schedule regular runs?

Yes. Use Apify Schedules to re-run this Actor on any cron interval (hourly, daily, weekly) and keep a downstream CRM or spreadsheet in sync with the source list.

💳 Do I need a paid Apify plan?

No. The free plan is enough for testing (10 places per list). A paid plan adds emails, reviews, full hours, full photo galleries, and lifts the per-list cap to 500 places.

🔁 What happens if a run fails?

Apify retries transient errors automatically. If a run still fails, inspect the log in the Runs tab, adjust the input, and re-run. Partial datasets from failed runs are preserved.

🆘 What if I need help?

Our support team is here to help. Contact us through the Apify platform or use the Tally form linked below.


🔌 Integrate with any app

Google Maps Shared List Scraper connects to any cloud service via Apify integrations:

  • Make - Automate multi-step workflows
  • Zapier - Connect with 5,000+ apps
  • Slack - Get run notifications in your channels
  • Airbyte - Pipe place data into your warehouse
  • GitHub - Trigger runs from commits and releases
  • Google Drive - Export datasets straight to Sheets

You can also use webhooks to trigger downstream actions when a run finishes. Push fresh place data into your product backend, or alert your team in Slack.


🔗 Recommended Actors

💡 Pro Tip: browse the complete ParseForge collection for more location-data scrapers.


🆘 Need Help? Open our contact form to request a new scraper, propose a custom data project, or report an issue.


⚠️ Disclaimer: this Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Google LLC. Google, Google Maps, and related marks are trademarks of Google LLC. Only publicly accessible data from shared Google Maps lists is collected. Use responsibly and in line with applicable law and the terms of the services you consume.

What input does the Google Maps Shared List Scraper accept?

FieldTypeWhat it doesDefault
listUrls required array Paste shared list URLs, one per line ["https://maps.app.goo.gl/MMjvFNWpUTjiup
maxPlacesPerList integer How many places to extract from each list (1-500) 100
enableAIEnrichment boolean Add AI recommendations, scores, and find missing websites/phones false
openRouterApiKey string Your OpenRouter API key. Get one free at openrouter.ai not set
outputFormat string (2 options) Choose CSV for spreadsheets or JSON for developers csv
maxConcurrency integer Parallel requests (higher = faster, more memory) 5
proxyConfiguration object Proxy settings for reliable scraping {"useApifyProxy":true,"apifyProxyGroups"

How much does the Google Maps Shared List Scraper cost?

from $16.90 per 1,000 results

Charged forWhat it isPrice each
result Single result in the default dataset. $0.0169 to $0.01755
Actor Start Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). $0.0325 to $0.039

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

How do I call the Google Maps Shared List Scraper API?

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST · run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~google-maps-shared-list-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "listUrls": [
      "https://maps.app.goo.gl/MMjvFNWpUTjiupHc9"
    ],
    "maxPlacesPerList": 100,
    "enableAIEnrichment": false,
    "outputFormat": "csv",
    "maxConcurrency": 5
  }'

What example inputs can I use?

Use these inputs to see how a run is configured.

input.json
{
  "listUrls": [
    "https://maps.app.goo.gl/MMjvFNWpUTjiupHc9"
  ],
  "maxPlacesPerList": 100,
  "enableAIEnrichment": false,
  "outputFormat": "csv",
  "maxConcurrency": 5
}

What do users say about the Google Maps Shared List Scraper?

Rated 5.0 out of 5 across 3 reviews. Read them on Apify.

How do I report an issue with the Google Maps Shared List Scraper?

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

What related scrapers can I use?

Run Google Maps Shared List Scraper on Apify All scrapers