Google Maps Reviews Scraper | CSV & JSON Export avatar

Google Maps Reviews Scraper | CSV & JSON Export

Pricing

from $0.50 / 1,000 review scrapeds

Go to Apify Store
Google Maps Reviews Scraper | CSV & JSON Export

Google Maps Reviews Scraper | CSV & JSON Export

Extract Google Maps reviews from place URLs or Place IDs. Export ratings, review text, owner replies and business details to CSV, Excel or JSON.

Pricing

from $0.50 / 1,000 review scrapeds

Rating

0.0

(0)

Developer

Anas Nadeem

Anas Nadeem

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 days ago

Last modified

Share

Extract Google Maps reviews from business place URLs or Place IDs. Export review text, star ratings, owner replies, reviewer details and business metadata to JSON, CSV or Excel through Apify. Use the data for local SEO audits, reputation monitoring and competitor review analysis.

No Google Maps API key or Google account is required. Start with one business and 20 reviews, then inspect the place summary before increasing your limit.

How to scrape Google Maps reviews

  1. Click Try for free and paste a Google Maps business URL into Google Maps place URLs. A sample business is prefilled.
  2. Set Max reviews per place to 20 for your first run. Keep the interface language set to en.
  3. Select newest, most relevant, highest rating or lowest rating and start the Actor.
  4. Inspect the output and the place's dataQualityStatus. A successful run can still contain partial or blocked results.
  5. Export the dataset in JSON, CSV or Excel. Filter recordType to review for a review-only spreadsheet; summary rows are also included in the default dataset.

What data does it extract?

DataFields
ReviewreviewId, reviewPosition, reviewUrl, stars, text, likesCount
Review datepublishedAtText, publishedAt
Reviewer (optional)reviewerName, reviewerProfileUrl
Owner replyownerResponseText, ownerResponseAtText, ownerResponseAt
Business on each reviewplaceKey, placeId, cid, fid, placeTitle, placeCategory, placeAddress, placeRating, placeReviewsCount, placeUrl, inputUrl
Place summarytitle, category, address, phone, website, location, rating, reviewsCount, scrapedReviewsCount, deliveredReviewsCount, url, inputUrl, place identifiers
Quality and collection timeSummary dataQualityStatus, dataQualityReason, warnings; scrapedAt on both record types

Fields are included when available. Dates parsed from relative labels such as “a month ago” are estimates; preserve the original text for analysis. reviewId can be generated from available review fields when Google does not expose an ID.

Input example

{
"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": 20,
"sort": "newest",
"language": "en",
"region": "IN",
"includeReviewerDetails": true,
"proxyConfiguration": {
"useApifyProxy": false
}
}

To use Place IDs, replace placeUrls with a placeIds array containing your actual Google Place IDs. Provide at least one URL or Place ID. Keywords and business-name searches are not supported.

OptionDefaultBehavior
placeUrlsSample URL in ConsoleOne or more Maps place URLs; direct business URLs recommended
placeIdsEmptyGoogle Place IDs as an alternative to URLs
maxReviews20Per-place limit, maximum 1,000; 0 means the 1,000 safety cap, not unlimited
sortnewestnewest, relevant, highest, lowest
languageenMaps interface language; parsing and sort controls currently rely on English labels
regionUSMaps region code, e.g. US or IN
includeReviewerDetailstrueSet false to omit reviewer name and profile URL
proxyConfigurationNo Apify ProxyOptional Apify or custom proxy configuration
debugModefalseAdditional logs and slower browser actions

Output example

Illustrative review record, abbreviated; this is not a measured sample run:

{
"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!"
}

The default dataset contains review and placeSummary records joined by placeKey. The Reviews and Places views select columns; they do not filter out the other record type. The key-value store also contains PLACE_SUMMARIES for accessing quality results separately. scrapedReviewsCount is the extracted count; deliveredReviewsCount is the number of review rows written after applying the spending limit.

Pricing

The live Pricing tab is authoritative. At the September 11, 2026 audit, the review event costs $0.0025 per review ($2.50 per 1,000). That is $0.05 for 20 delivered reviews or $0.25 for 100, plus the Actor start charge.

The start event is $0.00005 per allocated GB, with a minimum of one event. At the current 4 GB default, that is $0.0002 per start. Place summary rows do not incur review-event charges. A run with no extracted reviews can still incur its start charge. The run spending limit can reduce the number of delivered review rows.

Use the Google Maps reviews API

Save the input example as input.json, set your Apify token in APIFY_TOKEN, and create a 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-binary @input.json

The response includes data.id. Poll GET https://api.apify.com/v2/actor-runs/RUN_ID using the same authorization header until the run reaches a terminal status. On success, use data.defaultDatasetId:

curl 'https://api.apify.com/v2/datasets/DATASET_ID/items?format=json&clean=true' \
--header "Authorization: Bearer $APIFY_TOKEN"

Replace RUN_ID and DATASET_ID with returned values. Paginate larger exports. In your application, keep records where recordType === "review" for review analysis. See the Actor API tab for more integration examples.

Data quality and troubleshooting

ResultMeaning / next step
okRequested/available review target reached with summary metrics and no collection warnings
partialFewer reviews than the target, incomplete metadata or a collection warning; inspect dataQualityReason
blockedUnusable content or blocking signals; retry a small sample with a different proxy/session configuration
Invalid input errorSupply a direct Google Maps business URL or actual Place ID
Unexpected review orderCheck warnings: if Google sort controls fail, locally sorting the collected subset cannot guarantee globally newest/highest/lowest reviews
Missing dates/repliesGoogle may omit the field; use en because non-English interface parsing is limited
Fewer output rows than collectedCheck the run spending limit and charge-limit warnings

Google Maps markup, session restrictions and visible review counts can vary. The Actor cannot guarantee all reviews, exact dates from relative labels, or complete results for every business. It stops after repeated scrolls yield no new reviews and also has an iteration limit.

Frequently asked questions

Can I export Google reviews to Excel or CSV?

Yes. Use Apify's dataset export options, then filter the recordType column to review. JSON retains nested place coordinates and warning arrays more naturally.

Can I monitor multiple businesses?

Yes. Supply multiple URLs or Place IDs. The review limit applies to each business. Save input as an Apify task and schedule recurring runs for periodic exports. Cross-run deduplication and change detection belong in your downstream workflow; repeated reviews may be collected and charged again.

Does this analyze sentiment or discover competitors?

It collects review data for your own analysis. Automated competitor discovery, sentiment scoring, review photos, date-range filters and incremental collection are not current features.

Does disabling reviewer details anonymize the data?

It removes the dedicated reviewer name and profile URL fields. Review text and links may still contain personal information.

Where can I report a problem?

Use the Issues tab with your run URL, input settings and expected versus actual result. Do not include API tokens.

Local development

npm install
npm test
npm run build