Google Maps Shared List Scraper avatar

Google Maps Shared List Scraper

Pricing

from $0.50 / 1,000 saved places

Go to Apify Store
Google Maps Shared List Scraper

Google Maps Shared List Scraper

Export places from public Google Maps shared lists as structured rows. Keep source-list context, addresses, ratings, phones, websites, hours, photos, and optional public website emails when available.

Pricing

from $0.50 / 1,000 saved places

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

1

Bookmarked

76

Total users

13

Monthly active users

2 days ago

Last modified

Share

🗺️ Export places from a Google Maps shared list

Google Maps Shared List Scraper helps travelers, researchers, and sales teams turn public Google Maps shared lists into structured place data. Add one or more public list links and get rows with source-list details, addresses, ratings, phone numbers, websites, hours, photos, reviews, and more when Google Maps shows them.

Use cases

📦 Google Maps place and list data

Each saved dataset row represents the first eligible match for one place from a public shared list. The row keeps list position and source-list context with public place details. Google Maps may not expose every field for every place, so unavailable fields can be absent.

🚀 Run the shared-list export

  1. Open the Actor in Apify Console.
  2. Add one or more public links under Shared list URLs.
  3. Set Places per list and, if needed, Total places.
  4. Start the run and open the dataset.

Public list rules

Short maps.app.goo.gl links and full google.com/maps shared-list links are accepted when they lead to a public list. Private or login-protected lists are not supported.

⚙️ Input

Input fields

FieldTypeWhat it does
listUrlsarray of stringRequired public Google Maps shared-list links, one per line. Short links and full shared-list links work.
maxPlacesPerListintegerOptional positive cap for each list. Leave it empty to return all available places until the source is exhausted.
maxResultsintegerOptional positive cap across the run. Leave it empty to return all available places until the source is exhausted.
includeWebsiteEmailsbooleanWhen on, visit discovered business websites and add public contact emails when found. This can make the run take longer.
maxEmailsPerPlaceintegerWhen Website emails is on, keep up to this many public emails from each place website. It accepts 1 to 10 and is ignored when Website emails is off.

Successful input example

This example is copied from the hosted Actor's public default input.

{
"listUrls": [
"https://maps.app.goo.gl/MMjvFNWpUTjiupHc9"
],
"maxPlacesPerList": 2,
"maxResults": 2,
"includeWebsiteEmails": false,
"maxEmailsPerPlace": 3
}

🧾 Output

Dataset link

The results output is a string link to the default dataset. Each saved row follows the field table below.

Output fields

FieldTypeWhat it does
namestringPlace name shown by Google Maps.
notestringPublic note for the place in the shared list.
addressstringFull place address shown by Google Maps.
citystringCity from the public address.
statestringState, province, or region from the public address.
postalCodestringPostal code from the public address.
countryCodestringCountry code from the public address.
latitudenumberPlace latitude from Google Maps.
longitudenumberPlace longitude from Google Maps.
categoriesarray of stringGoogle Maps categories for the place.
ratingnumberGoogle Maps star rating.
reviewCountintegerNumber of Google Maps reviews.
phonestringPublic phone number shown by Google Maps.
websitestringBusiness website URL shown by Google Maps.
emailsarray of stringPublic emails found on the business website when Website emails is on and an email is found.
currentStatusstringCurrent Google Maps status, such as open or closed.
isClaimedbooleanWhether Google Maps marks the listing as claimed.
isPermanentlyClosedbooleanWhether Google Maps marks the place as permanently closed.
businessHoursarray of objectOpening hours exposed by Google Maps for the place.
businessHours[].daystringDay of the week.
businessHours[].hoursarray of stringOpening times exposed for that day.
businessHours[].hours[]stringOne opening time or a closed-day value.
timezonestringPlace timezone.
plusCodestringGoogle Maps plus code.
descriptionstringPublic Google Maps place description when available.
priceLevelstringPublic price indication shown by Google Maps.
photosarray of stringPublic Google-hosted photo URLs for the place.
reviewsarray of objectRecent public Google Maps reviews.
reviews[].reviewerNamestringPublic name shown for the reviewer.
reviews[].reviewerProfileUrlstringPublic profile URL for the reviewer.
reviews[].reviewerPhotoUrlstringPublic photo URL for the reviewer.
reviews[].reviewerIdstringPublic identifier for the reviewer.
reviews[].ratingnumberStar rating for the review.
reviews[].textstringText of the review.
reviews[].publishedAtTextstringDate text shown for the review.
reviews[].publishedAtstringReview date when available.
reviews[].languagestringLanguage of the review.
reviews[].reviewUrlstringURL for opening the review.
reviews[].reviewIdstringPublic identifier for the review.
googleMapsUrlstringURL for opening the place in Google Maps.
placeIdstringCompact Google place ID.
placeIdChIJstringGoogle ChIJ place ID.
cidstringGoogle Maps CID.
listIdstringGoogle Maps shared-list ID.
sourceListNamestringPublic name of the shared list that contains the place.
sourceListUrlstringSubmitted or resolved shared-list URL that first found this place.
sourceIndexintegerOne-based place position in the source shared list.
savedByNamestringPublic name of the user who saved the place.
savedAtstringSaved date from Google Maps.

Example place row

This shortened row is copied from a successful current-beta run with Website emails enabled and a public email found. It keeps useful place, list, and contact fields. The photos and reviews arrays use the string "..." as an omission marker, so this is not a complete row.

{
"name": "State Bird Provisions",
"note": "https://www.opentable.com/r/state-bird-provisions-san-francisco",
"address": "State Bird Provisions, 1529 Fillmore St, San Francisco, CA 94115",
"city": "San Francisco",
"state": "California",
"postalCode": "94115",
"countryCode": "US",
"latitude": 37.783732199999996,
"longitude": -122.4329951,
"categories": [
"American restaurant",
"Asian fusion restaurant",
"Californian restaurant",
"Restaurant"
],
"rating": 4.5,
"reviewCount": 196,
"phone": "+1 415-795-1272",
"website": "http://www.statebirdsf.com/",
"emails": [
"info@statebirdsf.com"
],
"currentStatus": "Closed · Opens 5:30 PM",
"isClaimed": true,
"isPermanentlyClosed": false,
"businessHours": [
{
"day": "Sunday",
"hours": [
"5:30 PM-10 PM"
]
},
{
"day": "Monday",
"hours": [
"5:30 PM-10 PM"
]
},
{
"day": "Tuesday",
"hours": [
"5:30 PM-10 PM"
]
},
{
"day": "Wednesday",
"hours": [
"5:30 PM-10 PM"
]
},
{
"day": "Thursday",
"hours": [
"5:30 PM-10 PM"
]
},
{
"day": "Friday",
"hours": [
"5:30 PM-10:30 PM"
]
},
{
"day": "Saturday",
"hours": [
"5:30 PM-10:30 PM"
]
}
],
"timezone": "America/Los_Angeles",
"plusCode": "849VQHM8+FR",
"priceLevel": "$100+",
"photos": [
"..."
],
"reviews": [
"..."
],
"googleMapsUrl": "https://www.google.com/maps?cid=7596983855284674601",
"placeId": "/m/0xmdqk9",
"placeIdChIJ": "ChIJQ7kGpLmAhYARKeCe2pDobWk",
"cid": "7596983855284674601",
"listId": "MVwuZ5EWRrW3kuXnMtpxlA",
"sourceListName": "CS Reserve Exclusive OpenTable",
"sourceListUrl": "https://maps.app.goo.gl/L8auUjEtcSsp3wBV8",
"sourceIndex": 1,
"savedByName": "Xander Sigler",
"savedAt": "2026-03-07T02:27:04.171Z"
}

You can export dataset rows in the formats offered by Apify or read them through the dataset API.

💳 Pricing

Saved-place charges

Pay-per-event pricing charges one event for each place saved to the dataset. Your total depends on the number of places saved and the current event price shown by Apify.

🔌 Integrations

Workflow options

Use the Apify API, schedules, webhooks, or available Apify integrations to send saved rows to your workflow. This video shows how to connect an Actor with other tools:

❓ FAQ

Yes. Add a public maps.app.goo.gl shared-list link or a full Google Maps shared-list link.

Can I submit more than one shared list?

Yes. Add one or more public list links. The saved row keeps the source-list context for its first eligible match.

Can I scrape a private Google Maps list?

No. The list must open without a Google login.

Can I run the Actor through the Apify API?

Yes. Start the Actor with the same public input and read the default dataset after the run.

Do I need a Google Maps API key?

No. Add the public shared-list URL to the Actor input.

Why are some place fields empty?

Google Maps may not show every field for every place. The Actor keeps the public fields available for that place.

Does businessHours always contain the full week?

No. It contains the opening hours Google Maps exposes for that place, which may be only part of the week.

What happens when a place appears more than once?

The first eligible match is saved. A later match for the same place is ignored, so the saved row keeps only the first list context.

📝 Changelog

v0.2

  • Complete large public Google Maps lists more reliably, while keeping collected places available when a temporary source issue affects a list.
  • Include the public shared-list name with each exported place.

v0.1

  • Scrape complete shared lists with no preset place ceiling, or use any positive per-list and total place limits.

v0.0

  • Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré