Skip to content

Google Maps Reviews Scraper

Try for free

Extract public Google Maps reviews for a place URL or place ID, including the text, stars, date, owner reply, and the place itself.

⭐ Google Maps Reviews Scraper

Get every public Google Maps review for any place: text, translation, stars, dates, owner replies, photos and visit details, together with the place's name, address, rating and categories. Paste a place URL, a search URL or a place ID and get 10 newest reviews in a couple of seconds. No login, no API key, and $0.40 per 1,000 reviews.

✨ Why use Google Maps Reviews Scraper?

  • ⚡ Fast — reads Google's own review feed page by page, about 50 reviews per request, and scrapes up to six places at once.
  • 📅 Sort and stop where you need — newest, most relevant, highest or lowest rating; with a start date the run stops paging as soon as it passes that date.
  • 💬 Complete reviews — original text and Google's translation, owner reply with its exact date, review photos, review context ("Trip type", "Wait time") and aspect ratings ("Rooms 5, Service 4").
  • 🗺️ Place details on every row — title, address, coordinates, category, total score, review count, place ID, CID and more, so each row stands on its own.
  • 🔒 Privacy switch — turn reviewer names, profiles and photos off with one checkbox.
  • 💸 Cheap — one simple event per saved review, no monthly rental.

🎯 Use cases

  • 📈 Reputation monitoring — schedule a daily run with Newest sorting and a start date of 1 day to catch new reviews for your locations.
  • 🕵️ Competitor research — compare ratings, complaints and owner response habits across every restaurant or hotel in a search.
  • 🧠 Sentiment analysis and AI — feed review text, translations and stars into your NLP or LLM pipeline.
  • 🏨 Hospitality insights — use aspect ratings (rooms, service, location) and review context to see what guests praise or dislike.
  • 💬 Customer quotes — pull the best 5-star reviews for marketing, or the 1-star ones for support follow-up.

🚀 How to use

  1. Paste one or more Google Maps place URLs, search URLs (for example https://www.google.com/maps/search/pizza+near+times+square) or place IDs.
  2. Set Number of reviews per place (use 0 for all reviews).
  3. Optionally pick a sort order, a start date, a keyword filter or another language.
  4. Click Start and wait a few seconds.
  5. Download the results as JSON, CSV, Excel or HTML, or read them through the API.

📥 Input

FieldWhat it does
startUrlsGoogle Maps place URLs, search URLs (first page, up to 20 places) or ?cid= links
placeIdsGoogle place IDs such as ChIJLU7jZClu5kcR4PcOOO6p3I0
maxReviewsReviews per place, default 10; 0 means every review
reviewsSortnewest, mostRelevant, highestRanking or lowestRanking
reviewsStartDateOnly reviews on or after a date: 2024-05-03 or relative like 8 days, 3 months
reviewsFilterStringKeep only reviews containing these words
languageLanguage of labels, relative dates and translations (default en)
personalDataInclude reviewer name, ID, profile URL, photo and review link (default on)
{
  "startUrls": [
    { "url": "https://www.google.com/maps/place/Eiffel+Tower/@48.8583701,2.2944813,17z/data=!3m1!4b1!4m6!3m5!1s0x47e66e2964e34e2d:0x8ddca9ee380ef7e0!8m2!3d48.8583701!4d2.2944813" }
  ],
  "maxReviews": 10,
  "reviewsSort": "newest",
  "language": "en",
  "personalData": true
}

📤 Output

One row per review. The main fields:

FieldDescription
text, textTranslatedReview text as written, and Google's translation into your language
stars, ratingStar rating 1–5 (rating holds partner scales such as 4/10)
publishedAtDate, publishAtExact ISO time and Google's relative time ("3 months ago")
responseFromOwnerText, responseFromOwnerDateOwner reply and its exact time
reviewImageUrlsPhotos attached to the review
reviewContext, reviewDetailedRatingVisit details and aspect ratings
name, reviewerId, reviewerUrl, reviewerPhotoUrl, reviewerNumberOfReviews, isLocalGuideReviewer details (when personalData is on)
reviewId, reviewUrl, visitedIn, originalLanguage, translatedLanguage, likesCountReview metadata
title, address, location, categoryName, totalScore, reviewsCount, placeId, cid, fid, url …The place the review belongs to

Example row from a test run (reviewer details replaced with a fictional person):

{
  "searchString": "place_id:ChIJHQQciMZRqEcR2X4b8-vf5Bk",
  "reviewerId": "100000000000000000001",
  "reviewerUrl": "https://www.google.com/maps/contrib/100000000000000000001?hl=en",
  "name": "Jamie Rivers",
  "reviewerNumberOfReviews": 61,
  "isLocalGuide": true,
  "text": "Great value for money. Services are great and the doormen were very helpful on arrival and departure.",
  "textTranslated": null,
  "publishAt": "3 months ago",
  "publishedAtDate": "2026-07-04T13:42:27.323Z",
  "likesCount": 3,
  "reviewId": "Ci9DQUlRQUNvZENodHljRjlvT2t3MVUzZHZNSFUyTlRodGNURkJjSHBSY0Zkd2FYYxAB",
  "reviewOrigin": "Google",
  "stars": 5,
  "rating": null,
  "responseFromOwnerDate": "2026-07-07T13:22:32.000Z",
  "responseFromOwnerText": "Dear Jamie,\n\nMany thanks for sharing your positive feedback.",
  "reviewImageUrls": [],
  "reviewContext": { "Trip type": "Vacation" },
  "reviewDetailedRating": { "Rooms": 5, "Service": 5, "Location": 5 },
  "visitedIn": null,
  "originalLanguage": "en",
  "translatedLanguage": null,
  "title": "Hotel Adlon Kempinski Berlin",
  "placeId": "ChIJHQQciMZRqEcR2X4b8-vf5Bk",
  "fid": "0x47a851c6881c041d:0x19e4dfebf31b7ed9",
  "cid": "1865862350127202009",
  "address": "Unter den Linden 77, 10117 Berlin, Germany",
  "city": "Berlin",
  "countryCode": "DE",
  "location": { "lat": 52.5162669, "lng": 13.3801573 },
  "categoryName": "Hotel",
  "totalScore": 4.6,
  "language": "en",
  "scrapedAt": "2026-10-14T18:02:20.627Z"
}

💰 Pricing

You pay $0.40 per 1,000 reviews ($0.0004 per saved review, event review-scraped), plus the small platform usage of the run (compute and proxy traffic). For example, 1,000 newest reviews of one place cost about $0.40 in review fees plus well under one cent of usage. Places that cannot be resolved and filtered-out reviews are not charged. Set a maximum total charge on the run and the actor stops cleanly when it is reached.

❓ FAQ

Is it legal to scrape Google Maps reviews? The actor only reads reviews that anyone can see without signing in. Personal data such as reviewer names is protected by laws like the GDPR, so only collect it when you have a legitimate reason, or switch personalData off.

Do I need a Google account, API key or proxy? No login and no API key. The default datacenter proxy works; switch to residential only if Google starts refusing requests.

How many reviews can I get? As many as the place shows. Set maxReviews to 0 for all of them; large places with hundreds of thousands of reviews take a while, about 1,000 reviews per 25 seconds per place.

Why is a field empty? Google fills fields only when they exist: many reviews have stars but no text, no owner reply or no photos.

Can I schedule it or use it from code? Yes. Schedule runs in the console, or start them through the API and fetch the dataset as JSON, CSV or Excel.

I am moving from another Google Maps reviews tool. Do the inputs match? startUrls, placeIds, maxReviews, reviewsSort, reviewsStartDate, reviewsFilterString, language and personalData use the same names and values, and each row uses the same field names.

⚠️ Limits

  • Google reviews only; partner reviews (for example Tripadvisor scores shown on hotel pages) are not included.
  • A search URL returns its first page of places (up to 20).
  • Reviews visible only to signed-in users are not scraped, and the actor never posts or replies.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.