Apify actor · whoareyouanas/google-maps-review-scraper
Google Maps Reviews Scraper | CSV & JSON Export
Export available Google Maps reviews from known place URLs or Place IDs. Keep star ratings, review text, reviewer context, owner replies, and per-place quality summaries for research and monitoring.
Documentation checked 2026-10-29 · deployed build 0.2.5 · run through your Apify account
01 / Overview
Match the actor to the job.
Known-place collection
Supply exact place URLs or IDs rather than broad business-name discovery.
Review and reply context
Capture available ratings, text, date labels, owner responses, and engagement.
Coverage per place
Inspect quality status, extracted and delivered counts, and warnings before comparing businesses.
02 / Input
Start with a clear, bounded input.
Provide at least one place URL or Place ID. maxReviews, sort, language, region, and reviewer-detail settings determine the requested sample. Keyword and business-name searches are not inputs.
{
"placeUrls": [
"https://www.google.com/maps/place/Aligarh+House+Restaurant+-+HSR/@12.9084006,77.6325664,17z/data=!3m1!4b1!4m6!3m5!1s0x3bae1570d7a8549f:0x3d107e987ed1f50f!8m2!3d12.9083954!4d77.6351413!16s%2Fg%2F11v6bf6td0"
],
"maxReviews": 10,
"sort": "newest",
"language": "en",
"region": "IN",
"includeReviewerDetails": true,
"proxyConfiguration": {
"useApifyProxy": false
}
}Replace example targets and credential placeholders before running. These are documentation examples, not a promise of currently available source results.
| Field | Type / required | Default | Purpose |
|---|---|---|---|
| placeUrls | array | Not specified | One or more Google Maps place URLs. Direct /maps/place URLs are recommended. |
| placeIds | array | Not specified | Optional Google Place IDs. Use this when you do not have a full Maps URL. |
| maxReviews | integer | 20 | Maximum reviews to extract for each place. Use 0 for the actor safety cap of 1,000. Minimum: 0 · Maximum: 1000 |
| sort | string | "newest" | Order reviews before extraction. Options: newest, relevant, highest, lowest |
| language | string | "en" | Google Maps interface language code. Use en for the most reliable extraction: review dates, owner replies, counts, and interface controls currently rely on English parsing. Other languages may return incomplete fields. |
| region | string | "US" | Google Maps region code. |
| includeReviewerDetails | boolean | true | Include reviewer name and profile URL when visible. |
| proxyConfiguration | object | {"useApifyProxy":false} | Proxy settings. Start without Apify Proxy; use residential/custom proxies if Google limits the session. |
All other input controls (1)
| Field | Type / required | Default | Purpose |
|---|---|---|---|
| debugMode | boolean | false | Enable extra logs and slower browser actions. |
03 / Output
Know what each returned row represents.
- The dataset mixes review and placeSummary records joined by placeKey. Filter recordType when counting reviews; dataset views select columns rather than filtering rows.
- Relative date parsing is estimated. Preserve publishedAtText, and review dataQualityStatus and dataQualityReason.
{
"recordType": "review",
"placeKey": "example-business",
"placeTitle": "Example Restaurant",
"reviewId": "example-review",
"reviewPosition": 1,
"stars": 5,
"text": "Great food and quick service.",
"publishedAtText": "a week ago",
"ownerResponseText": "Thanks for visiting!"
}Example values illustrate the published contract. Available fields and populated values depend on the source, mode, and result status.
Fields in the documented output view
recordType
Record type
placeTitle
Business name
stars
Review rating
text
Review text
publishedAtText
Displayed review date
publishedAt
Parsed review date
reviewerName
Reviewer name
ownerResponseText
Owner reply
likesCount
Helpful votes
reviewUrl
Review URL
scrapedAt
Extraction time
Output views select columns. They do not necessarily filter record types or exhaust the full JSON payload. Use structured JSON when you need nested arrays or objects.
Dataset links and run artifacts (2)
- Reviews and places
- Structured review rows and place metadata, including extraction quality status on place summaries. Optional fields are omitted when unavailable.
- Place summaries and quality
- Per-place extraction and delivery counts, quality status and warnings.
04 / Pricing
Understand the billable unit.
These are the active public event prices checked on 2026-10-29, in USD. They describe each event, not a universal flat price for a run. Confirm your current Apify plan and run budget before starting.
| Billable event | Rate (USD) | When it applies |
|---|---|---|
Review scraped review-scraped | $0.0005 / event | One Google Maps review row written to the default dataset. $0.50 per 1,000 of this event. Other events and separate services are additional. |
Actor Start apify-actor-start | $0.00005 / event | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). Start units depend on allocated memory: one event per GB, with at least one event. |
- Only review rows incur the configured review-scraped event; place summaries do not add review charges.
- The current event rate below supersedes older dated README price examples. Startup can apply even when no reviews are delivered.
A result limit and a spending cap are different controls. Account charges, applicable taxes, and separately billed providers or proxies must be considered where relevant. A cap setting is not a minimum invoice charge.
05 / API & automation
Use the same input from your workflow.
Test a small run in Apify Console, inspect its records and charges, then save a task or call the actor from your own application. Keep your Apify token in an environment variable. Source-specific credentials, if required, are separate from the Apify API token.
# Save the input example as input.json and set APIFY_TOKEN.
# This request starts an asynchronous, potentially billable run.
curl --request POST \
'https://api.apify.com/v2/acts/whoareyouanas~google-maps-review-scraper/runs' \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header 'Content-Type: application/json' \
--data @input.jsonThe response identifies the run. Wait for it to finish, inspect its status, and use its default dataset and key-value store to retrieve results. A successful run can still contain partial or failed records; check the output contract above before continuing downstream.
Coverage & interpretation
Check the result before relying on it.
- A successful run can still have partial or blocked places. Local sorting cannot restore an intended source sample if source sort controls fail.
- Disabling reviewer-detail enrichment is not a guarantee that all identifying information is removed.
Questions
Before you build an integration.
What do I need to provide?
Provide at least one place URL or Place ID. maxReviews, sort, language, region, and reviewer-detail settings determine the requested sample. Keyword and business-name searches are not inputs.
What should I check in the output?
- The dataset mixes review and placeSummary records joined by placeKey. Filter recordType when counting reviews; dataset views select columns rather than filtering rows.
- Relative date parsing is estimated. Preserve publishedAtText, and review dataQualityStatus and dataQualityReason.
How do I budget the run?
- Only review rows incur the configured review-scraped event; place summaries do not add review charges.
- The current event rate below supersedes older dated README price examples. Startup can apply even when no reviews are delivered.
Keep exploring
Practical guides for the next step.
Export Google Maps Reviews to CSV for a Useful Local Audit
Collect a bounded review sample, separate review rows from business summaries, and identify service problems your team can investigate.
Read the guideTop 5 Apify Scrapers to Automate Marketing Research
A practical stack of Apify scrapers for automating marketing research across Meta ads, Google ads, TikTok ads, Facebook Groups, and Reddit.
Read the guide