Google and TripAdvisor Review Scraper
Pricing
from $0.50 / 1,000 results
Google and TripAdvisor Review Scraper
Scrape Google Maps & TripAdvisor reviews with sentiment analysis. Get ratings, text, dates & reviewer info. Features: date filtering, webhook alerts for negative reviews, incremental mode, n8n integration. Perfect for reputation monitoring & competitor analysis. Residential proxies included.
Pricing
from $0.50 / 1,000 results
Rating
0.0
(0)
Developer

Malikgen
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Categories
Share
Review Aggregator Analyzer
Scrape Google Maps and TripAdvisor reviews with sentiment analysis, date filtering, and webhook alerts. Perfect for reputation monitoring, competitor analysis, and automation integration.
Supported Platforms
| Platform | Best For | Review Data |
|---|---|---|
| Google Maps | Local businesses, restaurants, hotels, services | Rating, text, date, reviewer info, photos, owner response |
| TripAdvisor | Hotels, restaurants, attractions | Rating, text, date, reviewer info, helpful votes, owner response |
Features
- Multi-Platform: Scrape both Google Maps and TripAdvisor in one run
- Date Filtering: Filter by last 24h, week, month, or custom date range
- Sentiment Analysis: Built-in sentiment scoring (positive/neutral/negative)
- Webhook Alerts: Instant notifications when negative reviews are found
- Incremental Mode: Only scrape new reviews since last run
- n8n Ready: Includes workflow template for automation
Quick Start
Example Input
{"businesses": [{"name": "McDonald's Times Square","location": "New York, USA","platforms": ["google", "tripadvisor"],"urls": {"google": "https://www.google.com/maps/place/McDonald's/@40.7579787,-73.9877438,17z/data=!3m1!4b1!4m6!3m5!1s0x89c25855b8fb3083:0x5765322ba9927c08!8m2!3d40.7579787!4d-73.9855551!16s%2Fg%2F1tdfh_7d","tripadvisor": "https://www.tripadvisor.com/Restaurant_Review-g60763-d479078-Reviews-McDonald_s-New_York_City_New_York.html"}}],"platforms": ["google", "tripadvisor"],"dateFilter": "last_month","maxReviewsPerBusiness": 50,"enableSentiment": true}
Minimal Example (Google Maps Only)
{"businesses": [{"name": "My Business","location": "City, Country","platforms": ["google"],"urls": {"google": "https://www.google.com/maps/place/..."}}],"dateFilter": "last_week"}
How to Find Business URLs
Google Maps URL
Step-by-step:
- Go to Google Maps
- Search for the business name (e.g., "McDonald's Times Square")
- Click on the business listing in the search results
- Important: Make sure the business info panel is open on the left
- Copy the URL from your browser's address bar
URL Format:
https://www.google.com/maps/place/Business+Name/@LAT,LNG,ZOOM/data=...
Example:
https://www.google.com/maps/place/McDonald's/@40.7579787,-73.9877438,17z/data=!3m1!4b1!4m6!3m5!1s0x89c25855b8fb3083:0x5765322ba9927c08!8m2!3d40.7579787!4d-73.9855551!16s%2Fg%2F1tdfh_7d
Tips:
- The URL must contain
/place/- this indicates you're on a specific business page - You can also click "Share" on the business and copy the link
- Short URLs (maps.app.goo.gl) also work
TripAdvisor URL
Step-by-step:
- Go to TripAdvisor
- Search for the business name and location
- Click on the specific business listing
- Copy the URL from your browser's address bar
URL Formats:
# Restauranthttps://www.tripadvisor.com/Restaurant_Review-g{GEO_ID}-d{LOCATION_ID}-Reviews-Name-City.html# Hotelhttps://www.tripadvisor.com/Hotel_Review-g{GEO_ID}-d{LOCATION_ID}-Reviews-Name-City.html# Attractionhttps://www.tripadvisor.com/Attraction_Review-g{GEO_ID}-d{LOCATION_ID}-Reviews-Name-City.html
Example:
https://www.tripadvisor.com/Restaurant_Review-g60763-d479078-Reviews-McDonald_s-New_York_City_New_York.html
URL Components:
g60763= Geographic location ID (New York City)d479078= Business/Location ID (this is what we extract)- The scraper extracts the
d{number}part automatically
Input Parameters
Business Configuration
| Parameter | Type | Required | Description |
|---|---|---|---|
businesses | Array | Yes | List of businesses with name, location, platforms, and URLs |
platforms | Array | No | Platforms to scrape: google, tripadvisor (default: both) |
Date Filtering
| Parameter | Type | Default | Description |
|---|---|---|---|
dateFilter | String | last_month | Quick filter options (see table below) |
dateFrom | String | - | Start date (YYYY-MM-DD) for custom range |
dateTo | String | - | End date (YYYY-MM-DD) for custom range |
Date Filter Options:
| Value | Time Range | Use Case |
|---|---|---|
last_24h | Past 24 hours | Daily monitoring |
last_48h | Past 48 hours | Catch missed reviews |
last_week | Past 7 days | Weekly reports |
last_month | Past 30 days | Monthly analysis |
last_3_months | Past 90 days | Quarterly review |
last_year | Past 365 days | Annual analysis |
all | All time | Initial data collection |
custom | Custom range | Use with dateFrom/dateTo |
Scraping Options
| Parameter | Type | Default | Description |
|---|---|---|---|
maxReviewsPerBusiness | Integer | 100 | Max reviews per business per platform (10-1000) |
sortBy | String | newest | Sort order: newest, oldest, highest_rating, lowest_rating |
onlyNewReviews | Boolean | false | Incremental mode - only new reviews since last run |
Sentiment & Filtering
| Parameter | Type | Default | Description |
|---|---|---|---|
enableSentiment | Boolean | true | Enable sentiment analysis (adds positive/negative/neutral labels to each review) |
sentimentFilter | String | all | Filter: all, negative_only, positive_only |
minRating | Integer | - | Only reviews with rating >= this value |
maxRating | Integer | - | Only reviews with rating <= this value |
Note: Sentiment analysis is enabled by default. Each review gets a sentiment score (0-1) and label (positive/neutral/negative). This helps identify reviews that need attention without manual reading.
Webhook Alerts
| Parameter | Type | Description |
|---|---|---|
webhookUrl | String | URL to POST when negative review is found |
negativeThreshold | Integer | Rating at or below this triggers webhook (default: 2) |
Proxy Configuration
| Parameter | Type | Default | Description |
|---|---|---|---|
proxyConfiguration | Object | Residential | Proxy settings for avoiding blocks |
⚠️ IMPORTANT: Proxy Requirements
| Platform | Proxy Type | Notes |
|---|---|---|
| Google Maps | Datacenter or Residential | Works with both, datacenter is cheaper |
| TripAdvisor | RESIDENTIAL REQUIRED | Will get 403 errors with datacenter proxies |
Recommendation: Use RESIDENTIAL proxy group for best results with both platforms. This is set as the default.
If you're only scraping Google Maps, you can switch to datacenter proxies to save costs.
Example Output
JSON Output (Single Review)
Each review in the dataset contains the following structure (real data from McDonald's Times Square):
{"id": "Ci9DQUlRQUNvZENodHljRjlvT2xaQ09HUXpkakkyY2pWa2NGWTVRbE4zY205SWEzYxAB","business": {"name": "McDonald's Times Square","location": "New York, USA","businessId": null,"platformBusinessId": null},"platform": "google","platformUrl": "https://www.google.com/maps/place/McDonald's/@40.7579787,-73.9877438,17z/...","reviewer": {"name": "R J","profileUrl": null,"reviewCount": null,"isLocalGuide": false,"avatarUrl": "https://lh3.googleusercontent.com/a/ACg8ocIu40q_Gyd7uJGek25e6IhiIig0POA3I1X2yT_IsYEvS6TmRg=w36-h36-p-rp-mo-ba4-br100"},"review": {"rating": 4,"ratingNormalized": 4,"text": "Convenient location and great customer service staff.","date": "2025-12-18","dateISO": "2025-12-18T21:41:33.277Z","language": "en","helpfulVotes": 0,"photos": []},"businessResponse": null,"sentiment": {"score": 0.47,"label": "positive","confidence": 0.68,"source": "combined","breakdown": {"text": 0.43,"rating": 0.5}},"metadata": {"scrapedAt": "2025-12-18T21:41:33.277Z","isNew": true,"runId": "VTnrK3BNnx"}}
Example: Multiple Reviews (Real Data)
[{"id": "review-001","business": { "name": "McDonald's Times Square", "location": "New York, USA" },"platform": "google","reviewer": { "name": "Elvis Jimenez", "isLocalGuide": false },"review": {"rating": 5,"text": "One of the cleanest mc'D in NYC very fast service hot food and hot coffee. Worth the trip","date": "2025-12-18"},"sentiment": { "score": 0.64, "label": "positive", "confidence": 0.39 }},{"id": "review-002","business": { "name": "McDonald's Times Square", "location": "New York, USA" },"platform": "google","reviewer": { "name": "laura Vazquez", "isLocalGuide": false },"review": {"rating": 1,"text": "A very very nasty 🤢 security officer in here makes it a horrible customer experience I will make sure I don't return here…","date": "2025-12-18"},"sentiment": { "score": -0.7, "label": "negative", "confidence": 0.48 }},{"id": "review-003","business": { "name": "McDonald's Times Square", "location": "New York, USA" },"platform": "google","reviewer": { "name": "Angelx Galloza", "isLocalGuide": false },"review": {"rating": 3,"text": "To long for the wait gentleman working with long face and attitude and got the wrong order","date": "2025-12-18"},"sentiment": { "score": -0.04, "label": "neutral", "confidence": 0.55 }}]
CSV Output Format
When exporting as CSV, the data is flattened:
| id | business.name | platform | reviewer.name | review.rating | review.text | review.date | sentiment.label | sentiment.score |
|---|---|---|---|---|---|---|---|---|
| review-001 | McDonald's Times Square | Elvis Jimenez | 5 | One of the cleanest mc'D in NYC... | 2025-12-18 | positive | 0.64 | |
| review-002 | McDonald's Times Square | laura Vazquez | 1 | A very very nasty security officer... | 2025-12-18 | negative | -0.70 | |
| review-003 | McDonald's Times Square | Angelx Galloza | 3 | To long for the wait gentleman... | 2025-12-18 | neutral | -0.04 |
Sentiment Score Interpretation
| Score Range | Label | Description |
|---|---|---|
| 0.0 - 0.35 | negative | Bad reviews needing attention |
| 0.35 - 0.65 | neutral | Mixed or average reviews |
| 0.65 - 1.0 | positive | Good reviews, happy customers |
API Usage
Start a Run
curl -X POST "https://api.apify.com/v2/acts/malikgen~review-aggregator-analyzer/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"businesses": [{"name": "McDonald'\''s Times Square","location": "New York, USA","platforms": ["google", "tripadvisor"],"urls": {"google": "https://www.google.com/maps/place/McDonald'\''s/@40.7579787,-73.9877438,17z/...","tripadvisor": "https://www.tripadvisor.com/Restaurant_Review-g60763-d479078-Reviews-McDonald_s-New_York_City_New_York.html"}}],"dateFilter": "last_month"}'
Get Results
# JSON formatcurl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_TOKEN&format=json"# CSV formatcurl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_TOKEN&format=csv"
n8n Integration
This Actor includes a ready-to-use n8n workflow for automated review monitoring.
Quick Setup
- Import Workflow: Download
n8n-workflow-async-polling.jsonand import into n8n - Add Apify Credential: Settings > Credentials > Add "Query Auth" with your API token
- Configure Actor ID: Update to
malikgen~review-aggregator-analyzer - Optional: Connect Google Sheets for automatic export
Form Fields
The included n8n form has these fields with example placeholders:
| Field | Example |
|---|---|
| Business Name | McDonald's Times Square |
| Location | New York, USA |
| Google Maps URL | https://www.google.com/maps/place/... |
| TripAdvisor URL | https://www.tripadvisor.com/Restaurant_Review-... |
| Date Filter | last_month |
| Max Reviews | 50 |
Troubleshooting
No reviews returned?
- Check URLs: Verify the URLs open correctly in a browser
- Expand date filter: Try
last_monthorallto confirm data exists - Check platform: TripAdvisor may have fewer recent reviews than Google
TripAdvisor returns 0 reviews?
- ⚠️ USE RESIDENTIAL PROXIES - TripAdvisor blocks datacenter IPs. Make sure you have "RESIDENTIAL" selected in proxy configuration.
- TripAdvisor reviews are less frequent than Google Maps
- Try expanding the date range (e.g.,
last_monthinstead oflast_week) - The scraper filters by date AFTER fetching - if all reviews are old, result is 0
Timeout or slow runs?
- Reduce
maxReviewsPerBusiness(try 50 instead of 100) - Run fewer businesses per scrape
- Use date filters to limit data
Pricing
This Actor charges per result (per review scraped).
$1 USD = 2,000 reviews at $0.0005 per review
| Reviews | Cost |
|---|---|
| 100 | $0.05 |
| 500 | $0.25 |
| 1,000 | $0.50 |
| 5,000 | $2.50 |
Plus Apify platform compute costs (~$0.05-0.15 per run)
Support
- Issues: Report via Apify Console or GitHub
- Documentation: Apify Docs
Changelog
v0.0.21 (Current)
- Focused on Google Maps and TripAdvisor platforms
- Improved date filtering reliability
- Updated default examples with McDonald's Times Square
- Added comprehensive n8n workflow template
v0.0.20
- Added date filters for periodic runs
- Added sentiment and rating output filters
- Improved TripAdvisor GraphQL scraper
