The Problem
Multi-location businesses need to monitor Google reviews across all locations. Direct Google Maps scraping violates Terms of Service, requires expensive residential proxies, and breaks every 2-4 weeks when Google updates their page layout.
The Scavio Solution
Query Google for each business location via SERP API and extract review data (rating, count, snippets) from the structured search results. This returns the same review data that Google displays publicly in search results, without directly scraping Maps.
Before
Before the switch, a restaurant chain used Outscraper to scrape Google Maps reviews across 25 locations ($75/mo). The scraper broke twice in 3 months, each time taking 2-3 days to fix. During outages, negative reviews went undetected.
After
After switching to SERP API monitoring, 25 daily queries return current rating and review count for each location. Cost: $3.75/month. Zero breakage in 4 months. Alerts fire within 24 hours when any location drops below 4.0 stars or gains 5+ reviews in a day.
Who It Is For
Multi-location businesses and reputation management agencies who need reliable, low-cost Google review monitoring without the legal and maintenance risks of direct scraping.
Key Benefits
- $3.75/month for 25-location daily monitoring vs $75/month Outscraper
- Zero scraper maintenance and zero breakage
- Legally safer than direct Maps scraping
- Alerts on rating drops and review spikes
- Structured JSON with rating, count, and review snippets
Python Example
import requests, os, json
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def monitor_reviews(business_name: str, location: str) -> dict:
query = f'{business_name} {location} reviews'
r = requests.post('https://api.scavio.dev/api/v1/search', headers=H,
json={'platform': 'google', 'query': query}, timeout=10).json()
kg = r.get('knowledge_graph', {})
return {
'business': business_name,
'location': location,
'rating': kg.get('rating'),
'review_count': kg.get('review_count'),
'type': kg.get('type'),
}
locations = [
('Joes Pizza', 'Brooklyn NY'),
('Joes Pizza', 'Manhattan NY'),
]
for name, loc in locations:
result = monitor_reviews(name, loc)
print(f"{result['location']}: {result['rating']} ({result['review_count']} reviews)")JavaScript Example
const H = { 'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json' };
async function monitorReviews(business, location) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: H,
body: JSON.stringify({ platform: 'google', query: `${business} ${location} reviews` })
}).then(r => r.json());
const kg = r.knowledge_graph || {};
return { business, location, rating: kg.rating, reviewCount: kg.review_count };
}
const result = await monitorReviews('Joes Pizza', 'Brooklyn NY');
console.log(`${result.location}: ${result.rating} (${result.reviewCount} reviews)`);Platforms Used
Web search with knowledge graph, PAA, and AI overviews