Google Maps Review Scraper avatar

Google Maps Review Scraper

Pricing

$15.00/month + usage

Go to Apify Store
Google Maps Review Scraper

Google Maps Review Scraper

Scrape Google Maps reviews and return clean, structured data for analytics, monitoring, and workflows.

Pricing

$15.00/month + usage

Rating

0.0

(0)

Developer

Matthew James

Matthew James

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Google Maps Reviews Scraper

Google Maps Reviews Scraper helps you collect structured review data from Google Maps place URLs in a fast, repeatable way.

Use it to:

  • monitor brand reputation across multiple locations
  • track competitors and compare sentiment over time
  • collect review datasets for analysis, dashboards, and AI workflows
  • enrich lead research with place-level business context

Instead of manually opening profiles and copying reviews, you can run one Actor job and get clean JSON output ready for automation.

Features

  • Works with both short Google Maps share links and full place URLs
  • Supports bulk scraping in one run with configurable concurrency
  • Lets you control output fields to keep datasets lean
  • Returns consistent schema for downstream integrations
  • Designed for production workflows on Apify

Output

Results are stored in the run dataset in the Output/Storage tab.

Each dataset item contains:

  • place
    • name, url, rating, totalReviewCount, category
    • address (full, street, city, country)
    • phone, website, timezone
    • hours.weekly[] (day, isOpen, open, close, display)
  • scrapedSummary
    • requestedMaxReviews
    • scrapedReviewCount
    • sortOrder
    • scrapedReviewAverageRating
    • status (complete or partial)
    • errorCodes
  • reviews[]
    • position, rating, publishedAt
    • author (name, profileUrl, reviewCount, photoCount)
    • optional text, photos, ownerReply depending on input toggles

Example Output

{
"place": {
"name": "<PLACE_NAME>",
"url": "https://www.google.com/maps/place/<PLACE_PATH>",
"rating": 4.7,
"totalReviewCount": 1234,
"category": "<PLACE_CATEGORY>",
"address": {
"full": "<FULL_ADDRESS>",
"street": "<STREET>",
"city": "<CITY>",
"country": "<COUNTRY>"
},
"phone": "<PHONE_OR_NULL>",
"website": "<WEBSITE_OR_NULL>",
"timezone": "<TIMEZONE_OR_NULL>",
"hours": {
"weekly": [
{
"day": "monday",
"isOpen": true,
"open": "08:00",
"close": "18:00",
"display": "<DISPLAY_TEXT>"
}
]
}
},
"scrapedSummary": {
"requestedMaxReviews": 50,
"scrapedReviewCount": 50,
"sortOrder": "newest",
"scrapedReviewAverageRating": 4.5,
"status": "complete",
"errorCodes": []
},
"reviews": [
{
"position": 1,
"rating": 5,
"publishedAt": "<PUBLISHED_AT>",
"author": {
"name": "<AUTHOR_NAME>",
"profileUrl": "<PROFILE_URL_OR_NULL>",
"reviewCount": 42,
"photoCount": 18
},
"text": "<TEXT_IF_ENABLED>",
"photos": [{ "url": "<PHOTO_URL>" }],
"ownerReply": {
"exists": true,
"text": "<OWNER_REPLY_TEXT_OR_NULL>",
"date": "<ISO_DATE_OR_NULL>",
"relativeDate": "<RELATIVE_DATE_OR_NULL>"
}
}
]
}

Input

The actor accepts the following fields:

  • startUrls (required): list of Google Maps URLs
  • reviewSort (optional, default: Newest)
    • Most relevant
    • Newest
    • Highest rating
    • Lowest rating
  • maxReviews (optional, default: 999)
  • maxConcurrency (optional, default: 1, max: 3)
  • proxy (optional), e.g. { "useApifyProxy": true }
  • returnTextReview (optional, default: true)
  • returnPhotos (optional, default: true)
  • returnOwnerReply (optional, default: true)
  • returnEmptyReviews (optional, default: false)

Example Input

{
"startUrls": [
{ "url": "https://maps.app.goo.gl/<SHORT_CODE>" },
{ "url": "https://www.google.com/maps/place/<PLACE_PATH>" }
],
"reviewSort": "Newest",
"maxReviews": 50,
"maxConcurrency": 1,
"proxy": {
"useApifyProxy": true
},
"returnTextReview": true,
"returnPhotos": true,
"returnOwnerReply": true,
"returnEmptyReviews": false
}

Notes

For lighter users, check out the pay-per-result Actor here: https://apify.com/matthewjames/google-maps-review-scraper-pay-per-result

  • If a place has fewer reviews than requested, the actor returns the available amount.
  • Output fields are controlled by your toggles, so you only pay for and process what you need.