# Google Maps Reviews Scraper

> Type in any Google Maps place and get all its reviews, with the stars, the text in your language, the date, likes and the owner's reply.

Google Maps Reviews Scraper gets every review of the places you give it, not just the 5 that Google’s official API returns. Each review is one row with its stars, text (translated into your language if you want), date, likes, the reviewer and the owner’s reply. Filter by date, stars, text or photos, and the reviews you filter out are free.

- Web page: https://keklik.io/scrapers/google-maps-reviews-scraper
- Apify Actor: `keklik/google-maps-reviews-scraper` (https://apify.com/keklik/google-maps-reviews-scraper)
- You enter: Google Maps place links or Place IDs
- You get: Stars, review text, date, likes, reviewer, owner reply and the place’s details
- Status: working, last tested 11 Nov 2026
- Needs: an Apify account (free is enough to try). No login to the site itself.

## Price per 1,000 reviews

US dollars, on each Apify plan. Apify's platform costs are included. Add-ons are charged only when switched on in the input.

| Charge | Free | Starter | Scale | Business |
|---|---:|---:|---:|---:|
| Review: Each review the scraper saves. Reviews removed by filters are free. | $0.45 | $0.35 | $0.30 | $0.22 |
| Original date of an edited review (add-on) | $0.40 | $0.35 | $0.30 | $0.25 |

Apify's plans and a calculator: https://keklik.io/pricing.md

## Input

The run input is a JSON object with these keys:

- `urls` (array, required): Places. One per line: a place link from your browser, a maps.app.goo.gl share link, a cid link or a Place ID. Search links aren't places: find the places first with the Google Maps leads scraper.
- `maxReviewsPerPlace` (integer, optional): Max reviews per place. Stops each place after this many reviews. Leave it empty for every review.
- `sort` (string, optional, default "newest", one of "newest", "most_relevant", "highest_rating", "lowest_rating"): Sort by. Newest is the only order that lets Newer than stop a place early.
- `newerThan` (string, optional): Newer than. A UTC date such as 2026-01-31, or a period back from now such as 24h, 7d or 6m. Leave it empty for reviews of any age.
- `olderThan` (string, optional): Older than. Only reviews written before this point, in the same formats as "Newer than". With both, you get one period, such as 2026-01-01 to 2026-07-01. Leave empty for reviews up to now.
- `language` (string, optional, default "en"): Language. Reviews in other languages are translated into this one, such as en or fr. The original text is kept.
- `stars` (array, optional): Stars. Keep only reviews with these star ratings, such as 1 and 5 together. Leave empty for all.
- `reviewKeywords` (array, optional): Reviews mentioning. Add words to get only reviews that mention one of them, such as "parking", "delivery" or "rude". Whole words, in the language each review was written in; a phrase such as "front desk" is matched as a phrase. Capitals don't matter, and a word typed with its accents ("délicieux") is also found without them.
- `thoroughSearch` (boolean, optional, default false): Thorough search. Also find your words inside longer words ("park" finds "parking") and in Google's translations of reviews written in other languages. Slower on big places. Turn it on for hotels and tourist spots, where many reviews are in other languages.
- `onlyWithText` (boolean, optional, default false): Only reviews with text. Leave out star-only reviews that have no written text.
- `onlyWithPhotos` (boolean, optional, default false): Only reviews with photos. Keep only reviews that include at least one photo.
- `reviewerDetails` (boolean, optional, default true): Reviewer names and profiles. Turn off to leave out who wrote each review (name, profile link, photo), for example for GDPR. Ratings, text and dates stay.
- `countAllReviews` (boolean, optional, default false): Count every review. Read each place's whole review list first and put the number found in "Reviews counted", next to Google's own count. Slower on places with thousands of reviews; you still get only the reviews your other settings ask for.
- `maxResults` (integer, optional): Max results. Stops the whole run after this many reviews, across all places. Use it to cap what a run can cost.
- `originalDates` (boolean, optional, default false): Original dates of edited reviews ($). Look up when each edited review was first posted, in Original date. Found for most edited reviews: 3 in 4 to 9 in 10 in our tests.
- `minRating` (integer, optional): Min stars. Replaced by "Stars"; still keeps reviews with at least this many stars when "Stars" is empty.
- `maxRating` (integer, optional): Max stars. Keeps reviews with at most this many stars. 2 keeps the negative ones.

Example input:

```json
{
  "urls": [
    "https://www.google.com/maps/place/Katz's+Delicatessen/@40.7222372,-73.9874322,17z"
  ],
  "maxReviewsPerPlace": 20,
  "maxResults": 20,
  "sort": "newest",
  "language": "en",
  "onlyWithText": true
}
```

## Output: one row per review

55 fields in 11 groups.

### Review

- `rating`: Stars. Star rating, 1 to 5.
- `text`: Review text. Review text, in the language you chose when Google translated it.
- `original_text`: Original text. The text as the reviewer wrote it, when Google translated it. Empty when the review is already in your language.
- `original_language`: Original language. Language code of the text as written, such as en or fr.
- `published_at`: Date. When the review was published, ISO 8601 in UTC. For an edited review Google gives only the time of the last edit, so this is the edit date (see Edited).
- `published_at_relative`: Date as shown. The date as Google shows it, such as "3 weeks ago".
- `is_edited`: Edited. Whether the reviewer edited the review, from Google's "Edited" label. Empty for a language whose label we don't have.
- `edited_at`: Edited at. When the review was last edited, ISO 8601 in UTC. Google gives no original date for an edited review.
- `visited_in`: Visited in. Month of the visit the reviewer gave, such as "Oct 2026".
- `likes_count`: Likes. Number of people who found the review helpful.

### Original dates (add-on)

- `review_id`: Review ID. Google review ID.
- `rating`: Stars. Star rating, 1 to 5.
- `is_edited`: Edited. Whether the reviewer edited the review, from Google's "Edited" label. Empty for a language whose label we don't have.
- `original_published_at`: Original date. Add-on: when an edited review was first posted, ISO 8601 in UTC, from the reviewer's profile. Filled when "Original dates of edited reviews" is on and the review was found there.
- `edited_at`: Edited at. When the review was last edited, ISO 8601 in UTC. Google gives no original date for an edited review.
- `published_at_relative`: Date as shown. The date as Google shows it, such as "3 weeks ago".

### Topic ratings and photos

- `aspects`: Aspect ratings. Ratings of aspects and answers to Google's questions, such as {"Food": 5, "Service": 4, "Meal type": "Dinner"}.
- `photos`: Photos. Links to the photos attached to the review.

### Owner reply

- `owner_response`: Owner response. The owner's reply to the review.
- `owner_response_at`: Owner response date. When the owner replied, ISO 8601 in UTC.
- `owner_response_relative`: Owner response date as shown. When the owner replied, as Google shows it, such as "2 days ago".

### Reviewer

- `reviewer_name`: Reviewer. Name of the reviewer.
- `reviewer_id`: Reviewer ID. Google contributor ID of the reviewer.
- `reviewer_url`: Reviewer URL. Link to the reviewer's Google Maps profile.
- `reviewer_photo_url`: Reviewer photo. Reviewer's profile picture.
- `reviewer_reviews_count`: Reviewer's reviews. How many reviews the reviewer has written.
- `reviewer_is_local_guide`: Local Guide. True when the reviewer is a Google Local Guide.

### Place

- `place_name`: Place. Name of the place.
- `place_category`: Place category. Main Google category of the place.
- `place_categories`: Place categories. Every Google category of the place, the main one first.
- `place_status`: Place status. operational, temporarily_closed or permanently_closed.
- `place_phone`: Place phone. The place's phone number as Google shows it.
- `place_website`: Place website. The place's website.
- `place_rating`: Place rating. Average star rating of the place.
- `place_reviews_count`: Place reviews. Number of reviews Google shows for the place, or null when Google leaves it out.

### Place location

- `place_name`: Place. Name of the place.
- `place_address`: Place address. Address of the place.
- `place_street`: Place street. Street and number of the place.
- `place_city`: Place city. City of the place.
- `place_postal_code`: Place postal code. Postal code of the place.
- `place_state`: Place state. State or region of the place, when Google gives one.
- `place_country_code`: Place country. Two-letter country code of the place, such as US or FR.
- `place_lat`: Place latitude. Latitude of the place.
- `place_lng`: Place longitude. Longitude of the place.

### Place hours and more

- `place_name`: Place. Name of the place.
- `place_opening_hours`: Place opening hours. Weekly hours, Monday first: [{"day": "Monday", "hours": "8 AM-6 PM"}, ...].
- `place_description`: Place description. The owner's description of the place, or Google's own summary.
- `place_main_image_url`: Place photo. The place's main photo.
- `place_price_level`: Place price level. Price level as Google shows it, such as $$. Mostly for hotels; Google shows it for few other places.
- `place_hotel_stars`: Hotel stars. A hotel's star class.
- `place_hotel_amenities`: Hotel amenities. A hotel's amenities, such as Free Wi-Fi or Indoor pool.

### Place review summary

- `place_name`: Place. Name of the place.
- `place_rating`: Place rating. Average star rating of the place.
- `place_reviews_count`: Place reviews. Number of reviews Google shows for the place, or null when Google leaves it out.
- `place_reviews_counted`: Reviews counted. Every review in the place's list, counted by reading all of it, when "Count every review" is on.
- `place_reviews_distribution`: Reviews per star. How many reviews gave each star rating: {"one_star": 52, ..., "five_stars": 1458}.
- `place_review_tags`: Review topics. Topics Google finds in the reviews and how many reviews mention each: [{"tag": "live music", "count": 162}, ...].
- `place_review_highlights`: Review highlights. The short quotes from reviews Google shows on the place, with their rating and review ID.

### Google IDs and links

- `review_id`: Review ID. Google review ID.
- `review_url`: Review URL. Link to the review on Google Maps.
- `place_id`: Place ID. Google Place ID (ChIJ...).
- `place_cid`: Place CID. Google Maps customer ID (cid) of the place.
- `place_url`: Place URL. Link to the place on Google Maps.

### Search details

- `source_url`: Place you typed. The place link or Place ID you typed that this review came from.
- `scraping_time`: Scraped at. When the row was scraped, ISO 8601 in UTC.

## How it works

1. Pick the places. Copy each place's link from Google Maps, or type its Place ID. Add as many places as you like.
2. Every review, not just 5. Google's official way to get reviews stops at 5 per place. The scraper reads every review Google shows, newest first or in the order you pick, translated into your language.
3. Keep only the reviews you want. Filter by date, stars, text or photos. Reviews you filter out are free.
4. Download your reviews. As a spreadsheet or in Google Sheets, once or every day to catch new reviews.

## Use cases

- Reputation monitoring: New reviews of your locations every day, so the bad ones are caught early.
- Competitor research: What customers praise and criticise at competing businesses, in their own words.
- Sentiment analysis: Thousands of reviews, already translated into one language, for sentiment or topic analysis.
- Answering customers: The reviews with no owner reply, or the negative ones, across all your branches.

## Good to know

You get Google reviews only: reviews Google shows from partner sites such as Tripadvisor aren't included. Google's review count includes reviews it later hides, so you can get somewhat fewer rows than the count. Photo and profile picture links stop working after a while, so download the images soon if you need them.

## Questions

### Is it legal to scrape Google Maps reviews?

The scraper reads only what Google shows publicly to visitors who are not logged in. Reviews are still personal data of the people who wrote them: their names, profile pictures and words. If you are in the EU or handle data of people there, the GDPR applies, and other countries have similar laws. Make sure you have a lawful reason to collect and use the data, keep only what you need, and ask a lawyer if you are unsure.

### Do I need a Google account or an API key?

No. You don't need a Google account, a login, cookies or a Google Places API key, and there is no proxy to set up. The official Places API returns at most 5 reviews per place; this scraper returns all of them.

### How many reviews can I get from one place?

Every review Google shows to visitors, in the order you choose. In our tests the scraper read 2,338 reviews of three places in under a minute. Google's review count can include reviews it later hides or filters, so you can get somewhat fewer rows than the review count Google shows for the place. To check, turn on Count every review for the exact number you can get, in place_reviews_counted.

### Can I get only the new reviews, for example every day?

Yes. Set Newer than to 24h (or to a date) and schedule the scraper to run every day. With Sort by on Newest, it stops at the first older review, so each run gets and charges only the new reviews.

### Can I get the reviews of one period?

Yes. Set Newer than and Older than: 2026-01-01 and 2026-07-01 give the reviews of the first half of 2026. Durations work too, so 1y and 6m give the reviews from a year ago to six months ago. An edited review counts by the date of its last edit (see below).

### What date does an edited review have?

The date of its last edit. Google keeps only that time for an edited review, so published_at is the edit date, is_edited is true and edited_at repeats it. Turn on the add-on Original dates of edited reviews to get when it was first posted, in original_published_at: the scraper finds it on the reviewer's profile for most edited reviews (3 in 4 to 9 in 10 in our tests, depending on the place), and you pay only for the ones it finds. In our tests 9 to 16% of a place's reviews had been edited. Newer than and Older than use this date too, so a review edited yesterday counts as yesterday's.

### Do Highest rating and Lowest rating give every review?

Yes, sorted by stars, newest first within a star. Google's own rating sort stops after a sample: for one garage with 1,085 reviews it gave 145, only 76 of its 1,014 five-star reviews. Highest rating is quick. Lowest rating can take a few minutes on places with thousands of reviews, because their 1-star reviews are spread across all of them. You pay only for the reviews you get.

### Does Reviews mentioning find reviews written in other languages?

It finds your words as each reviewer wrote them, so parking finds reviews written in English and poulet finds reviews written in French. Google's translations aren't searched: on a Paris restaurant, chicken found 108 reviews written in English, and Thorough search found 169, adding the French reviews Google translates as "chicken". Turn on Thorough search for hotels and tourist spots, where many reviews are in other languages. Type words with their accents (délicieux): they're also found without them.

### Can I keep only the bad reviews?

Yes. In Stars, pick 1 and 2 for the negative reviews, or 4 and 5 for the good ones. To find complaints about something, add words to Reviews mentioning, such as parking, wait or rude. You can also leave out reviews that have no text, or keep only reviews with photos. Reviews you filter out are free.

### Can I leave out who wrote each review?

Yes. Turn off Reviewer names and profiles and the rows have no reviewer name, contributor ID, profile link or picture, for example for GDPR work. The rating, text, dates and the reviewer's review count and Local Guide badge stay.

### Are reviews in other languages translated?

Yes. Google translates them into the language you choose, English by default. When a review was translated, you also get the text as the reviewer wrote it, and every review comes with the language it was written in.

### Are reviews from Tripadvisor and other sites included?

No. You get Google reviews only: the review feed Google serves to visitors who are not logged in doesn't include reviews from partner sites.

### What happens when a run fails?

The run's status message says why, and the log names each input that failed. If a mistake in the input stops the run before anything is scraped, the run ends without results and its status message says what to change. Either way the Actor sends us a short error report, so we can fix the cause even if you never open an issue: the Actor's build, the reason, the counts from the end-of-run summary, whether your Apify plan is free or paid and, for an unexpected error, where in our code it happened. Web addresses and @usernames are blanked out first. The report never includes your input, your account, the pages you scraped or your results. Every run, failed or not, also sends one usage line as it ends, so we can see which options people use, what runs cost us and how well the data is filled: how many of each charged event it used (for example 120 full details) and the price your plan paid for them; the run's platform cost by item and its resources (time, memory, proxy traffic); whether it stopped at your maximum cost or maximum items; how it was started (Console, API, schedule, saved task, and for API runs the kind of tool, such as Make, Zapier or the Apify client, never the tool's full identity); our scraper's own retry and timing counts; and for each output field, how many results had it filled (counts only, never the values). That never includes your input, your account, your IP address, the pages you scraped or your results either. If you need help with a run, open an issue on the Issues tab and attach the run, or email support@kekliktech.com with the run's link; the run's log ends with both.

## Run it

- In Apify Console: https://apify.com/keklik/google-maps-reviews-scraper
- With the Apify API: POST https://api.apify.com/v2/acts/keklik~google-maps-reviews-scraper/run-sync-get-dataset-items?token=APIFY_TOKEN with the input JSON as the body. It returns the rows.
- From an AI agent: connect the Apify MCP server (https://mcp.apify.com), add the Actor `keklik/google-maps-reviews-scraper` and call it with the input.
