Google Maps Reviews Scraper | Ratings & Replies
Pricing
from $0.45 / 1,000 review extracteds
Google Maps Reviews Scraper | Ratings & Replies
Extract Google Maps reviews from up to 50 business URLs. Choose a review count or retrieve all available reviews. Export ratings, dates, text, owner replies, review links, and business metadata for local SEO and reputation monitoring. Extraction only: no sentiment labels or generated summaries.
Pricing
from $0.45 / 1,000 review extracteds
Rating
0.0
(0)
Developer
DataScraperES
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Share
Extract public Google Maps reviews for one or more business listings and receive structured review records with ratings, dates, text, owner replies, review links, and business metadata. Enter a normal Google Maps business URL, optionally choose a review count, and open the resulting Dataset.
What this Actor does
This Actor collects reviews from public Google Maps business listings. It accepts one URL for a single business or up to 50 different business URLs in one run, resolves each listing, follows the available review pages, removes duplicate review IDs, and stores one result item per business.
Each result combines the resolved business name, Place ID, current rating, total review count, and rating distribution with the normalized reviews exposed by Google Maps. A review can include its stable review ID, source date and timestamp, star rating, text, public review URL, and the business owner's reply when those values are available. The Actor is focused on extraction: it does not classify sentiment, generate summaries, or add inferred topics.
Use cases
- Build review datasets for local SEO, reputation monitoring, and reporting.
- Export customer feedback text for analysis in your own tools or dashboards.
- Compare review volume, ratings, and owner-response coverage across businesses.
- Create a historical snapshot by running the Actor on a schedule.
- Feed business review records into a CRM, spreadsheet, warehouse, or research workflow.
How to use
- Open the Actor in Apify Console.
- Add one Google Maps business listing URL, or one URL per line for a batch.
- Optionally choose the number of reviews per business. Leave it empty to collect all reviews available, then choose the localization options.
- Click Start and open the default Dataset when the run finishes.
Input
The required field is urls. Use one complete HTTPS Google Maps business listing URL per array item. Standard /maps/place/ links, maps.app.goo.gl links, goo.gl/maps links, and supported URLs containing a Place ID, CID, or LUDOCID are accepted. Google Search URLs, directions, user profiles, generic Maps searches, non-Google URLs, HTTP links, and duplicate URLs are rejected before collection starts.
maxReviews is optional. Apify Console starts with a prefilled value of 5; set another positive integer to request that many unique reviews per business, or clear the field to follow the available review pages until Google returns no next page. API calls that omit this field also keep the unlimited behavior. In pay-per-event runs, the configured spending limit can reduce the effective number collected before extraction starts. sort defaults to recent and accepts relevance, recent, highest, or lowest; the selected value is recorded in the result, while Google can apply its own ranking to the current review endpoint. language and country default to es and ES and localize the Google Maps request; they do not translate review text.
This is the exact input used for the example below:
{"urls": ["https://www.google.com/maps/place/?q=place_id:ChIJ--511_65pBIR4Tl2-D4grUw"],"maxReviews": 5,"sort": "recent","language": "es","country": "ES"}
Output
The default Dataset contains one item per submitted business URL. place identifies the business and includes metadata when Google exposes it. collection reports the requested limit (or null when all available reviews were requested), records collected, unique records collected, selected order, and stable status. reviews contains the extracted records, and quality reports the observed coverage of text, ratings, timestamps, and owner replies. Error, blocked, and partial outcomes are also written as business-level items when the business was submitted successfully for processing.
This is the complete Dataset item from a successful extraction:
{"place": {"inputUrl": "https://www.google.com/maps/place/?q=place_id:ChIJ--511_65pBIR4Tl2-D4grUw","resolvedUrl": "https://www.google.com/maps/place/?q=place_id:ChIJ--511_65pBIR4Tl2-D4grUw","placeId": "ChIJ--511_65pBIR4Tl2-D4grUw","name": "LA FARMÀCIA DE CAN COROMINES MERITXELL PARERA GOL","rating": 4.3,"totalReviews": 87,"ratingDistribution": {"1": 12,"2": 2,"3": 1,"4": 8,"5": 64}},"collection": {"status": "ok","requested": 5,"collected": 5,"uniqueCollected": 5,"sort": "recent"},"reviews": [{"reviewId": "Ci9DQUlRQUNvZENodHljRjlvT21SQlRFbEdRa1F4TVRabFJFUXlXRW93VWtSVVNuYxAB","date": "Hace un mes","timestamp": 1783173085241142,"timestampDisplay": 1783173085241142,"rating": 5,"text": "Una farmacia con mucha empatía , me trataron súper bien , son divertidas cariñosas emprendedoras , el dueño guau de 100 el equipo lo aman ,Meritxell tan bonita .. Laia maravillosa te ríes mucho , son cercanas empaticas y siempre buscan tu satisfacción .. son excelentes todas\nEstás ahí y no te quieres ir . Gracias equipo","reviewUrl": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT21SQlRFbEdRa1F4TVRabFJFUXlXRW93VWtSVVNuYxAB!2m1!1s0x0:0x4cad203ef87639e1!3m1!1s2@1:CAIQACodChtycF9oOmRBTElGQkQxMTZlREQyWEowUkRUSnc%7C%7C?hl=es","ownerReply": null,"ownerReplyDate": null},{"reviewId": "Ci9DQUlRQUNvZENodHljRjlvT25VeE9YZHdXVUZ3WDFWbVpHdFJlVEl6ZERSSmIwRRAB","date": "Hace 2 meses","timestamp": 1779975855380747,"timestampDisplay": 1779975855380747,"rating": 5,"text": "Buen servicio! Hoy he comprado gafas para vista cansada. Me ayudaron a elegir exactamente lo que necesitaba, con amabilidad y de manera profesional. Estoy muy contento y recomiendo esta farmacia a todo el mundo.","reviewUrl": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT25VeE9YZHdXVUZ3WDFWbVpHdFJlVEl6ZERSSmIwRRAB!2m1!1s0x0:0x4cad203ef87639e1!3m1!1s2@1:CAIQACodChtycF9oOnUxOXdwWUFwX1VmZGtReTIzdDRJb0E%7C%7C?hl=es","ownerReply": "Muchísimas gracias por tus palabras. Nos esforzamos en antender vustras necesidades de la mejor manera","ownerReplyDate": "Hace 2 meses"},{"reviewId": "Ci9DQUlRQUNvZENodHljRjlvT201NlpqWnJPRU4wU0cxSk5rVnlRbGhrUmxkU2RsRRAB","date": "Hace 6 meses","timestamp": 1772207950691049,"timestampDisplay": 1772207950691049,"rating": 5,"text": "Excelente atención, horario estupendo, trato cercano y siempre con una sonrisa. Tienen todo lo que necesito y me asesoran con profesionalidad y paciencia. Sin duda, la mejor farmacia del pueblo.","reviewUrl": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT201NlpqWnJPRU4wU0cxSk5rVnlRbGhrUmxkU2RsRRAB!2m1!1s0x0:0x4cad203ef87639e1!3m1!1s2@1:CAIQACodChtycF9oOm56ZjZrOEN0SG1JNkVyQlhkRldSdlE%7C%7C?hl=es","ownerReply": "Muchas gracias, nos alegra que te sientas bien atendido","ownerReplyDate": "Hace 5 meses"},{"reviewId": "Ci9DQUlRQUNvZENodHljRjlvT21kQlYxUTVlSFJqZWprNFVYRlVjSFo1VlhSc05HYxAB","date": "Hace 9 meses","timestamp": 1763056088872060,"timestampDisplay": 1763056088872060,"rating": 5,"text": "Farmacia Can Corominas ofrece un trato excelente. El personal es muy atento, profesional y siempre dispuesto a ayudar. Resuelven dudas con claridad y te aconsejan con mucha cercanía. Además, la farmacia está bien organizada y suele tener todo lo necesario. Muy recomendable.","reviewUrl": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT21kQlYxUTVlSFJqZWprNFVYRlVjSFo1VlhSc05HYxAB!2m1!1s0x0:0x4cad203ef87639e1!3m1!1s2@1:CAIQACodChtycF9oOmdBV1Q5eHRjejk4UXFUcHZ5VXRsNGc%7C%7C?hl=es","ownerReply": "David es muy gratificante oir tus palabras. Nos llena de orgullo y nos da energía para seguir en esta linea. Textos como los tuyos suman y nos ayudan a crecer. Gracias","ownerReplyDate": "Hace 9 meses"},{"reviewId": "Ci9DQUlRQUNvZENodHljRjlvT2xSQ2FuUTVjMVZGWmw5UlgxazFlbWxRTkMweFZFRRAB","date": "Hace 2 meses","timestamp": 1780921434434411,"timestampDisplay": 1780921434434411,"rating": 5,"text": "Farmacia moderna, actual con productos de primer nivel y personal muy profesional y amable","reviewUrl": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT2xSQ2FuUTVjMVZGWmw5UlgxazFlbWxRTkMweFZFRRAB!2m1!1s0x0:0x4cad203ef87639e1!3m1!1s2@1:CAIQACodChtycF9oOlRCanQ5c1VFZl9RX1k1emlQNC0xVEE%7C%7C?hl=es","ownerReply": null,"ownerReplyDate": null}],"quality": {"textCoverage": 1,"ratingCoverage": 1,"timestampCoverage": 1,"ownerReplyCoverage": 0.6,"deduplicated": true}}
Dataset items can be inspected in Apify or exported in JSON, JSONL, CSV, Excel, XML, and other formats supported by Apify. The Actor does not include reviewer names, avatars, or profile URLs in this output contract.
Pricing
This Actor uses pay-per-event pricing. You are charged once for each review successfully collected and included in a delivered Dataset item through the review-extracted event. The second column shows the exact unit price; the third is the equivalent cost for 1,000 reviews for comparison only.
| Apify plan | Price per review | Equivalent per 1,000 reviews |
|---|---|---|
| Free | $0.00060 | $0.60 |
| Bronze | $0.00055 | $0.55 |
| Silver | $0.00050 | $0.50 |
| Gold | $0.00045 | $0.45 |
| Platinum | $0.00045 | $0.45 |
| Diamond | $0.00045 | $0.45 |
Actor starts, business-level metadata, empty results, blocked results, failed results, and reviews that are not successfully delivered do not create a review charge. Check the Actor's Pricing tab for the active configuration before running it.
Related Actors
| Actor | Best for |
|---|---|
| Google Maps Reviews Scraper & Sentiment Analyzer | Adding multilingual positive, neutral, and negative labels after extracting review records. |
| Google Maps Business Scraper | $1 per 1,000 | Discovering business listing URLs by location and category before sending selected businesses here. |
Limits and data quality
- Each run accepts 1 to 50 different Google Maps business URLs.
maxReviewsis optional: provide any positive integer or omit it to collect all reviews available through Google's review pages. - Businesses are processed sequentially and each completed result is written independently, so one unresolved or blocked listing does not erase other business results.
- Review rows are deduplicated by the source review ID when Google exposes one.
collectedis the number returned in this result, not a promise that it equals the business's total review count. - Google can expose fewer rows, stop providing a next cursor, change response structures, or temporarily restrict a request. Inspect the collection status and collected counts instead of treating a short result as proof that no other reviews exist.
- The current endpoint can apply its own ranking for non-
recentselections; the requested sort remains visible incollection.sort. - Review text, dates, timestamps, ratings, review URLs, and owner replies may be unavailable for individual rows. Missing values are returned as
null; coverage ratios are calculated from the records collected in that item. - Business metadata and rating distributions depend on what Google exposes for the resolved listing and can be
nullor empty. - This Actor uses direct HTTPS requests and does not use browser automation or a generative language model.
Frequently asked questions
Do I need to provide a Google Place ID?
No. A normal public Google Maps business listing URL is enough. The Actor attempts to resolve the available business identifier. A URL that does not identify one unique listing can return an ambiguous or not_found status.
Are review texts included?
Yes. reviews[].text contains the text exposed by Google Maps, or null when a review has no available text. The Actor does not translate or summarize the text.
Can I process several businesses in one run?
Yes. Add one URL per entry in urls, up to 50 different businesses. The Dataset receives one independent result per URL in input order.
Why did I receive fewer reviews than requested?
Google Maps may expose fewer rows in the selected order, end the cursor chain, return a partial response, temporarily restrict collection, or the run's spending limit may cap a pay-per-event extraction. Review collection.status, collection.requested, collection.collected, and collection.uniqueCollected to understand the result returned by the run. When collection.requested is null, the run was configured to collect all available reviews.
Does the Actor return reviewer profiles?
No. The public output is limited to review content, identifiers, dates, ratings, review links, owner replies, and business metadata. Reviewer names, avatars, and profile URLs are omitted from this Actor's contract.
Responsible use
Use this Actor only for lawful purposes and in accordance with applicable laws, privacy obligations, database rights, and the terms governing Google Maps data. You are responsible for determining whether collecting, storing, analyzing, and redistributing review content is permitted for your use case.
Review text can contain personal information written by third parties. Protect exported Datasets, minimize retention, avoid excessive collection, and honor applicable deletion or opt-out requests.
Support
If a run returns an unexpected status or output, open an issue in the Actor's Issues tab with the run ID, a sanitized input URL, collection.status, and the observed behavior. Do not post API tokens, cookies, credentials, or private review content.