📍 Google Maps & Local Scraper Suite: B2B Leads & Emails ($0.50/1K), 10K Reviews ($0.25/1K), Change Tracker, Local Guides, 4K Photos & Naver Place API
Complete Google Maps & Local B2B lead generation, website email & ad pixel enrichment ($0.50/1K), 10,000-review bulk extraction ($0.25/1K), stateful review change & removal tracking (NEW/REMOVED/EDITED), Local Guide forensics, uncompressed (=s0) 4K photo/menu extraction, and Naver Place Korea POI suite on Apify.
🚀 Try Live on Apify • ⚡ Official n8n Creator Hub • 🔧 38 Free n8n Templates • 📖 Documentation & Schemas • 📚 Engineering Playbooks
⚡ 1-Click Free Trial: Test live queries using Apify's $5 free monthly credit • Zero login or cookies required
This repository contains ready-to-run Python SDK scripts, 1-click n8n automation workflow .json templates, AI Agent MCP configuration (.cursor/mcp.json), and sample output datasets (JSON & CSV):
- 🤖 Cursor, Windsurf & Claude Code MCP Ready: Includes
.cursor/mcp.jsonpre-configured withhttps://mcp.apify.comso AI coding agents can invoke these UnitBytes scrapers natively. - 💡 Using n8n? Explore our official creator profile at n8n.io/creators/unitbytes or copy all 38 pre-built scraping workflows (
Ctrl+V) at unitbytes.com/n8n. - 📚 Engineering Playbooks: B2B Leads & Email Prospecting Playbook • 10K Reviews Extraction Playbook • Review Monitor & Change Tracker Playbook • Fake Review Forensic Playbook • Places Photo API Pricing Teardown — or browse all guides at unitbytes.com/blog.
Launch pre-configured extraction templates directly in the Apify Cloud Console with zero parameter setup:
| Task Preset | Target Extraction Use Case | Direct Launch |
|---|---|---|
| Track Google Maps Review Deletions & Edits | Monitor Google Maps reviews for silent removals, text edits, and star rating changes. Get structured ACTIVE/REMOVED status per review URL | ⚡ Run Task Preset |
| Monitor Reviews for Car Dealers & Local Businesses | Audit Google Maps reviews for auto dealers and local businesses. Detect fake review removal, rating changes, and owner reply updates in bulk | ⚡ Run Task Preset |
| Verify Google Maps Review Removal Takedowns | Confirm if your reported Google Maps reviews were successfully removed. Verify takedown requests and get ACTIVE/REMOVED status instantly | ⚡ Run Task Preset |
| Verify Fake Google Review Takedown & Deletion | Confirm if reported fake or defamatory 1-star reviews were removed by Google. Get timestamped ACTIVE or REMOVED verification without manual checking. | ⚡ Run Task Preset |
| Local SEO Client Google Review Removal Audit | Audit client Google Business Profiles for unexpectedly dropped or filtered 5-star reviews. Differentiate between active and quietly deleted reviews. | ⚡ Run Task Preset |
| Restaurant & Hotel Google Review Change Monitor | Monitor hospitality reviews for star rating modifications, text updates, and owner reply changes. Export audit logs for brand reputation defense. | ⚡ Run Task Preset |
| Audit Local Guide Reviews & Contribution History | Extract full review history, ratings, photos, and places visited by an active Google Local Guide. Audit reviewer authority, credibility, and sentiment. | ⚡ Run Task Preset |
| Export Google Contributor Reviews to Excel / CSV | Download all Google Maps reviews by a contributor into a spreadsheet. Includes star ratings, review text, permalinks, and owner replies. | ⚡ Run Task Preset |
| Analyze Competitor Google Maps Reviewers | Investigate reviewers who reviewed competitors. Uncover which other businesses they frequent, their rating patterns, and identify potential brand advocates. | ⚡ Run Task Preset |
| Find Local Food & Restaurant Influencers on Google Maps | Identify Level 6-10 food critics and culinary Local Guides with hundreds of high-quality dining reviews and uploaded photos. | ⚡ Run Task Preset |
| Scout Travel & Hotel Local Guides for Tourism Marketing | Find prolific travel reviewers and hospitality Local Guides who frequently review resorts, boutique hotels, and tourist attractions. | ⚡ Run Task Preset |
| Extract High-Resolution Local Guide Photos in Original Quality | Download original full-resolution (=s0) photos uploaded by top Google Maps Local Guides with dimensions, captions, and place coordinates. | ⚡ Run Task Preset |
| Scrape Restaurant Food, Dishes & Menu Photos on Google Maps | Extract authentic customer-uploaded food, dish, drink, and menu photos with restaurant name, category, and place IDs. | ⚡ Run Task Preset |
| Track Local Guide Total Photo Views & Influencer Reach | Measure total aggregate photo view counts (e.g. 15M+ views), Local Guide levels, and points to identify top visual influencers. | ⚡ Run Task Preset |
| Extract Hotel, Resort & Vacation Photos Uploaded by Guests | Collect authentic guest-uploaded travel photos of hotel rooms, amenities, pools, and resorts with exact GPS coordinates. | ⚡ Run Task Preset |
| Audit Storefronts, Retail Signage & Commercial Photos | Gather exterior storefront images, entrance photos, and commercial signage uploaded by local contributors across US cities. | ⚡ Run Task Preset |
| Map Contributor Photos to Place IDs & GPS Coordinates | Extract photos with verified Google Place IDs, CIDs, addresses, and latitude/longitude coordinates for GIS and spatial mapping. | ⚡ Run Task Preset |
| Use Case / Capability | 🧲 B2B Leads & Email Scraper | ⭐ 10K Bulk Reviews Scraper | 🛡️ Review Monitor & Change Tracker | 🕵️ Contributor & Local Guide Scraper | 📸 4K Photos, Menus & Videos Scraper | Official Google Places API |
|---|---|---|---|---|---|---|
| Primary Best Fit | B2B Cold Outreach, SMMA & Local SEO Prospecting | Bulk Historical Review Datasets & Sentiment AI | Scheduled Change Diffing (NEW/REMOVED/EDITED), SLA & ORM |
Fake Review Forensics & Influencer Scouting | Uncompressed (=s0) Menus, Storefronts & MP4s |
Basic map widget display |
| Starting Price | 💰 $0.50 – $1.50 / 1K leads |
💰 $0.25 – $0.35 / 1K reviews |
$1.20 – $1.50 / 1K checks |
$0.80 – $1.00 / 1K reviews |
💰 $0.50 – $1.50 / 1K photos |
❌ $17.00 – $40.00+ / 1K calls |
| Verified Website Emails & 6 Socials | ✅ Included Free (primary_email, emails, LI/IG/FB/X/TikTok/YT) |
— | — | — | — | ❌ Never returned |
| Website CMS, Ad Pixels & Pitch Flags | ✅ 12 CMS + Meta/Google Pixels + 9 agency_opportunity_flags |
— | — | — | — | ❌ Never returned |
| Cold-Outreach Review Hook | ✅ 1 Review Hook + 1-Click Report Link Included | Up to 10,000 reviews/place | Up to 10,000 reviews/place | Up to 200 reviews/user | — | Max 5 reviews (unsortable) |
| Server-Side Sort & Keyword Filter | most_relevant, lowest_rating, newest |
✅ newest, lowest_rating, highest_rating, reviewKeyword |
✅ newest, lowest_rating, highest_rating, reviewKeyword |
Chronological feed | ✅ All 9 Gallery Tabs (menu, videos, food_and_drink, etc.) |
❌ Capped at 5 reviews / 10 photos |
Stateful Cross-Run Diff (change_type) |
— | Stateless bulk | ✅ NEW, REMOVED, RATING_CHANGED, TEXT_EDITED, OWNER_REPLIED |
— | — | ❌ Not supported |
| Owner Reply SLA & Burner Triage | — | ✅ response_time_hours, unanswered_hours, is_burner_suspect |
✅ response_time_hours, unanswered_hours, is_burner_suspect |
✅ Cross-location burner & attack ring detection | — | ❌ Not supported |
Fast, low-cost Google Maps B2B Leads & Email Scraper ($0.50–$1.50/1K). Extract verified business emails, phones, WhatsApp, LinkedIn/Instagram/Facebook profiles, unclaimed GMB status, tech stack (WordPress/Shopify/Pixels), and cold-outreach review hooks into 48...
- Pricing:
$0.0015 / item(Pay-Per-Event — $0.0015 b2b lead & contact scraped (volume tiers from $0.0005)) - Cloud Console: https://apify.com/unitbytes/google-maps-leads-scraper?fpr=939u3w&fp_sid=gh_gmaps
- Full Documentation & Schema: https://unitbytes.com/actors/google-maps-leads-scraper/
- n8n Workflow File:
n8n/google-maps-leads-scraper-n8n-workflow.json - Engineering Playbook: Google Maps B2B Leads & Email Scraper Guide (2026): Extract Verified Emails, Tech Stacks, Ad Pixels & Outreach Hooks ($0.50/1K)
- All-in-One Google Maps + Website Email & Social Enrichment: Automatically visits each business official website plus /contact and /about subpages to extract de-obfuscated emails (prioritizing owner@, founder@, ceo@, dr@, contact@, info@ in primary_email), E.164 phone numbers (phone_international), WhatsApp links, and 6 social media columns.
- High-Intent Agency Opportunity Flags & Lead Score (0–100): Audits every prospect for actionable digital marketing gaps: UNCLAIMED_GBP (with 1-click claim_business_url), MISSING_META_PIXEL, MISSING_GOOGLE_TAG, NO_ONLINE_BOOKING, NO_WEBSITE, LOW_RATING_UNDER_4_2, LOW_REVIEW_COUNT, NO_EMAIL_ON_SITE, and NO_SOCIAL_LINKS.
- Website CMS, Ad Pixels & Online Booking Detection: Detects 12 CMS platforms (WordPress, Shopify, Wix, Squarespace, Webflow, GoHighLevel, Duda, HubSpot CMS), 12 martech/ad tags (Meta Pixel, Google Ads / GTag, TikTok Pixel, HubSpot, Birdeye, Podium, Yext), and 12+ booking widgets (Calendly, Zocdoc, NexHealth, Mindbody, OpenTable).
- Built-In Cold-Outreach Review Hooks (reviewHookType): Extracts a real customer review snippet (review_hook_text, review_hook_stars, review_hook_author, review_hook_date) + 1-click Google dispute link (review_hook_report_url) in most_relevant (cold email icebreaker), lowest_rating (1-star ORM pitch), or newest mode.
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run_input = {
"searchQueries": ["dentists in Austin TX"],
"maxPlacesPerQuery": 20,
"reviewHookType": "most_relevant",
"language": "en",
"region": "us",
"proxyConfiguration": {
"useApifyProxy": True
}
}
run = client.actor("unitbytes/google-maps-leads-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("business_name"), item.get("input_query"), item.get("rating")){
"input_query": "dentists in Austin TX",
"status": "ACTIVE",
"scraped_at": "2026-10-24T17:30:00.000000+00:00",
"error": null,
"business_name": "Austin Smile & Implant Center",
"place_id": "ChIJ2_VLfRdawokRXKfA6CMf5YQ",
"place_cid": "9576097791875393372",
"feature_id": "0x8644b599a0f15555:0x84e51f23e8c0a75c",
"knowledge_graph_id": "/g/11b6_r8xyz",
"primary_category": "Dentist",
"categories": [
"Dentist",
"Cosmetic dentist",
"Dental clinic"
],
"google_maps_url": "https://www.google.com/maps/place/?q=place_id:ChIJ2_VLfRdawokRXKfA6CMf5YQ",
"price_level": null,
"primary_email": "contact@austinsmilecenter.example.com",
"emails": [
"contact@austinsmilecenter.example.com"
],
"email_count": 1,
"has_email": true,
"phone": "(512) 555-0199",
"phone_international": "+15125550199",
"website_phones": [],
"whatsapp_url": null,
"website": "https://www.austinsmilecenter.example.com/",
"domain": "austinsmilecenter.example.com",
"contact_page_url": "https://www.austinsmilecenter.example.com/contact/",
"booking_url": "https://calendly.com/austin-smile-center",
"linkedin_url": null,
"instagram_url": "https://www.instagram.com/austinsmilecenter",
"facebook_url": "https://www.facebook.com/austinsmilecenter",
"twitter_url": null,
"youtube_url": null,
"tiktok_url": null,
"social_urls": [
"https://www.instagram.com/austinsmilecenter",
"https://www.facebook.com/austinsmilecenter"
],
"address": "1200 Congress Ave, Austin, TX 78701",
"street": "1200 Congress Ave",
"neighborhood": "Downtown Austin",
"city": "Austin",
"state": "Texas",
"postal_code": "78701",
"country_code": "US",
"country": "United States",
"plus_code": "7624+8P Austin, Texas",
"latitude": 30.273412,
"longitude": -97.740518,
"timezone": "America/Chicago",
"rating": 4.9,
"reviews_count": 342,
"is_claimed": true,
"claim_business_url": null,
"working_hours": [
"Monday: 8 AM–5 PM",
"Tuesday: 8 AM–5 PM",
"Wednesday: 8 AM–5 PM"
],
"cover_image_url": "https://lh3.googleusercontent.com/p/AF1QipM...=s0",
"website_cms": "WordPress",
"website_tech_stack": [
"WordPress",
"Calendly"
],
"has_meta_pixel": false,
"has_google_ads_tag": false,
"lead_score": 100,
"agency_opportunity_flags": [
"MISSING_META_PIXEL",
"MISSING_GOOGLE_TAG"
],
"review_hook_stars": 5,
"review_hook_author": "Alex M.",
"review_hook_date": "2 weeks ago",
"review_hook_text": "Great experience with the dental team. Fast check-in, modern office, and very helpful staff.",
"review_hook_report_url": "https://www.google.com/local/review/rap/report?postId=..."
}Q: Does Google Maps show email addresses natively, and how does this Actor extract them? Google Maps does not display email addresses on business cards. When scrapeContacts is enabled (default: true), this Actor automatically visits each business's official website plus its /contact and /about subpages to extract verified emails (primary_email...
Q: How does decision-maker email prioritization (primary_email) work? The contact enrichment engine decodes obfuscated mailto: links and protected email strings, filters out false-positive image filenames, CSS tokens, and noreply / sentry addresses, and ranks verified business emails by prioritizing domain-matched addresses and...
Q: What are agency_opportunity_flags and lead_score? Every extracted business is audited for digital marketing gaps and tagged with machine-filterable agency_opportunity_flags: UNCLAIMED_GBP, NO_WEBSITE, NO_EMAIL_ON_SITE, MISSING_META_PIXEL, MISSING_GOOGLE_TAG, NO_ONLINE_BOOKING, LOW_RATING_UNDER_4_2...
Q: How do cold-outreach review hooks (includeReviewHook & reviewHookType) work? When includeReviewHook is true, the Actor extracts a customer review snippet (review_hook_text, review_hook_stars, review_hook_author, review_hook_date) and a 1-click Google dispute URL (review_hook_report_url).
Fast, low-cost Google Maps Reviews Scraper ($0.25–$0.35/1K). Extract up to 10,000 reviews per business from Place URLs (/maps/place/...), Search Queries, or Place IDs (ChIJ...).
- Pricing:
$0.00035 / item(Pay-Per-Event — $0.00035 review scraped (volume tiers from $0.00025)) - Cloud Console: https://apify.com/unitbytes/google-maps-reviews-scraper?fpr=939u3w&fp_sid=gh_gmaps
- Full Documentation & Schema: https://unitbytes.com/actors/google-maps-reviews-scraper/
- n8n Workflow File:
n8n/google-maps-reviews-scraper-n8n-workflow.json - Engineering Playbook: How to Scrape All 10,000 Google Maps Reviews per Business in 2026 ($0.25/1K vs. The 5-Review API Cap)
- Dual-Mode Extraction: Scrape up to 10,000 reviews per Business Place URL or Search Query (/maps/place/...) OR verify specific individual review share links (/maps/reviews/data=..., maps.app.goo.gl/..., /maps/contrib/.../place/...)...
- 10x Faster & Cheaper Than Browser Scrapers: Extracts 1,000+ Place reviews in ~10 seconds and audits 50–100 direct review links per minute on the lightweight 256MB memory tier with Pay-Per-Event billing ($0.00 charged on unsupported links or empty...
- Instant Takedown & Deletion Proof: Automatically confirms when a disputed review has been deleted by the author or removed by Google, while preserving the business name, address, and Place CID so ORM agencies have timestamped proof for client...
- Post-Publication Edit Detection: Compares creation vs. modification timestamps to flag when a customer silently changes their star rating or edits their complaint text (review_modified_timestamp).
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run_input = {
"reviewsToCheck": [
"https://www.google.com/maps/place/Katz's+Delicatessen/@40.722233,-73.987429,17z/"
],
"reviewsSort": "newest",
"language": "en",
"region": "us",
"proxyConfiguration": {
"useApifyProxy": True
}
}
run = client.actor("unitbytes/google-maps-reviews-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("reviewer_name"), item.get("business_name"), item.get("review_date")){
"input_url": "https://maps.app.goo.gl/wSLNNUnwRAwg1T4W9",
"resolved_url": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQ...",
"status": "ACTIVE",
"is_active": true,
"is_removed": false,
"review_id": "Ci9DQUlRQUNvZENodHljRjlvT2tWaWExOUlkRFIwWVhFemJFa3pTekZVTlVjeGNHYxAB",
"place_id": "0x0:0x84e51f23e8c0a75c",
"place_cid": "ChIJ2_VLfRdawokRXKfA6CMf5YQ",
"review_url": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQ...",
"review_report_url": "https://www.google.com/local/content/rap/report?postId=Ci9DQUlRQ...",
"is_edited": false,
"review_modified_timestamp": null,
"reviewer_name": "RoRo",
"reviewer_id": "100000000000000000001",
"reviewer_url": "https://www.google.com/maps/contrib/100000000000000000001",
"reviewer_avatar_url": "https://lh3.googleusercontent.com/a-/...",
"reviewer_number_of_reviews": 3,
"review_stars": 1,
"review_text": "I visited this location during my first trip to New York...",
"review_text_original": "I visited this location during my first trip to New York...",
"review_photos": [
"https://lh3.googleusercontent.com/grass-cs/ACvplmOY0OUAUEn8J7yYHd1cCpWZ..."
],
"review_photos_count": 1,
"review_timestamp": "2024-03-29T16:56:56.125874+00:00",
"review_date": "6 months ago",
"review_language": "en",
"business_name": "McDonald's",
"business_address": "160 Broadway, New York, NY 10038, United States",
"business_place_url": "https://www.google.com/maps/place/?q=place_id:ChIJ2_VLfRdawokRXKfA6CMf5YQ",
"business_categories": [
"Fast food restaurant",
"Coffee shop",
"Breakfast restaurant"
],
"business_primary_category": "Fast food restaurant",
"business_city": "New York",
"business_country": "United States",
"business_country_code": "US",
"business_latitude": 40.7094789,
"business_longitude": -74.0100364,
"business_timezone": "America/New_York",
"business_cover_image_url": "https://lh3.googleusercontent.com/grass-cs/ACvplmMYk...",
"has_owner_reply": true,
"owner_reply": "Thank you for bringing this to our attention. We have addressed this with our local team.",
"owner_reply_date": "5 months ago",
"owner_reply_timestamp": "2024-04-02T14:22:10.000000+00:00",
"owner_reply_language": "en",
"text_snippet": "1 stars: I visited this location during my first trip to New York...",
"error": null,
"check_timestamp": "2026-10-01T21:08:28.579696+00:00"
}Q: How do I check if a specific Google review was deleted or removed? On Google Maps, click the Three Dots (⋮) → Share review → Copy link on any review you want to track, and paste that link (maps.app.goo.gl/... or /maps/reviews/data=...) into reviewsToCheck.
Q: Can I also scrape all reviews from a Google Maps Business Place URL or Search Query? Yes! Simply paste any Google Maps business link (https://www.google.com/maps/place/...), Place ID (ChIJ...), or Search Query (e.g. "Katz's Delicatessen", "Juhu") into reviewsToCheck and set maxReviewsPerPlace (up to 10,000 reviews per place), reviewsSort...
Q: What is review_report_url and how does it help ORM agencies? Every active review extracted by this Actor includes a pre-built review_report_url (https://www.google.com/local/content/rap/report?postId=...).
Q: When a review is deleted (status: "REMOVED"), can I still see which business it belonged to? Yes! Even after Google deletes the review text and author profile from public view, this Actor extracts and preserves the underlying business_name, business_address, place_cid, business_city, and business_categories.
🚀 Google Maps Review Monitor & Change Tracker (Alerts & ORM) (unitbytes/google-maps-reviews-tracker)
Monitor Google Maps businesses for NEW, REMOVED, EDITED, or UNANSWERED reviews. Diff Place URLs across runs, sort 1-star complaints first, filter by keyword, audit owner reply SLAs (response_time_hours), flag burner accounts, and generate 1-click Google dispute...
- Pricing:
$0.0015 / item(Pay-Per-Event — $0.0015 result (volume tiers from $0.0012)) - Cloud Console: https://apify.com/unitbytes/google-maps-reviews-tracker?fpr=939u3w&fp_sid=gh_gmaps
- Full Documentation & Schema: https://unitbytes.com/actors/google-maps-reviews-tracker/
- n8n Workflow File:
n8n/google-maps-reviews-tracker-n8n-workflow.json - Engineering Playbook: Google Maps Review Monitor & Change Tracker Guide (2026): Track New, Removed, Edited & Unanswered Reviews
- Stateful Cross-Run Change Detection (trackChanges): Persists a baseline per business in Apify Named Key-Value Store (google-maps-reviews-tracker-state) across scheduled runs and tags every review with change_type: NEW, REMOVED, RATING_CHANGED, TEXT_EDITED, OWNER_REPLIED, UNCHANGED, or BASELINE.
- Auto-Detect Deleted Reviews & Recover Context from Place URLs: When a previously tracked review disappears from a Business Place URL, the Tracker automatically pings its saved permalink to confirm deletion (status: REMOVED) and restores reviewer_name, previous_stars, and previous_text from the baseline.
- 100% Server-Side Sorting & Keyword Filtering: Executes reviewsSort (newest, lowest_rating, highest_rating, most_relevant) and reviewKeyword directly on Google servers so you can pull 1-star complaints first or filter by topic with zero wasted credits.
- Owner Reply SLA, Burner Detection & 1-Click Report Links: Automatically calculates response_time_hours and unanswered_hours, flags suspicious low-history 1-2 star attacks (is_burner_suspect & triage_flags), and generates a 1-click Google policy violation link (review_report_url) on every review.
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run_input = {
"reviewsToCheck": [
"https://www.google.com/maps/place/Katz's+Delicatessen/@40.722233,-73.987429,17z/"
],
"trackChanges": True,
"verifyDisappearedReviews": True,
"reviewsSort": "newest",
"language": "en",
"region": "us",
"proxyConfiguration": {
"useApifyProxy": True
}
}
run = client.actor("unitbytes/google-maps-reviews-tracker").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("reviewer_name"), item.get("business_name"), item.get("review_date")){
"input_url": "https://maps.app.goo.gl/wSLNNUnwRAwg1T4W9",
"resolved_url": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQ...",
"status": "ACTIVE",
"change_type": "NEW",
"previous_stars": null,
"stars_delta": null,
"previous_text": null,
"response_time_hours": 93.43,
"unanswered_hours": null,
"is_burner_suspect": false,
"triage_flags": [
"NEW_REVIEW"
],
"is_active": true,
"is_removed": false,
"review_id": "Ci9DQUlRQUNvZENodHljRjlvT2tWaWExOUlkRFIwWVhFemJFa3pTekZVTlVjeGNHYxAB",
"place_id": "0x0:0x84e51f23e8c0a75c",
"place_cid": "ChIJ2_VLfRdawokRXKfA6CMf5YQ",
"review_url": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQ...",
"review_report_url": "https://www.google.com/local/content/rap/report?postId=Ci9DQUlRQ...",
"is_edited": false,
"review_modified_timestamp": null,
"reviewer_name": "RoRo",
"reviewer_id": "100000000000000000001",
"reviewer_url": "https://www.google.com/maps/contrib/100000000000000000001",
"reviewer_avatar_url": "https://lh3.googleusercontent.com/a-/...",
"reviewer_number_of_reviews": 3,
"review_stars": 1,
"review_text": "I visited this location during my first trip to New York...",
"review_text_original": "I visited this location during my first trip to New York...",
"review_photos": [
"https://lh3.googleusercontent.com/grass-cs/ACvplmOY0OUAUEn8J7yYHd1cCpWZ..."
],
"review_photos_count": 1,
"review_timestamp": "2024-03-29T16:56:56.125874+00:00",
"review_date": "6 months ago",
"review_language": "en",
"business_name": "McDonald's",
"business_address": "160 Broadway, New York, NY 10038, United States",
"business_place_url": "https://www.google.com/maps/place/?q=place_id:ChIJ2_VLfRdawokRXKfA6CMf5YQ",
"business_categories": [
"Fast food restaurant",
"Coffee shop",
"Breakfast restaurant"
],
"business_primary_category": "Fast food restaurant",
"business_city": "New York",
"business_country": "United States",
"business_country_code": "US",
"business_latitude": 40.7094789,
"business_longitude": -74.0100364,
"business_timezone": "America/New_York",
"business_cover_image_url": "https://lh3.googleusercontent.com/grass-cs/ACvplmMYk...",
"has_owner_reply": true,
"owner_reply": "Thank you for bringing this to our attention. We have addressed this with our local team.",
"owner_reply_date": "5 months ago",
"owner_reply_timestamp": "2024-04-02T14:22:10.000000+00:00",
"owner_reply_language": "en",
"text_snippet": "1 stars: I visited this location during my first trip to New York...",
"error": null,
"check_timestamp": "2026-10-01T21:08:28.579696+00:00"
}Q: How do I check if a specific Google review was deleted or removed? On Google Maps, click the Three Dots (⋮) → Share review → Copy link on any review you want to track, and paste that link (maps.app.goo.gl/... or /maps/reviews/data=...) into reviewsToCheck.
Q: Can I also scrape all reviews from a Google Maps Business Place URL or Search Query? Yes! Simply paste any Google Maps business link (https://www.google.com/maps/place/...), Place ID (ChIJ...), or Search Query (e.g. "Katz's Delicatessen", "Juhu") into reviewsToCheck and set maxReviewsPerPlace (up to 10,000 reviews per place), reviewsSort...
Q: What is review_report_url and how does it help ORM agencies? Every active review extracted by this Actor includes a pre-built review_report_url (https://www.google.com/local/content/rap/report?postId=...).
Q: When a review is deleted (status: "REMOVED"), can I still see which business it belonged to? Yes! Even after Google deletes the review text and author profile from public view, this Actor extracts and preserves the underlying business_name, business_address, place_cid, business_city, and business_categories.
🚀 Google Maps Contributor Reviews Scraper (Local Guides) (unitbytes/google-maps-contributor-scraper)
Scrape Google Maps contributor reviews, reviewer profiles, and Local Guide histories in <2s. Paste any Google Maps business place URL, search query, review link, or contributor URL to extract all reviews, reviewer ratings, levels, photos, owner replies & fake...
- Pricing:
$0.002 / profile(Pay-Per-Event — $0.002 contributor profile, $0.001 extracted review (volume tiers from $0.0008)) - Cloud Console: https://apify.com/unitbytes/google-maps-contributor-scraper?fpr=939u3w&fp_sid=gh_gmaps
- Full Documentation & Schema: https://unitbytes.com/actors/google-maps-contributor-scraper/
- n8n Workflow File:
n8n/google-maps-contributor-scraper-n8n-workflow.json - Engineering Playbook: How to Audit Fake 1-Star Google Reviews, Local Guide Contributors & Track Takedowns in 2026
- Deleted & Edited Review Auditing: Track changes across review histories to identify when critical reviews are quietly scrubbed or modified.
- Local Guide Points & Level Scoring: Extracts exact contributor level (Level 1-10), total review points, badge history, and review trust weights.
- Syndicate & Review Farm Detection: Audit reviewer historical patterns to detect coordinated 1-star attack networks or paid review rings.
- Full Review Text & Rating Distribution: Extracts star rating, detailed review paragraphs, owner response timestamps, and attached review photo links.
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run_input = {
"contributors": ["https://www.google.com/maps/contrib/100000000000000000002"],
"maxReviews": 50,
"maxReviewersPerPlace": 20,
"proxyConfiguration": {
"useApifyProxy": True,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}
run = client.actor("unitbytes/google-maps-contributor-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("contributor_name"), item.get("place_name"), item.get("place_price_range")){
"contributor_name": "Reema Mulchandani",
"contributor_id": "100000000000000000002",
"contributor_url": "https://www.google.com/maps/contrib/100000000000000000002/reviews",
"avatar_url": "https://lh3.googleusercontent.com/a-/ALV-UjXc8pSarhgq2xG0mE6F3j...",
"is_local_guide": true,
"local_guide_level": 7,
"local_guide_points": 8119,
"points_to_next_level": 15000,
"points_away_from_next_level": "6,881 points to Level 8",
"current_level_min_points": 5000,
"next_level_target_points": 15000,
"badge_url": "https://maps.gstatic.com/mapfiles/localguides/badges/18px/level7.png",
"next_level_badge_url": "https://maps.gstatic.com/mapfiles/localguides/badges/18px/level8.png",
"total_reviews_count": 113,
"total_ratings_count": 11,
"total_photos_count": 878,
"total_videos_count": 21,
"total_captions_count": 45,
"total_answers_count": 557,
"total_edits_count": 3,
"total_places_added_count": 1,
"total_roads_added_count": 0,
"total_qa_count": 8,
"total_reported_incorrect_count": 0,
"is_private": false,
"status": "ACTIVE",
"review_id": "Ci9DQUlRQUNvZENodHljRjlvT2psaGVHNUNWMkpPYlRWVFdqZ3RMVXRmWTJOMk0yYxAB",
"place_name": "Juhu Cafe",
"place_category": "Cafe",
"place_category_slug": "cafe",
"place_address": "517 Union Blvd Unit B, Totowa, NJ 07512",
"place_street_address": "517 Union Blvd Unit B",
"place_id": "ChIJv8t4KBT_wokRCf-EIyWAT54",
"place_url": "https://www.google.com/maps/place//data=!4m2!3m1!1s0x89c2ff142878cbbf:0x9e4f80252384ff09",
"place_cover_photo_url": "https://lh3.googleusercontent.com/p/AF1QipN38Xy54W_...",
"place_city": "Totowa",
"place_country": "United States",
"place_country_code": "US",
"place_timezone": "America/New_York",
"place_kgmid": "/g/11bwh5xyjm",
"place_price_range": "$10–20",
"latitude": 40.901379,
"longitude": -74.216956,
"stars": 5,
"review_date": "2 weeks ago",
"review_timestamp": 1788632301325,
"review_datetime_utc": "2026-09-05T18:18:21+00:00",
"is_review_edited": false,
"review_created_timestamp": 1788632301325,
"review_created_datetime_utc": "2026-09-05T18:18:21+00:00",
"review_updated_timestamp": 1788632301325,
"review_updated_datetime_utc": "2026-09-05T18:18:21+00:00",
"review_text": "Juhu Cafe is a wonderful new addition to the area. The beachy atmosphere is bright and welcoming...",
"review_language": "en",
"review_permalink": "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQUNvZENodHljRjlvT2psaGVHNUNWMkpPYlRWVFdqZ3RMVXRmWTJOMk0yYxAB!2m1!1s0x0:0x9e4f80252384ff09",
"review_report_url": "https://www.google.com/local/content/rap/report?postId=Ci9DQUlRQUNvZENodHljRjlvT2psaGVHNUNWMkpPYlRWVFdqZ3RMVXRmWTJOMk0yYxAB",
"contrib_place_url": "https://www.google.com/maps/contrib/100000000000000000002/place/ChIJv8t4KBT_wokRCf-EIyWAT54",
"photos": [
"https://lh3.googleusercontent.com/grass-cs/ACvplmNaKbdVwMT1TibHnx1u8sfePPuH8hInF7w7ROzAMp5U..."
],
"dining_mode": "Dine in",
"meal_type": "Brunch",
"spend_per_person": "$50–60",
"food_rating": 5,
"service_rating": 5,
"atmosphere_rating": 5,
"wait_time": "No wait",
"noise_level": "Quiet",
"seating_type": "Indoor dining",
"reservation_policy": "No reservation needed",
"group_size": "2 people",
"vegetarian_recommended": true,
"review_aspects": {
"mode": "Dine in",
"meal_type": "Brunch",
"price_range": "$50–60",
"food_aspect": 5,
"service_aspect": 5,
"atmosphere_aspect": 5,
"wait_time": "No wait",
"noise_level": "Quiet",
"seating_type": "Indoor dining",
"reservation_policy": "No reservation needed",
"group_size": "2 people",
"vegetarian_recommended": true
},
"has_owner_reply": true,
"owner_reply": "Thanks so much for such a thoughtful review, Reema! We’re so glad you enjoyed your visit.",
"owner_reply_date": "2 weeks ago",
"owner_reply_timestamp": 1788640170000,
"owner_reply_datetime_utc": "2026-09-05T20:29:30+00:00",
"owner_reply_language": "en",
"error": null,
"timestamp": "2026-09-25T11:00:00.000Z"
}Q: Do I need programming or coding skills to use this Google Maps Contributor Scraper? Not at all! This tool is designed for non-technical users, business owners, agency marketers, and data teams alike. You can run everything directly in the Apify Console and download ready-to-open Excel (.xlsx) or CSV files with a single click.
Q: How many reviews can I extract per Google Maps Contributor profile? The Actor extracts up to your configured maxReviews (0 to 200, prefilled at 50 in Console; set to 200 for full historical review exports) or the total number of public reviews available on the contributor profile in a single fast call (200 is Google's maximum...
Q: Can I enter a Business Search Query, Business Place URL (/maps/place/...), or Review Link directly? Yes! You don't need to know how to find a Contributor URL. If you type a plain-text Business Search Query (e.g. "Katz's Delicatessen New York"), paste a Google Maps Business Place URL (/maps/place/...), or pass a Place ID (place_id:ChIJ...), the Actor...
Q: Does it extract photos uploaded by contributors? Yes! Every review object in the dataset includes the full photos: [...] list of high-resolution image URLs attached to that specific review, plus the contributor's avatar and total lifetime photos count (total_photos_count).
Download full-resolution (=s0) Google Maps photos & MP4 videos from any business place, restaurant menu, food, vibe, street view, or Google Maps Contributor & Local Guide profile.
- Pricing:
$0.0015 / item(Pay-Per-Event — $0.0015 photo, $0.002 profile scraped (volume tiers from $0.001)) - Cloud Console: https://apify.com/unitbytes/google-maps-photos-scraper?fpr=939u3w&fp_sid=gh_gmaps
- Full Documentation & Schema: https://unitbytes.com/actors/google-maps-photos-scraper/
- n8n Workflow File:
n8n/google-maps-photos-scraper-n8n-workflow.json - Engineering Playbook: Google Places Photo API Pricing & 10-Photo Limit in 2026 ($7.00/1K vs. $0.50/1K Alternatives)
- Uncompressed =s0 4K Photos & Playable MP4 Videos: Automatically upgrades Google Maps thumbnails to =s0 (4000x3000+ px) and extracts playable MP4 video streams (videoUrl, videoDurationMs), bypassing the official Places Photo API 1600px cap and $7/1,000 request fee.
- All 9 Native Gallery Tabs & Multi-Place Search: Filter upstream by any Google Maps gallery tab ('menu', 'food_and_drink', 'vibe', 'exterior', 'by_owner', 'videos', 'street_view', 'rooms', 'amenities') or custom dish keyword, and discover up to 20 places per search query (maxPlacesPerSearch).
- Verified Owner Attribution & Local Guide Reach: Distinguishes verified business owner uploads (uploadedByOwner, photoSource) from customer photos, and audits any contributor profile for Local Guide level (1-10) and cumulative photo views (10M-50M+ views).
- Venue, Per-Photo Camera GPS & Compass Heading: Every record includes placeName, placeCategory, placeRating, placeId (ChIJ...), placeCid, venue coordinates, plus per-photo camera GPS (photoLatitude, photoLongitude) and compass bearing (heading 0-360°).
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run_input = {
"placeUrls": [
"https://www.google.com/maps/place/Katz's+Delicatessen/@40.722233,-73.987429,17z/"
],
"proxyConfiguration": {
"useApifyProxy": True,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}
run = client.actor("unitbytes/google-maps-photos-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("name"), item.get("placeName"), item.get("placeRating")){
"targetType": "contributor",
"name": "Reema Mulchandani",
"userId": "100000000000000000002",
"contributorUrl": "https://www.google.com/maps/contrib/100000000000000000002/photos",
"isLocalGuide": true,
"localGuideLevel": 7,
"localGuidePoints": 8119,
"totalPhotosCount": 878,
"totalPhotoViews": 16439131,
"photoId": "CIABIhA_6alxtNVk22yu_5rt7M6b",
"photoCategory": "food_and_drink",
"mediaType": "photo",
"uploadedByOwner": false,
"photoSource": "visitor",
"caption": "Side of red chili sauce",
"photoUrlHighRes": "https://lh3.googleusercontent.com/gps-cs/AH1DqX...=s0",
"photoUrl": "https://lh3.googleusercontent.com/gps-cs/AH1DqX...=s0",
"thumbnailUrl": "https://lh3.googleusercontent.com/gps-cs/AH1DqX...=w400-h400-k-no",
"imageWidth": 4032,
"imageHeight": 3024,
"uploadDate": "2026-09-05",
"placeName": "Juhu",
"placeAddress": "517 Union Blvd Unit B, Totowa, NJ 07512",
"placeCategory": "Cafe",
"placeId": "ChIJv8t4KBT_wokRCf-EIyWAT54",
"placeCid": "0x89c2ff142878cbbf:0x9e4f80252384ff09",
"placeRating": 5.0,
"placeReviewsCount": 71,
"latitude": 40.901379,
"longitude": -74.216956,
"isPrivate": false,
"status": "OK",
"error": null,
"scrapedAt": "2026-10-22T18:00:00.000Z"
}Q: Can I scrape photos from any Google Maps business, restaurant, or hotel? Yes! Paste any Google Maps place URL, place_id: link (https://www.google.com/maps/place/?q=place_id:ChIJCar0f49ZwokR6ozLV-dHNTE), share shortlink (maps.app.goo.gl/...), or plain-text search query (such as "Katz's Delicatessen New York" or "Bellagio Hotel Las...
Q: How do I scrape only Menu, Food & Drink, Vibe, or Hotel Room photos? Set the Photo Category or Keyword Filter (category) input field to any native Google Maps gallery tab—"menu", "food_and_drink", "vibe", "exterior", "by_owner", "videos", "street_view", "rooms", "amenities"—or pass any custom dish/topic keyword like "pastrami"...
Q: Can I download playable MP4 videos or 360° Street View panoramas from a business? Yes! Set category: "videos" to extract playable MP4 video streams (videoUrl in 720p/360p) and video duration (videoDurationMs, mediaType: "video"), or set category: "street_view" to extract 360° panoramas along with per-photo camera GPS (photoLatitude...
Q: How do I filter for Verified Business Owner uploads (by_owner) vs. customer photos? Set category: "by_owner" to extract exclusively photos uploaded by the verified business owner via Google Business Profile. In addition, every extracted record across all tabs includes uploadedByOwner (true/false) and photoSource ("owner", "visitor", or...
Fastest Naver Map (네이버 지도) & Naver Place (네이버 플레이스) scraper ($2.80/1K). Extract South Korean local business leads, phone numbers, GPS coordinates, opening hours, full menus with KRW prices, visitor reviews, blog reviews & HD photos. MCP & AI ready.
- Pricing:
$0.0035 / item(Pay-Per-Event — $0.0035 place or review scraped (volume tiers from $0.0028)) - Cloud Console: https://apify.com/unitbytes/naver-place-scraper?fpr=939u3w&fp_sid=gh_gmaps
- Full Documentation & Schema: https://unitbytes.com/actors/naver-place-scraper/
- n8n Workflow File:
n8n/naver-place-scraper-n8n-workflow.json
- All-in-One Transparent Pricing: Pay a single predictable per-result rate (result-scraped) with full place details, menus, 7-day business hours, sentiment analytics, and embedded visitor & blog reviews included at no extra add-on fee.
- Verified Visitor Reviews & Naver Blog Reviews: Collects receipt-verified visitor reviews (방문자 리뷰), server-side photo-only review filtering (onlyPhotoReviews), customer sentiment keyword rankings (e.g., "음식이 맛있어요", "친절해요"), owner replies, and linked...
- Full Menus, KRW Prices & POS Insights: Captures every menu item with KRW price, menu description, recommended badges, high-resolution menu photos, popular dishes, average customer spend, and average stay time.
- $0.00 for Missing Targets or Empty Searches: Non-existent Place IDs, zero-result queries, and input validation errors are never billed.
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run_input = {
"queries": ["강남 맛집"]
}
run = client.actor("unitbytes/naver-place-scraper").call(run_input=run_input)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("name"), item.get("searchQuery"), item.get("rating")){
"placeId": "2025884279",
"name": "대물섬 강남점",
"businessCategory": "restaurant",
"category": "한식",
"categoryCode": "220053",
"phone": "0507-1451-3697",
"virtualPhone": "0507-1451-3697",
"roadAddress": "서울 강남구 언주로148길 14 1층 103~106호",
"address": "서울 강남구 논현동 98-12",
"commonAddress": "서울 강남구 논현동",
"fullAddress": "서울 강남구 언주로148길 14 1층 103~106호",
"postalCode": "09680108",
"latitude": 37.5206335,
"longitude": 127.0361667,
"distance": "2.6km",
"directions": "강남구청역 3-1번 출구로 나오셔서 보이는 올리브영 방향으로 쭉 직진하시다가 커피빈 골목에서 왼쪽으로 꺾어서 200m정도 오시면 왼쪽에 있습니다.",
"nearestSubway": "강남구청역 7호선",
"parkingInfo": "2시간 4000원 (발렛파킹 가능)",
"businessStatus": "영업 중",
"businessHoursText": "02:00에 영업 종료",
"businessHours": [
{
"day": "월",
"start": "11:00",
"end": "02:00"
}
],
"rating": 4.97,
"visitorReviewCount": 177,
"blogCafeReviewCount": 37,
"bookingReviewCount": 0,
"imageReviewCount": 143,
"popularMenusText": "소금김밥, 대물 숙성회 정식(광어), 1% 대광어 숙성회",
"menuCount": 6,
"menus": [
{
"name": "1% 대광어 숙성회",
"priceText": "56,000원",
"priceKrw": 56000,
"description": "중 56000 / 대 78000",
"isRecommended": true,
"imageUrl": "https://ldb-phinf.pstatic.net/20260830_85/1788068876946WkcM7_JPEG/menu.jpg"
}
],
"topVotedKeywords": [
{
"code": "food_good",
"keyword": "음식이 맛있어요",
"count": 165
},
{
"code": "fresh",
"keyword": "재료가 신선해요",
"count": 121
}
],
"conveniences": [
"포장",
"단체 이용 가능",
"예약"
],
"paymentMethods": [
"간편결제"
],
"hasBooking": true,
"homepageUrl": "https://map.naver.com/p/entry/place/2025884279",
"instagramUrl": null,
"allLinks": [
"https://map.naver.com/p/entry/place/2025884279"
],
"microReview": "한 점 한 점 정성 가득한 숙성회",
"mainImage": "https://ldb-phinf.pstatic.net/20260831_172/17881344168901EW1Q_JPEG/cover.jpg",
"imageCount": 57,
"url": "https://map.naver.com/p/entry/place/2025884279",
"mapUrl": "https://m.place.naver.com/restaurant/2025884279/home",
"searchQuery": "강남 맛집",
"detailLevel": "full",
"language": "ko",
"scrapedAt": "2026-10-24T16:30:00.000000+00:00"
}Q: Do I need my own proxies or account login for naver-place-scraper? No. UnitBytes manages residential proxy rotation and automated request orchestration so you never need personal accounts or proxies.
Q: What output formats are supported? All data can be downloaded in JSON, CSV, or Excel formats, or consumed directly via the Apify REST API and webhooks.
Q: How does pricing work? You only pay for successful records extracted under Apify Pay-Per-Event pricing, with zero monthly minimums or idle compute costs.
Q: Can this actor be integrated into automated workflows? Yes. You can trigger runs via Apify API, Python/JavaScript clients, Make, Zapier, or scheduled cron workflows.
git clone https://github.com/unitbytes/Google-Maps-Reviews-Scraper-API.git
cd Google-Maps-Reviews-Scraper-API
pip install -r requirements.txt
export APIFY_API_TOKEN="your_apify_api_token"
python examples/run_google_maps_leads_scraper.py- Open any
.jsonfile inside then8n/folder (or copy in 1 click from unitbytes.com/n8n / n8n.io/creators/unitbytes). - Press
Ctrl+V/Cmd+Vdirectly onto your n8n workflow canvas. - Paste your Apify API Token into Node
1. Set Apify Token & Inputand click Test Workflow.
This repository includes a ready-to-use Model Context Protocol configuration at .cursor/mcp.json pointing to https://mcp.apify.com with this suite's UnitBytes actors pre-registered. Open this folder in Cursor or Windsurf to let your AI agent run live extractions and inspect schemas automatically.
Don't want to manage API tokens or scripts? UnitBytes Data Delivery provides ready-to-use CSV, Excel (.xlsx), Google Sheets, or Webhook feeds tailored to your exact target keywords, cities, or categories.
- 🌐 Request a Sample Dataset: https://unitbytes.com/#enterprise-intake
- 📧 Direct Engineering Contact: contact@unitbytes.com
- ⚡ Explore All 38 Scrapers: https://unitbytes.com/actors/
- 📚 Engineering Playbooks & Guides: https://unitbytes.com/blog/
- 🔗 Official n8n Creator Profile: https://n8n.io/creators/unitbytes/