Google Reviews Analyzer avatar

Google Reviews Analyzer

Pricing

Pay per usage

Go to Apify Store
Google Reviews Analyzer

Google Reviews Analyzer

Scrape Google Maps reviews with sentiment analysis and word frequency. Filter by language, sort order.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Fulcria Labs

Fulcria Labs

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

8 days ago

Last modified

Categories

Share

An Apify actor that scrapes Google Maps reviews for any business and provides structured data with sentiment analysis and word frequency insights.

Features

  • Flexible input: Accepts a Google Maps place URL or a business name + city
  • Review extraction: Scrapes reviewer name, star rating, date, review text, and owner responses
  • Sentiment categorization: Classifies each review as positive (4-5 stars), neutral (3 stars), or negative (1-2 stars)
  • Word frequency analysis: Identifies the most common words/themes across reviews, broken down by sentiment
  • Summary statistics: Generates aggregate stats including rating distribution, response rate, and average review length
  • Configurable: Set max reviews, sort order, language filter, and proxy settings

Input Parameters

ParameterTypeDefaultDescription
placeUrlstringGoogle Maps place URL
businessNamestringBusiness name to search (alternative to URL)
locationstringCity/location to narrow search
maxReviewsinteger100Maximum reviews to scrape (1-5000)
sortOrderstringnewestSort: newest, highest, lowest, relevant
languagestringISO 639-1 language code (e.g., en, es)
includeOwnerResponsebooleantrueInclude business owner responses
generateSummarybooleantrueGenerate summary statistics
proxyConfigurationobjectApify proxyProxy settings

Output Format

Individual Review Records

Each review is pushed to the dataset as a separate record:

{
"business_name": "Example Restaurant",
"review_id": "abc123",
"reviewer_name": "John D.",
"rating": 5,
"date": "2 months ago",
"text": "Amazing food and great atmosphere. The pasta was incredible.",
"sentiment": "positive",
"owner_response": "Thank you for your kind words!",
"owner_response_date": "1 month ago",
"reviewer_info": "Local Guide - 42 reviews",
"review_number": 1
}

Summary Statistics

When generateSummary is enabled, a summary record is also generated:

{
"_type": "summary",
"business_name": "Example Restaurant",
"total_reviews_scraped": 100,
"average_rating_scraped": 4.3,
"rating_distribution": {
"1_star": 3,
"2_star": 5,
"3_star": 10,
"4_star": 32,
"5_star": 50
},
"sentiment_distribution": {
"positive": 82,
"neutral": 10,
"negative": 8
},
"owner_response_rate_percent": 45.0,
"top_words": [
{"word": "food", "total_count": 45, "in_positive": 38, "in_neutral": 5, "in_negative": 2},
{"word": "service", "total_count": 30, "in_positive": 20, "in_neutral": 3, "in_negative": 7}
]
}

The full summary is also stored in the key-value store under the SUMMARY key, and the complete output (business info + all reviews + summary) under the OUTPUT key.

Usage Examples

Using a Google Maps URL

{
"placeUrl": "https://www.google.com/maps/place/Statue+of+Liberty",
"maxReviews": 50,
"sortOrder": "newest"
}

Using business name + location

{
"businessName": "Central Park",
"location": "New York",
"maxReviews": 200,
"sortOrder": "lowest",
"language": "en"
}

How It Works

  1. Place resolution: If a business name is provided instead of a URL, the actor searches Google Maps and follows redirects to find the place page.
  2. Page fetching: Loads the Google Maps place page with browser-like headers.
  3. HTML parsing: Extracts review data from DOM elements (data-review-id attributes, aria labels, class-based selectors).
  4. Script data extraction: Falls back to parsing embedded JavaScript data arrays when DOM parsing yields no results.
  5. Search fallback: As a final fallback, searches Google for the business reviews and extracts from knowledge panel results.
  6. Analysis: Categorizes sentiment by rating, runs word frequency analysis, and computes summary statistics.

Proxy Recommendations

Google Maps aggressively rate-limits automated requests. Using Apify proxy (residential or SERP) is strongly recommended for reliable results. Configure the proxyConfiguration input to use proxies.

Limitations

  • Google Maps dynamically loads reviews via JavaScript, so the number of reviews extractable from static HTML is limited. The actor uses multiple extraction strategies to maximize coverage.
  • Review dates are relative (e.g., "2 months ago") as displayed by Google Maps, not absolute dates.
  • Very new or very small businesses may have few or no reviews to scrape.

Development

# Install dependencies
pip install -r requirements.txt
# Run locally with Apify CLI
apify run --input '{"placeUrl": "https://www.google.com/maps/place/..."}'