Google Maps Reviews Scraper — Deep Review Extraction avatar

Google Maps Reviews Scraper — Deep Review Extraction

Pricing

Pay per usage

Go to Apify Store
Google Maps Reviews Scraper — Deep Review Extraction

Google Maps Reviews Scraper — Deep Review Extraction

Extract Google Maps reviews with full depth: review text, star ratings, author profiles, review counts, photo counts, owner responses, review photos, helpful votes, and complete business details. Supports search queries and direct place URLs with multi-strategy extraction.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Ricardo Akiyoshi

Ricardo Akiyoshi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Categories

Share

Google Maps Reviews Scraper -- Deep Review Extraction

Extract Google Maps reviews with full depth: review text, star ratings, author profiles with review/photo counts, owner responses, review photos, helpful votes, and complete business details. The highest-demand Google scraper for reputation management, competitor analysis, local SEO, and market research.

What It Does

This actor scrapes Google Maps place pages and extracts two types of structured data:

Per Review (deep extraction):

  • Reviewer name, profile URL, and avatar photo URL
  • Author review count (total reviews by this reviewer)
  • Author photo count (total photos by this reviewer)
  • Star rating (1-5)
  • Full review text
  • Publication date (absolute ISO and relative, e.g. "2 months ago")
  • Helpful vote count (likes)
  • Owner/business response text (if the business replied)
  • Review photos (array of image URLs attached to the review)
  • Direct review URL

Per Business:

  • Business name and Google Maps URL
  • Full address (street, city, state, ZIP, country)
  • Phone number
  • Website URL
  • Overall rating (e.g. 4.3)
  • Total review count
  • Business category (restaurant, hotel, etc.)
  • Price level ($, $$, $$$, $$$$)
  • Operating hours
  • GPS coordinates (latitude, longitude)

Features

  • Three scraping strategies with automatic fallbacks for maximum reliability
  • Embedded JSON extraction from Google's APP_INITIALIZATION_STATE and AF_initDataCallback data blobs (fastest, richest data)
  • HTML/DOM parsing of review cards with 6+ selector fallbacks per field
  • Google Search knowledge panel extraction as a third fallback
  • Deep author data -- review count and photo count for each reviewer (Local Guide stats)
  • Review photo extraction -- captures image URLs attached to individual reviews
  • Search by query -- just type "pizza near Chicago" without needing a Google Maps URL
  • Sort reviews by newest, most relevant, highest rating, or lowest rating
  • 12 rotating User-Agent strings covering Chrome, Firefox, Safari, and Edge
  • Anti-bot headers (sec-ch-ua, sec-fetch-*, Upgrade-Insecure-Requests)
  • Review deduplication by composite key (author + text hash + rating)
  • Multi-strategy pagination -- sort variants, language variants, review tab, mobile URL
  • CAPTCHA and consent page detection with graceful shutdown
  • Proxy support with strong recommendation for residential/SERP proxies
  • PPE (pay-per-event) pricing -- only pay for what you scrape

Use Cases

  • Reputation Management -- Monitor your own Google reviews over time, track rating trends, identify recurring complaints, and measure response rates
  • Competitor Analysis -- Compare review sentiment, response rates, and ratings across competitors in your market. Identify what customers praise or criticize about competitors
  • Local SEO -- Assess review volume, recency, owner response rates, and rating distributions as local search ranking factors. Find gaps in competitor review profiles
  • Market Research -- Analyze what customers love and hate about businesses in a specific category or location. Discover unmet needs and opportunities
  • Sentiment Analysis -- Feed review text into NLP/AI models for automated sentiment classification at scale. Track sentiment changes over time
  • Lead Generation -- Find businesses with low ratings or few reviews that might need your services (marketing, consulting, review management)
  • Due Diligence -- Research business quality before partnerships, investments, or acquisitions by analyzing review patterns and trends
  • Academic Research -- Study consumer behavior, review patterns, rating distributions, and the impact of owner responses on subsequent reviews

Input

FieldTypeDefaultDescription
placeUrlsarray[]Google Maps place/business URLs
searchQuerystring""Search for businesses (e.g. "pizza near Chicago")
maxReviewsinteger500Max reviews per business (0 = unlimited)
sortBystring"newest"Sort: newest, relevant, highest, lowest
languagestring"en"Language code (en, es, fr, de, ja, pt, etc.)
proxyConfigurationobject--Proxy settings (residential/SERP STRONGLY recommended)

Example: Scrape by Google Maps URL

{
"placeUrls": [
"https://www.google.com/maps/place/Central+Park/@40.7828647,-73.9653551",
"https://www.google.com/maps/place/The+Ritz-Carlton+New+York/@40.7641489,-73.9741874"
],
"maxReviews": 200,
"sortBy": "newest",
"language": "en"
}

Example: Search by Query

{
"searchQuery": "pizza near Chicago",
"maxReviews": 500,
"sortBy": "relevant"
}

Example: Only Negative Reviews

{
"placeUrls": ["https://www.google.com/maps/place/..."],
"maxReviews": 100,
"sortBy": "lowest"
}

Output

The actor produces two types of records in the output dataset:

Business Info Record

{
"type": "businessInfo",
"businessName": "Central Park",
"address": "New York, NY 10024, United States",
"phone": "+1 212-310-6600",
"website": "https://www.centralparknyc.org/",
"overallRating": 4.8,
"totalReviews": 234567,
"category": "Park",
"priceLevel": null,
"hours": "Open 24 hours",
"latitude": 40.7828647,
"longitude": -73.9653551,
"googleMapsUrl": "https://www.google.com/maps/place/Central+Park/@40.7828647,-73.9653551",
"scrapedAt": "2026-03-02T12:00:00.000Z"
}

Review Record (Deep)

{
"type": "review",
"businessName": "Central Park",
"businessUrl": "https://www.google.com/maps/place/Central+Park/@40.7828647,-73.9653551",
"reviewerName": "John D.",
"reviewerProfileUrl": "https://www.google.com/maps/contrib/123456789",
"reviewerPhotoUrl": "https://lh3.googleusercontent.com/a/...",
"authorReviewCount": 87,
"authorPhotoCount": 234,
"rating": 5,
"text": "Absolutely stunning park in the heart of Manhattan. The Bethesda Fountain area is magical during sunset. Great for running, biking, or just a peaceful walk.",
"publishedDate": "2026-01-15T10:30:00.000Z",
"relativeDate": "2 months ago",
"likes": 12,
"ownerResponse": null,
"photos": [
"https://lh3.googleusercontent.com/p/AF1QipN...=s800",
"https://lh3.googleusercontent.com/p/AF1QipO...=s800"
],
"reviewUrl": "https://www.google.com/maps/reviews/data=abc123",
"scrapedAt": "2026-03-02T12:00:05.000Z"
}

Review with Owner Response

{
"type": "review",
"businessName": "The Ritz-Carlton New York",
"reviewerName": "Sarah M.",
"reviewerProfileUrl": "https://www.google.com/maps/contrib/987654321",
"reviewerPhotoUrl": "https://lh3.googleusercontent.com/a/...",
"authorReviewCount": 15,
"authorPhotoCount": 8,
"rating": 4,
"text": "Beautiful hotel with excellent service. The room was spacious and clean. Only downside was the noise from the street at night.",
"publishedDate": "2026-02-20T00:00:00.000Z",
"relativeDate": "a week ago",
"likes": 3,
"ownerResponse": "Thank you for your kind review, Sarah! We apologize for the street noise and have noted your feedback. We hope to welcome you back soon.",
"photos": [],
"scrapedAt": "2026-03-02T12:00:10.000Z"
}

Pricing (Pay-Per-Event)

This actor uses Apify's pay-per-event billing model:

EventPriceDescription
review-scraped$0.004Per individual review extracted with full depth

Example cost: Scraping 500 reviews = 500 x $0.004 = $2.00

You set a maximum budget per run, and the actor will never exceed it.

Proxy Recommendations

Google is one of the most aggressive anti-scraping platforms. Residential or SERP proxies are essential for reliable scraping.

Proxy TypeReliabilitySpeedCost
Apify SERP proxiesExcellentFastHigher
Residential proxiesVery goodMediumMedium
Datacenter proxiesLow (frequently blocked)FastLow
No proxyVery lowFastFree

Recommendation: Use Apify SERP proxies for the best results. They are specifically optimized for Google scraping and automatically handle consent pages.

How to Run

On Apify Platform

  1. Go to the actor page on Apify Store
  2. Click "Start" or "Try for free"
  3. Enter Google Maps URLs or a search query
  4. Configure max reviews and sort order
  5. Click "Run"
  6. Download results as JSON, CSV, or Excel

Via Apify API

curl -X POST "https://api.apify.com/v2/acts/<ACTOR_ID>/runs" \
-H "Authorization: Bearer <YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"placeUrls": ["https://www.google.com/maps/place/Central+Park/@40.7828647,-73.9653551"],
"maxReviews": 100,
"sortBy": "newest",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}'

Locally

# Clone the repository
git clone <repo-url>
cd google-reviews-scraper
# Install dependencies
npm install
# Create input file
mkdir -p ./storage/key_value_stores/default
echo '{
"placeUrls": ["https://www.google.com/maps/place/Central+Park/@40.7828647,-73.9653551"],
"maxReviews": 20
}' > ./storage/key_value_stores/default/INPUT.json
# Run
npm start

Technical Details

  • Runtime: Node.js 18 on Apify platform
  • Framework: Crawlee (CheerioCrawler) + Apify SDK v3
  • Extraction: Three-strategy approach (embedded JSON, DOM parsing, knowledge panel)
  • Deduplication: MD5 hash of (author + text snippet + rating)
  • Rate limiting: 12 requests/minute, 2 concurrent requests max
  • Retries: 3 automatic retries per failed request
  • User-Agents: 12 rotating strings (Chrome, Firefox, Safari, Edge)
  • Memory: ~256 MB recommended for typical runs

Limitations

  • Google Maps loads additional reviews via JavaScript (AJAX/XHR). Since this actor uses CheerioCrawler (no browser rendering), it extracts reviews from the initial HTML payload. The actor compensates with multi-strategy pagination (sort variants, language variants, review tab URL).
  • Google aggressively blocks scrapers. Without residential or SERP proxies, most requests will be blocked.
  • Google frequently changes class names and page structure. The actor uses 6+ selector fallbacks per field, but some changes may require updates.
  • Review text may be truncated for very long reviews on Google Maps.
  • Author review count and photo count are only available when Google includes Local Guide stats in the page data.
  • The searchQuery input returns reviews for the top-matching businesses (up to 4). For precise targeting, use direct placeUrls.

Changelog

v1.0 (2026-03-02)

  • Initial release
  • Three-strategy extraction (embedded JSON, DOM parsing, knowledge panel)
  • Deep author data (review count, photo count)
  • Review photo extraction
  • Review deduplication by composite key
  • Multi-strategy pagination (sort, language, review tab, mobile)
  • CAPTCHA and consent page detection
  • 12 rotating User-Agents with anti-bot headers
  • PPE billing integration ($0.004 per review)

Support

Built by Sovereign AI. For issues, feature requests, or custom scraping needs:

Integration — Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("sovereigntaylor/google-reviews-scraper").call(run_input={
"placeId": "ChIJN1t_tDeuEmsRUsoyG83frY4",
"maxResults": 100
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{item.get('author', 'Anonymous')}: {item.get('rating', 0)} stars")

Integration — JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('sovereigntaylor/google-reviews-scraper').call({
placeId: 'ChIJN1t_tDeuEmsRUsoyG83frY4',
maxResults: 100
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(item => console.log(item.author || item.name || 'N/A'));