How to Monitor Online Reviews with Proxies
Online reviews on Google, Yelp, Amazon, and Trustpilot directly impact brand reputation and purchasing decisions. Monitoring reviews at scale requires proxy infrastructure to access review platforms reliably across geographic regions.
Disclaimer: Review each platform's Terms of Service. Use official APIs (Google Places API, Yelp Fusion API) where available. This guide covers proxy configuration for legitimate monitoring.
Review Monitoring Architecture
import httpx
import time
import random
from dataclasses import dataclass
from datetime import datetime
@dataclass(frozen=True)
class Review:
platform: str
author: str
rating: float
text: str
date: str
business_name: str
collected_at: str
@dataclass(frozen=True)
class ReviewSummary:
platform: str
business: str
avg_rating: float
total_reviews: int
recent_reviews: list[Review]
def collect_reviews(
business_url: str,
platform: str,
proxy: str,
) -> list[Review]:
"""Collect reviews from a business listing."""
time.sleep(random.uniform(3.0, 8.0))
with httpx.Client(proxy=proxy, timeout=30, follow_redirects=True) as client:
resp = client.get(business_url, headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"Accept": "text/html,application/xhtml+xml",
"Accept-Encoding": "gzip, deflate, br",
})
# Platform-specific review extraction
return []Multi-Platform Monitoring
@dataclass(frozen=True)
class BusinessProfile:
name: str
urls: dict[str, str] # platform -> URL
def monitor_all_platforms(
business: BusinessProfile,
proxy: str,
) -> dict[str, list[Review]]:
"""Monitor reviews across all platforms for a business."""
results: dict[str, list[Review]] = {}
for platform, url in business.urls.items():
reviews = collect_reviews(url, platform, proxy)
results = {**results, platform: reviews}
time.sleep(random.uniform(5.0, 10.0))
return resultsSentiment Analysis Integration
@dataclass(frozen=True)
class SentimentResult:
review_text: str
sentiment: str # positive, negative, neutral
score: float
keywords: list[str]
def analyze_review_sentiment(reviews: list[Review]) -> list[SentimentResult]:
"""Basic keyword-based sentiment analysis."""
positive_words = {"great", "excellent", "amazing", "love", "best", "wonderful", "fantastic"}
negative_words = {"terrible", "awful", "worst", "horrible", "bad", "poor", "disappointing"}
results: list[SentimentResult] = []
for review in reviews:
words = set(review.text.lower().split())
pos_count = len(words & positive_words)
neg_count = len(words & negative_words)
if pos_count > neg_count:
sentiment = "positive"
score = pos_count / max(pos_count + neg_count, 1)
elif neg_count > pos_count:
sentiment = "negative"
score = neg_count / max(pos_count + neg_count, 1)
else:
sentiment = "neutral"
score = 0.5
found_keywords = list(words & (positive_words | negative_words))
results = [*results, SentimentResult(
review_text=review.text[:100],
sentiment=sentiment,
score=round(score, 2),
keywords=found_keywords,
)]
return resultsCompetitor Review Comparison
Track review metrics for your business and competitors side by side for strategic insights.
Best Practices
- Use residential proxies — review platforms detect and block datacenter traffic
- Use official APIs — Google Places API, Yelp Fusion API provide authorized access
- 5-10 second delays between page requests
- Geo-target proxies for location-specific review platforms
- Monitor review velocity — sudden spikes may indicate fake reviews
Hex Proxies residential network enables reliable review monitoring across all major platforms with geographic targeting for location-specific business listings.