Google Maps Reviews Scraper
Pricing
from $0.20 / 1,000 reviews
Google Maps Reviews Scraper
Get Google Maps reviews of any place: stars, text, date, translation, photos, owner reply and the place's rating. Paste Maps links, place IDs, CIDs or names. No reviewer names. Only-new-reviews mode for daily alerts. Pay per review.
Pricing
from $0.20 / 1,000 reviews
Rating
0.0
(0)
Developer
PlainRows
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 hours ago
Last modified
Categories
Share
Get Google Maps reviews of any place: stars, review text, date, Google's translation and the original text, photos, ratings by topic (food, service…) and the owner's reply, plus the place's name, address, average rating and review count on every row. Paste Google Maps links, place IDs, CIDs or simply "business name, city".
It calls a commercial data API instead of driving a browser: no proxies, no CAPTCHAs, no Google account, 100 reviews in about 20 seconds. Reviewer names, profile links and profile pictures are not collected: you get the opinion, not the person.
Typical uses
- Reputation monitoring: turn on Only new reviews, schedule a daily run and send new 1- and 2-star reviews to Slack or a spreadsheet: you never get (or pay for) the same review twice.
- Local SEO and agencies: check review volume, rating and owner reply rate for your clients and their competitors.
- Lead qualification: chain it after a Google Maps search (see below) to find businesses with unanswered complaints.
- Sentiment analysis and AI summaries: feed clean review text (translated into one language, original kept) to an LLM, a BI tool or an AI agent (MCP).
- Market research: compare what customers praise or complain about across a city's restaurants, hotels, clinics or shops.
What you get
One row per review:
| Field | Description |
|---|---|
input | The place as you gave it |
placeTitle, placeAddress | Place name and address on Google Maps |
placeId, cid, googleMapsUrl | Google place ID, CID and a link to the place |
placeRating, placeReviewsCount | The place's average rating out of 5 and its total number of reviews |
position, reviewId, reviewUrl | Position in the order you chose; Google's review ID (stable: use it to keep only new reviews); link to the review |
rating, text | Stars (1-5) and review text, translated by Google into the run's language when written in another one (null for a rating without text) |
originalText, originalLanguage | The text as written, when Google translated it, and its language |
reviewedAt, timeAgo | Review date (UTC, ISO 8601) and as Google shows it ("2 weeks ago") |
photoUrls | Photos attached to the review |
reviewHighlights | Ratings by topic when the reviewer gave them, e.g. {"feature": "Food", "assessment": "5"} |
ownerAnswer, originalOwnerAnswer, ownerAnswerAt | The owner's public reply, its original text when translated, and its date |
localGuide | Whether the review was written by a Google Local Guide |
searchCountry, languageCode, observedAt | Country and language of the run, and when the data was fetched (UTC) |
Missing values are always null, never guessed. A place that is not found, or has no review, gets one free row with found: false and a note explaining why (the blocks requested for it are still charged, see Pricing).
Input
{"places": ["https://www.google.com/maps/place/Joe's+Pizza+Broadway/@40.7546795,-73.989604,17z/data=!4m6!3m5!1s0x89c259ab3c1ef289:0x3b67a41175949f55","ChIJifIePKtZwokRVZ-UdRGkZzs","4280570365733019477","Joe's Pizza Broadway, New York"],"maxReviewsPerPlace": 100,"sortBy": "newest"}
- places: one per line, up to 500. Any of:
- a Google Maps link to the place (copy it from the address bar; short
maps.app.goo.gllinks are not accepted, open them first and copy the full link), - a place ID (
ChIJ…), - a CID (the number in
maps.google.com/?cid=…), - "business name, city": Google picks the best match, so add the city or street for chains.
- a Google Maps link to the place (copy it from the address bar; short
- maxReviewsPerPlace: 1 to 500 (default 100).
- sortBy:
newest(default),most_relevant(Google's default order),highest_ratingorlowest_rating. - country: US, GB, CA, AU, IE, IN, DE, AT, CH, FR, BE, ES, MX, IT, NL, PT, BR, PL, SE, JP: the Google country used for the lookup. languageCode (optional) defaults to the country's main language; reviews written in other languages come translated into it, with the original in
originalText. - onlyNewReviews (optional, monitoring): return only reviews never delivered to you before for the same place, country and language. See below.
- monitorName (optional): name of the key-value store in your account that remembers delivered reviews (default
plainrows-maps-reviews-monitor).
Chain it with Google Maps Scraper
Find businesses with Google Maps Scraper, then paste its placeId, cid or googleMapsUrl column into places here, as they are. In n8n, Make or Zapier, map the placeId of each result to the places list of this tool.
Monitor places: get only new reviews
Turn on Only new reviews ("onlyNewReviews": true), keep sortBy: "newest" and add an Apify schedule (daily, for example). The first run returns the reviews it finds and remembers their IDs in a key-value store of your own Apify account; each later run returns and bills only reviews it has never delivered. A place with nothing new gets a free row with notFoundReason: "no-new-reviews". The blocks requested are still charged on every check (the data source bills them either way): set maxReviewsPerPlace just above the number of new reviews the place gets between two runs (for example 30 for a place with about 15 new reviews a day, checked daily), not lower.
- The history is kept per place: a link, a place ID and a CID of the same place share it.
- Each run reads only the
maxReviewsPerPlacenewest reviews. If more new reviews arrive between two runs than that limit, the older new ones are not read again and are missed. When a check finds a full page of reviews and none of them was delivered before, the run warns you (more than … new reviews since the last run, also counted inplacesPossiblyMissingReviewsin the run summary): raisemaxReviewsPerPlaceor run the check more often. When a check reads new reviews that your limit leaves out (reviews are read in blocks of 10, so a limit of 15 reads 20), the run warns too (… new reviews beyond your limit were not delivered this run, counted inreviewsBeyondLimitNotDeliveredin the run summary): they come with a later run only if still among the reviews it reads. - Use a different monitorName per monitoring task to keep separate histories, or a new name to start over.
Output example
Real row from a run on 2026-10-11 (Joe's Pizza Broadway, New York, newest first):
{"input": "Joe's Pizza Broadway New York","found": true,"placeTitle": "Joe's Pizza Broadway","placeAddress": "1435 Broadway, New York, NY 10018, United States","placeId": "ChIJifIePKtZwokRVZ-UdRGkZzs","cid": "4280570365733019477","placeRating": 4.4,"placeReviewsCount": 27235,"googleMapsUrl": "https://maps.google.com/?cid=4280570365733019477","position": 15,"reviewId": "Ci9DQUlRQUNvZENodHljRjlvT2pSTGVtOUhZamxITVZwemRqQXdablV4YVVGNlNWRRAB","reviewUrl": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT2pSTGVtOUhZamxITVZwemRqQXdablV4YVVGNlNWRRAB!2m1!1s0x0:0x3b67a41175949f55!3m1!1s2@1:CAIQACodChtycF9oOjRLem9HYjlHMVpzdjAwZnUxaUF6SVE%7C%7C?hl=en-US","rating": 5,"text": "Excellent value for money","originalText": "Ottimo rapporto qualità prezzo","originalLanguage": "it","reviewedAt": "2026-10-10T00:58:31.000Z","timeAgo": "a day ago","photoUrls": [],"reviewHighlights": [{ "feature": "Food", "assessment": "5" },{ "feature": "Service", "assessment": "5" },{ "feature": "Atmosphere", "assessment": "5" }],"ownerAnswer": null,"originalOwnerAnswer": null,"ownerAnswerAt": null,"localGuide": true,"searchCountry": "US","languageCode": "en","observedAt": "2026-10-11T08:41:09.000Z","schemaVersion": "1.0"}
Pricing
Pay per result, no subscription, no proxy costs. See the Pricing tab for current prices. Three events, nothing else:
- Review: one per review returned, cheaper on higher Apify plans. Translation, photos, topic ratings, owner reply and the place's rating are included.
- Block of 10 reviews requested: Google Maps reviews are fetched in blocks of 10 per place, and the data source bills us every block requested. So 100 reviews = 10 blocks. A block is charged once Google has answered, even if the place has fewer reviews than you asked for, or is not found. Tip: set
maxReviewsPerPlaceto what you need to pay for fewer blocks (with Only new reviews, keep it above the number of new reviews expected between two runs). - Actor start: a small fixed fee per run, charged by Apify when the run starts.
Example, 100 reviews of one place at free Apify plan prices, run start included: about $0.043, i.e. about $0.0004 per review, about 30% less than the per-review price of the most used Google Maps reviews tool on the Store.
Duplicates and input mistakes cost nothing beyond the start fee, and requests Google does not answer are not charged. The same place given in several forms (link, place ID, CID, name) is recognised once Google has answered: its reviews and blocks are charged once, the other forms get a free row with notFoundReason: "duplicate-place". A review with stars only (no text) is a normal review and is billed; a review that comes back without its text or date field at all (the data source changed its format) is neither delivered nor charged, and neither are the blocks of a place where no review was readable. The run never spends more than the maximum cost you set.
Free Apify plan: each run returns up to 50 reviews for up to 2 places, so you can check the output. A paid Apify plan removes these limits.
Use it from code, automations or AI agents
API (one call, results returned directly):
curl -X POST "https://api.apify.com/v2/acts/plainrows~google-maps-reviews/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"places": ["ChIJifIePKtZwokRVZ-UdRGkZzs"], "maxReviewsPerPlace": 50, "sortBy": "newest"}'
n8n, Make, Zapier: use the Apify integration, pick plainrows/google-maps-reviews, schedule it daily with Only new reviews and post new reviews with 1 or 2 stars to Slack.
AI agents (MCP): add https://mcp.apify.com?tools=plainrows/google-maps-reviews to Claude, Cursor or any MCP client. The agent gets a typed tool and pays per result.
What this is not
- No reviewer names, profile links, profile pictures or reviewer IDs (privacy by design, in line with GDPR data minimisation).
- Not every review ever written: up to 500 per place and run, in the order you chose. Use Only new reviews to build a full history over time.
- Not a search tool: to find places by category and city, use Google Maps Scraper first.
- Not affiliated with Google.
Run summary
Each run stores a summary in the key-value store (OUTPUT): places submitted and run, blocks of reviews charged, how many returned nothing, reviews billed, requests Google did not answer, monitored places that probably got more new reviews than maxReviewsPerPlace since the last run (placesPossiblyMissingReviews), new reviews read but left out by that limit (reviewsBeyondLimitNotDelivered), duplicates (duplicatePlaces, duplicateReviewsSkipped), reviews dropped because the data source changed its format (reviewsWithChangedFormat) and invalid values (with the reason, e.g. SHORT_LINK), and anything skipped because of the free-plan or budget limit.
FAQ
How do I export the reviews of a business on Google Maps? Paste its Google Maps link, place ID, CID or "name, city" and run: one row per review with stars, text, date, photos and owner reply.
Where do I find a place ID or CID? You do not need them: a full Google Maps link works. Google Maps Scraper returns both for every business it finds.
How many reviews per place? Up to 500 per run. For more history, run on a schedule with Only new reviews.
Does it include reviewer names? No: reviewer names, profile links and pictures are not collected.
Reviews in other languages?
Google translates them into the run's language (text); the original is in originalText with its language in originalLanguage.
More PlainRows tools
Same pay-per-result pricing, same clean JSON, built to chain together in n8n, Make, Zapier or AI agents.
- SEO and keywords: Keyword Search Volume, CPC & Difficulty · Keyword Ideas Generator · Google Autocomplete & People Also Ask · Google Trends Explorer · Website Organic Traffic & Top Keywords · Bulk Domain Authority Checker · Backlink Checker · Broken Link Checker · AI Search Visibility Tracker (ChatGPT, Gemini, AI Mode) · Google Maps Rank Tracker (Geo-Grid Local SEO)
- Leads and companies: Google Maps Scraper · Website Technology Checker · ATS Jobs Scraper (Workday, Greenhouse, Lever, Ashby) · Google Jobs Scraper · Google Ads Scraper (Transparency Center) · Company Registry Lookup (SIRENE, LEI, Brreg) · Public Tenders Search (EU TED & UK)
- E-commerce and travel: Amazon Product Search Scraper · Google Shopping Prices Scraper · Google Hotels Prices Scraper · Tripadvisor Reviews Scraper
- Content and media: Google News Scraper · YouTube Search Scraper · YouTube Comments Scraper · Google Images Scraper · Website Screenshot API · App Store & Google Play Reviews Scraper
Compared with other APIs: Read your competitors' 1-star Google reviews in bulk · Google Maps reviews API · Tripadvisor reviews API
Support
Missing a field, a country or found a bug? Open an issue on this page. Issues are read and answered.