# Google Maps Reviews Scraper | $0.25/1K 💰 All 10K Reviews (`unitbytes/google-maps-reviews-scraper`) Actor

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...). Sort by Newest or Lowest Rating (1-star first), filter by keyword, and export 41 flat fields to Excel, CSV, or JSON.

- **URL**: https://apify.com/unitbytes/google-maps-reviews-scraper.md
- **Developed by:** [UnitBytes | Enterprise Web Data](https://apify.com/unitbytes) (community)
- **Categories:** SEO tools, Lead generation, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.25 / 1,000 review scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

<p align="center">
  <a href="https://apify.com/unitbytes/google-maps-reviews-scraper?fpr=939u3w&fp_sid=readme" target="_blank">
    <img src="https://raw.githubusercontent.com/unitbytes/.github/main/assets/banners/unitbytes-google-maps-reviews-tracker-checker-banner.jpg" alt="Google Maps Reviews Scraper & Deleted Review Removal Checker by UnitBytes" width="100%" />
  </a>
</p>

### 🔍 Google Maps Reviews Scraper ($0.25–$0.35 / 1K Reviews)

**Extract up to 10,000 Google Maps reviews per business from any Place URL (`/maps/place/...`), Search Query (e.g. `"Katz's Delicatessen"`, `"Juhu"`), or Place ID (`ChIJ...`) in seconds.**

Sort by **Newest**, **Lowest Rating (1-star first)**, **Highest Rating**, or **Most Relevant**, filter server-side by **Keyword**, and export **41 structured fields** (including reviewer profile, Local Guide status, full text & English translation, review photos, owner replies, GPS coordinates, direct review permalink, and 1-click Google dispute URL) directly to **Excel (.xlsx), CSV, or JSON.** Also supports verifying individual review share links (`maps.app.goo.gl/...` and `/maps/reviews/data=...`) to check if specific reviews are `ACTIVE`, `REMOVED`, or `is_edited`.

<p align="center">
  <a href="https://console.apify.com/actors/fPCCsergoMBWObLKz?addFromActorId=fPCCsergoMBWObLKz" target="_blank">
    <img src="https://raw.githubusercontent.com/unitbytes/.github/main/assets/try-it-for-free.svg" width="260" height="52" alt="Try it Free Now">
  </a>
  <br>
  <sub>⚡ <b>Instant Test:</b> Paste any Google Maps Place URL, Search Query, or Place ID • 1,000+ reviews in ~10 seconds</sub>
  <br><br>
  <span style="background:#ECFDF5;border:1px solid #10B981;color:#065F46;padding:6px 14px;border-radius:20px;font-size:13px;font-weight:600">
    🎁 <b>Free Trial Included:</b> Test free with your Apify starter credits — no credit card required!
  </span>
</p>

***

<table>
  <tr>
    <td colspan="4" style="padding:10px 14px;background:#0284C7;color:#FFFFFF;font-size:13px;font-weight:700;border-radius:6px 6px 0 0">
      ⚡ UnitBytes · Google Maps & Local Business Intelligence Ecosystem
    </td>
  </tr>
  <tr>
    <td style="padding:10px 12px;border:1px solid #E2E8F0;background:#FFF4ED;vertical-align:top;width:25%">
      <span style="white-space:nowrap">🔍 <b><a href="https://apify.com/unitbytes/google-maps-reviews-scraper?fpr=939u3w&fp_sid=ecosystem" style="color:#C2410C;text-decoration:none;font-size:13px">Reviews Scraper ($0.25/1K)</a></b></span><br><span style="color:#EA580C;font-size:11px;font-weight:700">📍 You are here</span><br>
      <span style="color:#64748B;font-size:11px">Up to 10,000 reviews/place & keyword filter</span>
    </td>
    <td style="padding:10px 12px;border:1px solid #E2E8F0;background:#FAFAFA;vertical-align:top;width:25%">
      <span style="white-space:nowrap">🛡️ <b><a href="https://apify.com/unitbytes/google-maps-reviews-tracker?fpr=939u3w&fp_sid=ecosystem" style="color:#0F172A;text-decoration:none;font-size:13px">Review Takedown Tracker</a></b></span><br><span style="color:#2563EB;font-size:11px;font-weight:600">ORM & Removal Proof</span><br>
      <span style="color:#64748B;font-size:11px">Check ACTIVE/REMOVED & 1-click dispute links</span>
    </td>
    <td style="padding:10px 12px;border:1px solid #E2E8F0;background:#FAFAFA;vertical-align:top;width:25%">
      <span style="white-space:nowrap">🗺️ <b><a href="https://apify.com/unitbytes/google-maps-contributor-scraper?fpr=939u3w&fp_sid=ecosystem" style="color:#0F172A;text-decoration:none;font-size:13px">Contributor Profiles</a></b></span><br><span style="color:#2563EB;font-size:11px;font-weight:600">Local Guide Audits</span><br>
      <span style="color:#64748B;font-size:11px">Full review history & levels</span>
    </td>
    <td style="padding:10px 12px;border:1px solid #E2E8F0;background:#FAFAFA;vertical-align:top;width:25%">
      <span style="white-space:nowrap">📸 <b><a href="https://apify.com/unitbytes/google-maps-photos-scraper?fpr=939u3w&fp_sid=ecosystem" style="color:#0F172A;text-decoration:none;font-size:13px">Photos, Menus & Videos</a></b></span><br><span style="color:#2563EB;font-size:11px;font-weight:600">Places & Local Guides</span><br>
      <span style="color:#64748B;font-size:11px">Original =s0 images, menus, MP4s & views</span>
    </td>
  </tr>
</table>

***

#### 🚀 How to Use (3 Quick Steps)

1. **[Enter your targets](https://apify.com/unitbytes/google-maps-reviews-scraper)** into `reviewsToCheck`:
   - **Place URLs, Search Queries, or Place IDs:** Paste any Google Maps Business link (`/maps/place/...`), Search Query (e.g. `"Katz's Delicatessen"`, `"Juhu"`), or Place ID (`ChIJ...`) to extract up to **10,000 reviews per business**.
   - **Sort & Filter (Optional):** Choose `reviewsSort` (`newest`, `lowest_rating`, `highest_rating`, or `most_relevant`) and optional `reviewKeyword` (e.g. `"service"`, `"wait time"`).
2. **Click Start** (extracts **1,000+ reviews in ~10 seconds** with zero startup lag).
3. **Download** your ready-to-use **Excel (.xlsx)**, **CSV**, or **JSON** dataset in 1 click!

***

> ⭐ **Loving this Scraper?**\
> If this tool saved you hours of manual checking, please support us with a **[5-Star Rating on the Apify Store](https://apify.com/unitbytes/google-maps-reviews-scraper)**! It directly helps us keep this tool actively maintained and updated.
>
> 💬 **Need Help, Custom Enhancements, Bug Reports, or Bulk ORM Setup?**\
> Have a question, need custom fields, or encountered an issue? Email us directly at **`contact@unitbytes.com`** or open a ticket in the **[Apify Issues Tab](https://apify.com/unitbytes/google-maps-reviews-scraper/issues)** — we respond fast!

***

### ✨ Key Benefits & Superpowers

- 🔍 **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/...`) in the exact same run.
- 🗑️ **Instant Takedown & Deletion Proof (`is_removed: true`):** 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 invoicing.
- 🚨 **1-Click Google Policy Dispute Links (`review_report_url`):** Generates direct Google policy violation report links pre-filled with the review's internal `postId`—letting reputation teams flag defamatory reviews in 1 click instead of hunting through thousands of reviews manually.
- ✏️ **Post-Publication Edit Detection (`is_edited`):** Compares creation vs. modification timestamps to flag when a customer silently changes their star rating or edits their complaint text (`review_modified_timestamp`).
- 💬 **Owner Reply & SLA Auditing (`has_owner_reply`):** Extracts the business owner's full response text, language, and exact UTC reply timestamp (`owner_reply_timestamp`) to audit franchise manager response times.
- 📊 **100% Spreadsheet & VLOOKUP Ready:** Every row preserves your exact original `input_url` alongside flat columns—open directly in **Microsoft Excel, Google Sheets, or CSV** with zero nested `[object Object]` cells.
- ⚡ **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 results).

***

### 🥊 Why Choose This Scraper? (Feature Comparison)

| Capability | 🔍 **This Actor** | Generic Place Scrapers | Manual VA Checking |
| :--- | :---: | :---: | :---: |
| **Scrape Business Place URLs (`/maps/place/...`)** | ✅ **Up to 10,000 reviews/place** | ✅ Yes | ❌ Slow copy-paste |
| **Check Specific Review Links (`/maps/reviews/...`)** | ✅ **Yes (direct verification)** | ❌ **No (cannot check 1 review)** | ⚠️ 1 link per minute |
| **Detect Deleted / Removed Reviews** | ✅ **`status: "REMOVED"` + Business Info** | ❌ **No way to tell** | ⚠️ Manual browser check |
| **1-Click Google Takedown Link (`review_report_url`)** | ✅ **Auto-generated for every review** | ❌ Missing | ❌ Must scroll & find review |
| **Detect Edited Reviews (`is_edited`)** | ✅ **Exact modified UTC timestamp** | ❌ Missing | ❌ Impossible to spot |
| **Resolve Mobile Share Links (`maps.app.goo.gl`)** | ✅ **Automatic resolution** | ❌ Fails on shortlinks | ✅ Manual click |
| **Speed** | ⚡ **50–100 reviews / minute** | 🐢 5–15 reviews / minute | 🐌 30–50 reviews / hour |
| **False-Alarm Protection on Errors** | ✅ **Returns `UNKNOWN` (never false `REMOVED`)** | ❌ Crashes or misreports | ⚠️ Human error |
| **Spreadsheet & VLOOKUP Ready** | ✅ **Preserves `input_url` in Excel/CSV** | ⚠️ Nested JSON dumps | ✅ Manual entry |

***

### 🎯 6 High-Value Use Cases & Business Playbooks

#### 1. 🏢 Online Reputation Management (ORM) & Pay-on-Removal Billing Proof

- **Who Uses It:** ORM Agencies, Digital PR Consultants, Review Takedown Specialists, Local SEO Agencies.
- **The Problem:** ORM agencies charge $500–$2,500 per removed negative review on a performance basis. Account managers waste hours every morning opening hundreds of Google Maps links in spreadsheets to see which disputed reviews dropped so billing can invoice the client.
- **How This Actor Solves It:**
  - **Automated Proof of Removal:** When Google deletes a review, the Actor outputs `status: "REMOVED"` and `is_removed: true` while still returning the `business_name`, `business_address`, `place_cid`, and `check_timestamp`—giving you an indisputable audit trail for client invoicing.
  - **1-Click Takedown Queues (`review_report_url`):** Scrape a new client's `/maps/place/...` URL to pull all 1-star and 2-star reviews along with pre-built Google report URLs so your team can submit policy disputes in 1 click per row.

#### 2. 🔄 Review Edit & Customer Retraction Tracking (`is_edited`)

- **Who Uses It:** Customer Success Teams, Auto Dealerships, Medical Clinics, Hospitality & Hotel Groups.
- **The Problem:** After resolving a customer complaint, your team asks the customer to update their 1-star review. Did they upgrade it to 5 stars, delete it, or edit the text to be even harsher?
- **How This Actor Solves It:**
  - Automatically compares Google's original creation timestamp against the last-modified timestamp.
  - Outputs `is_edited: true`, the updated `review_stars` and `review_text`, and the exact ISO 8601 `review_modified_timestamp`.

#### 3. ⏱️ Multi-Location Franchise & Owner Reply SLA Auditing

- **Who Uses It:** Franchise Headquarters, Multi-Location Retail Brands, Property Management Portfolios, CX Directors.
- **The Problem:** Corporate standards require local store managers to reply to every negative review within 24–48 hours. Auditing 200+ locations manually is impossible.
- **How This Actor Solves It:**
  - Extracts `has_owner_reply`, `owner_reply`, `owner_reply_date`, and exact `owner_reply_timestamp`.
  - Easily calculate response latency (`owner_reply_timestamp - review_timestamp`) in Excel or BI dashboards to flag unanswered 1-star reviews.

#### 4. 🕵️ Fake Review & "Burner Account" Fraud Detection

- **Who Uses It:** Businesses experiencing coordinated review bombing, extortion, or competitor sabotage.
- **The Problem:** Competitors use click farms or brand-new throwaway accounts to leave 1-star attacks.
- **How This Actor Solves It:**
  - **Burner Account Spotting:** Flag suspicious reviews where `reviewer_number_of_reviews <= 1`.
  - **Serial Attacker Tracking (`reviewer_id`):** Extracts the permanent 21-digit Google Contributor ID and `reviewer_url` so you can identify if the same user is attacking multiple locations (and feed their ID directly into **[Google Maps Contributor & Local Guide Reviews Scraper](https://apify.com/unitbytes/google-maps-contributor-scraper)** to expose their lifetime review history).

#### 5. 🔗 Universal Review Link Normalizer & Mobile Shortlink Resolver

- **Who Uses It:** Developers, Data Engineers, CRM & Automation Builders.
- **The Problem:** Clients and field staff paste mobile share links (`maps.app.goo.gl/...`) into intake forms, which standard APIs cannot query or join to a business database.
- **How This Actor Solves It:**
  - Resolves any mobile shortlink or contributor review link into canonical `place_cid` (`ChIJ...`), `place_id`, `review_id`, GPS coordinates (`business_latitude`, `business_longitude`), city, country, and category.

#### 6. ⚖️ Defamation & Legal Evidence Archiving (Pre-Deletion)

- **Who Uses It:** Corporate Counsel, Defamation Attorneys, Brand Protection Teams.
- **The Problem:** If a defamatory review is deleted or edited before legal proceedings, key evidence disappears.
- **How This Actor Solves It:**
  - Captures an immutable structured record including original language text (`review_text_original`), English translation (`review_text`), `reviewer_id`, high-resolution attached photo links (`review_photos`), and microsecond creation timestamps.

***

### 🔗 Supported Input Formats

Paste any combination of these formats into `reviewsToCheck`—the Actor detects the format and routes each target automatically:

1. **Business / Place URLs (`/maps/place/...`), Search Queries, or Place IDs (`ChIJ...`) — Bulk Place Extraction**
   - Place URL: `https://www.google.com/maps/place/Katz's+Delicatessen/@40.722233,-73.987429,17z/`
   - Plain-Text Place or Location Search Query: `Katz's Delicatessen`, `JW Marriott Mumbai Juhu`, `Juhu`
   - Google Place ID / Feature ID / CID: `ChIJ6xTXncarw4kRfLnQ-2vdHd4` or `0x89c2598f7ff4aa09:0x313547e757cb8cea`
   - Google Search `#lrd=` All-Reviews Links: `https://www.google.com/search?q=McDonalds+NYC#lrd=0x89c25a177d4bf5db:0x84e51f23e8c0a75c,1,,,`
   - Business `g.page` & `writereview` Links: `https://g.page/r/CeqMy1fnRzUxEBM/review` or `https://search.google.com/local/writereview?placeid=ChIJ2_VLfRdawokRXKfA6CMf5YQ`\
     Automatically resolves the business, paginates, and extracts up to `maxReviewsPerPlace` (default `50`, up to `10,000`) unique reviews sorted by `reviewsSort` and optionally filtered by `reviewKeyword`—complete with each review's direct permalink (`review_url`) and 1-click Google dispute URL (`review_report_url`).

2. **Contributor Profile Links (`/maps/contrib/<USER_ID>` or `/maps/contrib/<USER_ID>/reviews`) — Reviewer Feed Extraction**\
   `https://www.google.com/maps/contrib/102520373756565203865/reviews`\
   Extracts up to `maxReviewsPerPlace` public reviews written by that contributor across all businesses.

3. **Direct Review Permalinks (`/maps/reviews/data=...`) — Single Review Verification**\
   `https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sCi9DQUlRQ...`\
   Verifies whether the specific review is `ACTIVE`, `REMOVED`, or `is_edited` and extracts full review and business metadata.

4. **Contributor Place Review URLs (`/maps/contrib/.../place/...`) — Single Review Verification**\
   `https://www.google.com/maps/contrib/102520373756565203865/place/ChIJ6xTXncarw4kRfLnQ-2vdHd4`\
   Verifies a specific review directly from a contributor's public place review link.

5. **Google Maps Share Shortlinks (`maps.app.goo.gl/...`) — Auto-Resolving**\
   `https://maps.app.goo.gl/wSLNNUnwRAwg1T4W9`\
   Generated via **Three Dots (⋮) → Share review → Copy link** in the Google Maps app or browser. Automatically resolves to either the specific review or business listing.

#### 🚫 Unsupported URL Formats (Fails Fast at $0.00 Cost)

To protect your credits, the Actor immediately identifies and skips non-public links at **$0.00 charge**:

- **Private Google Business Profile Merchant Dashboard Links (`business.google.com/dashboard/...` without a public Place ID):** Require private merchant login and cannot be accessed publicly.
- **Non-Google Domains or Bare Google Homepages (`google.com/` without a Place or Review identifier).**

***

### ⚙️ Input Configuration

| Parameter | Type | Required | Default | Description |
| :--- | :--- | :---: | :---: | :--- |
| **`reviewsToCheck`** | array of strings | **Yes** | *Prefilled sample* | List of Google Maps Business Place URLs (`/maps/place/...`), Plain-Text Search Queries (e.g., `"Katz's Delicatessen"`, `"JW Marriott Mumbai Juhu"`, `"Juhu"`), Google Place IDs (`ChIJ...`), Direct Review Permalinks (`/maps/reviews/data=...`), Share Shortlinks (`maps.app.goo.gl/...`), or Contributor Place Review Links (`/maps/contrib/.../place/...`). Also accepts newline/comma-separated strings or common API aliases (`reviewUrls`, `placeUrls`, `searchQueries`, `startUrls`, `urls`). |
| **`maxReviewsPerPlace`** | integer | No | `50` | Maximum number of reviews to extract when a Google Maps Business Place URL, Place ID, or Search Query is provided (`1` to `10,000`). Also accepts `maxReviews`, `maxItems`, or `limit`. |
| **`maxPlacesPerQuery`** | integer | No | `1` | Maximum number of matching businesses to extract reviews for when a search query or `/maps/search/...` URL is provided (`1` to `20`). Also accepts `maxPlacesPerSearch` or `maxPlaces`. |
| **`reviewsSort`** | string | No | `"newest"` | Sort order when scraping Business Place URLs or Search Queries:<br>• `"newest"` — **Newest / Most Recent First** (Default)<br>• `"lowest_rating"` — **Lowest Rating / Negative First (1-Star → 5-Star)** (Ideal for ORM takedown audits)<br>• `"highest_rating"` — **Highest Rating / Positive First (5-Star → 1-Star)**<br>• `"most_relevant"` — **Most Relevant** |
| **`reviewKeyword`** | string | No | `""` | Optional server-side keyword filter for Place URLs / Search Queries (e.g., `"service"`, `"room"`, `"pastrami"`, `"wait time"`). Leave empty to extract all reviews. Also accepts `keyword`, `searchKeyword`, `filterKeyword`, or `category`. |
| **`language`** | string | No | `"en"` | ISO language code (`hl`) for Google Maps interface and server-side review translation (e.g., `"en"`, `"es"`, `"fr"`, `"de"`, `"pt-BR"`, `"ar"`, `"ja"`). Also accepts `lang` or `hl`. |
| **`region`** | string | No | `"us"` | 2-letter ISO country/region code (`gl`) used to bias plain-text search queries (e.g., `"us"`, `"gb"`, `"ca"`, `"au"`, `"de"`, `"fr"`, `"ae"`, `"in"`). Also accepts `country` or `gl`. |
| **`proxyConfiguration`** | object | No | `{"useApifyProxy": true}` | Proxy settings. **Apify Residential Proxies** are automatically enforced on cloud runs when no custom proxy is provided to prevent Google rate-limiting and 403 blocks. |
| **`maxConcurrency`** | integer | No | `3` | Number of review URLs verified concurrently (`1` to `10`). |

***

### 📊 Output Fields (Spreadsheet Columns & JSON Schema)

Every extracted or verified review returns a clean, flat object with **41 structured fields** designed for 1-click **Excel (.xlsx)**, **CSV**, **Google Sheets**, and database pipelines:

| Field Name | Type | Description |
| :--- | :--- | :--- |
| `input_url` | string | The exact original URL you provided (ideal for Excel/Google Sheets `VLOOKUP` joins) |
| `resolved_url` | string | The canonical resolved Google Maps URL (expands `maps.app.goo.gl` shortlinks) |
| `url` | string | Canonical URL alias maintained for backwards compatibility |
| `status` | string | `"ACTIVE"` = live on Google Maps, `"REMOVED"` = deleted/taken down, `"UNKNOWN"` = temporary error, `"UNSUPPORTED"` = invalid link format |
| `is_active` | boolean | null | `true` if verified live, `false` if removed, `null` if unknown/unsupported |
| `is_removed` | boolean | null | `true` if verified removed/deleted, `false` if live, `null` if unknown/unsupported (ideal for webhook filters) |
| `review_id` | string | null | Internal Google Review ID token (used for legal & takedown appeal tracking) |
| `place_id` | string | null | Google Maps Feature / Place hex ID (`0x...:0x...`) |
| `place_cid` | string | null | Standard Google Place ID / CID (`ChIJ...`) |
| `review_url` | string | null | Direct canonical Google Maps permalink to this specific review |
| `review_report_url` | string | null | **1-Click Google Takedown URL** (`google.com/local/content/rap/report?postId=...`) to flag the review for policy violations |
| `is_edited` | boolean | null | `true` if the author modified the review after initial publication, `false` if untouched |
| `review_modified_timestamp` | string | null | Exact ISO 8601 UTC timestamp of when the review was last edited |
| `business_name` | string | null | Name of the Google Business Profile (**preserved even on `REMOVED` reviews**) |
| `business_address` | string | null | Full physical street address of the business (**preserved even on `REMOVED` reviews**) |
| `business_place_url` | string | null | Direct Google Maps URL to the business listing |
| `business_categories` | array\[string] | All categories assigned to the Google Business Profile |
| `business_primary_category` | string | null | Primary category of the business (e.g. `"Used car dealer"`, `"Restaurant"`) |
| `business_city` | string | null | City where the business is located |
| `business_country` | string | null | Country where the business is located |
| `business_country_code` | string | null | 2-letter ISO country code (e.g. `"US"`, `"GB"`) |
| `business_latitude` | number | null | GPS latitude coordinate of the business |
| `business_longitude` | number | null | GPS longitude coordinate of the business |
| `business_timezone` | string | null | IANA timezone of the business (e.g. `"America/New_York"`) |
| `business_cover_image_url` | string | null | Featured cover image URL of the business listing |
| `reviewer_name` | string | null | Public display name of the reviewer |
| `reviewer_id` | string | null | Unique 21-digit Google Contributor user ID string |
| `reviewer_url` | string | null | Direct link to the reviewer's Google Maps contributor profile |
| `reviewer_avatar_url` | string | null | Reviewer's profile photo URL |
| `reviewer_number_of_reviews` | integer | null | Total lifetime reviews written by this user (helps spot 1-review burner accounts) |
| `review_stars` | integer | null | Star rating given (`1` to `5`) |
| `review_text` | string | null | Full review text (translated to English when applicable) |
| `review_text_original` | string | null | Original untranslated review text in the author's native language |
| `review_photos` | array\[string] | High-resolution image URLs attached to the review |
| `review_photos_count` | integer | Total number of photos attached to the review |
| `review_timestamp` | string | null | Exact ISO 8601 UTC creation timestamp (e.g. `"2024-03-29T16:56:56.125874+00:00"`) |
| `review_date` | string | null | Relative date string shown on Google Maps (e.g. `"6 months ago"`) |
| `review_language` | string | null | Detected ISO language code of the review (e.g. `"en"`, `"es"`) |
| `has_owner_reply` | boolean | null | `true` if the business owner replied to this review, `false` otherwise |
| `owner_reply` | string | null | Full text of the business owner's response |
| `owner_reply_date` | string | null | Relative date of the business owner's reply |
| `owner_reply_timestamp` | string | null | Exact ISO 8601 UTC timestamp of the business owner's reply |
| `owner_reply_language` | string | null | Detected language code of the business owner's reply |
| `text_snippet` | string | null | Human-readable status summary of the check |
| `check_timestamp` | string | Exact ISO 8601 UTC timestamp when this verification was performed |
| `timestamp` | string | ISO 8601 check timestamp alias |
| `error` | string | null | Error description (always `null` for `ACTIVE` and `REMOVED` reviews) |

***

### 📤 Sample Output Data

#### 1. Active Review (`status: "ACTIVE"`)

```json
{
  "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": "107907612947498246994",
  "reviewer_url": "https://www.google.com/maps/contrib/107907612947498246994",
  "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"
}
```

#### 2. Removed / Deleted Review (`status: "REMOVED"` — Preserves Business Metadata for Billing Proof)

```json
{
  "input_url": "https://www.google.com/maps/reviews/data=!4m8!14m7...",
  "resolved_url": "https://www.google.com/maps/reviews/data=!4m8!14m7...",
  "status": "REMOVED",
  "is_active": false,
  "is_removed": true,
  "review_id": "ChZDSUhNMG9nS0VJQ0FnSUNwLWNMM2J3EAE",
  "place_id": "0x0:0x57656ffbe42744ba",
  "place_cid": "ChIJr7blnswzw4ARukQn5PtvZVc",
  "business_name": "STG Auto Group of Montclair",
  "business_address": "10477 Central Ave, Montclair, CA 91763, United States",
  "business_place_url": "https://www.google.com/maps/place/?q=place_id:ChIJr7blnswzw4ARukQn5PtvZVc",
  "business_city": "Montclair",
  "business_country": "United States",
  "business_country_code": "US",
  "business_categories": ["Used car dealer", "Auto body shop"],
  "business_primary_category": "Used car dealer",
  "business_latitude": 34.0640219,
  "business_longitude": -117.6889961,
  "business_timezone": "America/Los_Angeles",
  "business_cover_image_url": "https://lh3.googleusercontent.com/gps-cs-s/...",
  "reviewer_name": null,
  "review_stars": null,
  "review_text": null,
  "review_photos": [],
  "review_photos_count": 0,
  "text_snippet": "Review no longer found on Google Maps. Review removed.",
  "error": null,
  "check_timestamp": "2026-10-01T21:08:27.741295+00:00"
}
```

***

### 💰 Transparent Pay-Per-Event (PPE) Pricing ($0.25–$0.35 / 1K)

This Actor uses Apify's transparent **Pay-Per-Event (PPE)** model so you only pay for extracted or verified reviews:

| Apify Plan | Price per Review | Cost per 1,000 Reviews | Cost per 10,000 Reviews |
| :--- | :---: | :---: | :---: |
| **Free** | `$0.00035` | **`$0.35`** | **`$3.50`** |
| **Bronze** | `$0.00030` | **`$0.30`** | **`$3.00`** |
| **Silver** | `$0.00028` | **`$0.28`** | **`$2.80`** |
| **Gold / Platinum / Diamond** | `$0.00025` | **`$0.25`** | **`$2.50`** |

- **Per Extracted or Verified Review (`apify-default-dataset-item`):** Charged only when a review is extracted from a Place URL or verified as `ACTIVE` / `REMOVED`.
- **$0.00 for Unsupported Links & Errors:** If an input URL is an unsupported format (`status: "UNSUPPORTED"`), an empty place with zero reviews, or encounters a temporary upstream error (`status: "UNKNOWN"`), you are charged **$0.00**.
- **Automatic Budget Cap Protection:** Fully respects your Apify account and run spending limits—halting cleanly without overcharging.

***

### 💡 Common Workflows, Schedules & Code Integrations

#### 1. Spreadsheet / CRM Joins (Excel & Google Sheets `VLOOKUP`)

Because the Actor preserves your exact original link in `input_url`, you can export the dataset as **CSV** or **Excel (.xlsx)** and run a simple `VLOOKUP` or `XLOOKUP` against your client tracking sheet:

```excel
=VLOOKUP(A2, ApifyDataset!A:E, 4, FALSE)
```

#### 2. Automated Daily Takedown Monitoring (Apify Schedules + Webhooks)

ORM agencies typically monitor disputed reviews for 7–60 days until Google removes them. Put your checks on autopilot in 30 seconds:

1. In Apify Console, save your list of disputed review URLs as a **Task**.
2. Click **Actions → Schedule Actor** and set it to run **Daily at 8:00 AM** (`0 8 * * *`).
3. Add an **Apify Webhook** (`ACTOR.RUN.SUCCEEDED`) connected to Slack, Zapier, Make, or Airtable with a simple filter:
   - **Condition:** `is_removed == true`
   - **Action:** Send an instant Slack & billing notification: *"🎉 Takedown Confirmed! Review {review_id} on {business_name} has been removed by Google!"*
     *(Because `is_removed` is `null` on temporary network hiccups, you will never receive false-alarm takedown alerts).*

#### 3. Run via Python (`apify-client`)

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_API_TOKEN")

run = client.actor("unitbytes/google-maps-reviews-scraper").call(run_input={
    "reviewsToCheck": [
        # Mode 1: Check specific review links for removal or edits
        "https://maps.app.goo.gl/wSLNNUnwRAwg1T4W9",
        "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChZDSUhNMG9nS0VJQ0FnSUNwLWNMM2J3EAE!2m1!1s0x0:0x57656ffbe42744ba!3m1!1s2@1:CAIQACodChtycF9oOlJORWFGdmxEN3VmeDI1VlFXRXotRXc%7C%7C?hl=en-US",
        # Mode 2: Or paste a Business Place URL or Search Query to extract up to 10,000 reviews
        "https://www.google.com/maps/place/Katz's+Delicatessen/@40.722233,-73.987429,17z/"
    ],
    "maxReviewsPerPlace": 50,
    "reviewsSort": "newest",
    "reviewKeyword": "",
    "maxConcurrency": 3
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    if item.get("is_removed") is True:
        print(f"🎉 Takedown verified! Review {item['review_id']} on '{item['business_name']}' was REMOVED.")
    elif item.get("is_active") is True:
        print(f"👀 Live ({item['review_stars']}★) by {item['reviewer_name']} on '{item['business_name']}'")
        print(f"   1-Click Report Link: {item['review_report_url']}")
```

#### 4. Run via Node.js / JavaScript (`apify-client`)

```javascript
import { ApifyClient } from "apify-client";

const client = new ApifyClient({ token: "YOUR_APIFY_API_TOKEN" });

const run = await client.actor("unitbytes/google-maps-reviews-scraper").call({
    reviewsToCheck: [
        "https://maps.app.goo.gl/wSLNNUnwRAwg1T4W9",
        "https://www.google.com/maps/reviews/data=!4m8!14m7!1m6!2m5!1sChZDSUhNMG9nS0VJQ0FnSUNwLWNMM2J3EAE!2m1!1s0x0:0x57656ffbe42744ba!3m1!1s2@1:CAIQACodChtycF9oOlJORWFGdmxEN3VmeDI1VlFXRXotRXc%7C%7C?hl=en-US"
    ],
    maxReviewsPerPlace: 50,
    reviewsSort: "newest",
    reviewKeyword: "",
    maxConcurrency: 3
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(item => {
    console.log(`[${item.status}] ${item.business_name} — Removed: ${item.is_removed}, Report URL: ${item.review_report_url}`);
});
```

#### 5. 🔌 MCP Server Setup: Claude Code, Cursor & AI Agents

Connect this Actor directly to **Claude Code**, **Claude Desktop**, **Cursor**, or any MCP-compatible AI agent via the official [Apify MCP server](https://mcp.apify.com/):

```json
{
  "mcpServers": {
    "apify": {
      "type": "http",
      "url": "https://mcp.apify.com/?tools=actors,docs,unitbytes/google-maps-reviews-scraper"
    }
  }
}
```

*No manual API token is required in configuration if your client supports Apify OAuth sign-in. Alternatively, pass your Apify API Token in the `Authorization` header.*

***

### 🛡️ Enterprise Reliability & Crash-Proof Checkpointing

- **Smart Proxy Auto-Rotation:** Automatically retries transient rate limits with exponential backoff and fresh residential proxy IPs.
- **Zero False-Positive Removals:** If Google returns a temporary 5xx server error, the Actor safely reports `status: "UNKNOWN"` (`is_removed: null`) rather than falsely reporting a review as `REMOVED`.
- **Automatic State Checkpointing:** Persists processed URLs to Apify Key-Value Store after every batch. If a massive run is interrupted or restarted, it resumes where it left off without re-checking or double-charging already verified URLs.

***

### 🔗 Related Google Maps Scrapers by UnitBytes

Combine all three specialized tools in the **UnitBytes Google Maps Reputation Suite** to build a complete local SEO and reputation defense pipeline:

- 🗺️ **[Google Maps Contributor & Local Guide Reviews Scraper](https://apify.com/unitbytes/google-maps-contributor-scraper)** (`unitbytes/google-maps-contributor-scraper`) — Paste any `reviewer_id` or `reviewer_url` from this Actor to export that reviewer's entire lifetime review history (up to 200 reviews), Local Guide level (1–10), points, and badges in under 2 seconds.
- 📸 **[Google Maps Photos Scraper (Places, Menus, Videos & Guides)](https://apify.com/unitbytes/google-maps-photos-scraper)** (`unitbytes/google-maps-photos-scraper`) — Download original uncompressed full-resolution photos (`=s0`), restaurant menus, food & drink galleries, playable MP4 videos, 360° Street View, verified photo view counts, and geo-tagged venues from Google Maps places and Local Guides.

***

### ❓ Frequently Asked Questions (FAQ)

##### 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`. When you run the Actor, it returns `status: "ACTIVE"` (`is_removed: false`) if the review is still live, or `status: "REMOVED"` (`is_removed: true`) if the review was deleted by the author or removed by Google.

##### 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` (`"newest"`, `"lowest_rating"`, `"highest_rating"`, or `"most_relevant"`), and optional `reviewKeyword`. The Actor will extract the reviews along with each review's direct permalink (`review_url`), 1-click dispute link (`review_report_url`), star rating, text, photos, and owner reply.

##### 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=...`). Clicking this link opens Google's official **Report a Policy Violation (RAP)** dispute screen directly for that exact review—saving account managers from scrolling through thousands of reviews on a business profile to click the flag button.

##### 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`. This gives ORM agencies timestamped proof of which client's review was removed for invoicing.

##### Q: Can this tool detect if a customer edited their review rating or text?

**Yes.** The Actor compares the review's initial creation timestamp against its last-modified timestamp. If the reviewer updated their star rating or text after posting, the Actor sets `is_edited: true` and outputs the exact UTC `review_modified_timestamp`.

##### Q: Will a temporary network error cause a false "REMOVED" alert?

**Never.** The Actor only outputs `status: "REMOVED"` (`is_removed: true`) when Google Maps definitively confirms the business profile loaded cleanly and the specific review post no longer exists. If a request hits a temporary network error, `status` is set to `"UNKNOWN"` and both `is_removed` and `is_active` are set to `null`.

##### Q: Do I need coding skills to use this Actor?

**Not at all!** You can paste your list of Google Maps links directly in the Apify Console, click **Start**, and download a clean **Excel (.xlsx)** or **CSV** file with 1 click.

##### Q: What proxies are recommended?

**Apify Residential Proxies** are enabled automatically by default on Apify Cloud runs to ensure fast, uninterrupted extraction without Google rate limits or 403 blocks.

***

### ⚖️ Compliance & Privacy

This Actor extracts **strictly publicly available data** from Google Maps public business listings and review pages. It does not log in, bypass authentication walls, or access private account details. Personal data is protected by regulations such as GDPR and CCPA—see Apify's guide on [the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/) and ensure your data processing complies with applicable privacy regulations.

#### Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Google LLC, Alphabet Inc., or any of their subsidiaries.

***

### 💬 Support & Feature Requests

Need help configuring your run, requesting custom fields, or setting up bulk ORM tracking?

- 🐛 **Bug Reports & Feature Requests:** Open a ticket in the [Apify Issues Tab](https://apify.com/unitbytes/google-maps-reviews-scraper/issues?fpr=939u3w)
- 📧 **Direct Email Support:** `contact@unitbytes.com`

# Actor input Schema

## `reviewsToCheck` (type: `array`):

Paste your Google Maps Business Place URLs (`/maps/place/...`), Location / Business Search Queries (e.g. `Katz's Delicatessen New York`, `Juhu`), Place IDs (`ChIJ...`), Google Search `#lrd=` links, `g.page/r/.../review` or `writereview?placeid=...` links, Contributor Profile links (`/maps/contrib/...`), or individual Review Share Links here.

💡 **What you can scrape:**

1. **Business / Place URLs (`/maps/place/...`, `/maps/search/...`, `#lrd=...`, `g.page/r/...`, `writereview?placeid=...`):** Extract up to `maxReviewsPerPlace` reviews (default 50, up to 10,000) per business, sorted by Newest or Lowest Rating and optionally filtered by keyword.
2. **Plain-text Search Queries & Place IDs:** Pass business names, areas (`Katz's Delicatessen`, `Juhu`), or raw `ChIJ...` Place IDs directly without needing a URL.
3. **Contributor Profiles (`/maps/contrib/<USER_ID>`):** Extract public reviews written by a specific contributor across all businesses.
4. **Specific Review Permalinks (`/maps/reviews/data=...` or `maps.app.goo.gl/...`):** Verify individual review share links (`ACTIVE`, `REMOVED`, `is_edited`).

## `maxReviewsPerPlace` (type: `integer`):

Maximum number of reviews to paginate and extract for each business place (`/maps/place/...`) or search result. (Default: 50, Max: 10,000)

## `maxPlacesPerQuery` (type: `integer`):

When a plain-text search query or `/maps/search/...` URL is provided (e.g. `Dentists in Austin TX` or `Restaurants in Soho`), how many matching businesses from that search to extract reviews for (up to `maxReviewsPerPlace` reviews per business). Set to `1` when targeting a specific business name, or up to `20` for multi-business category/city discovery. (Default: 1, Max: 20)

## `reviewsSort` (type: `string`):

Choose how to sort and prioritize reviews when scraping a Google Maps Business / Place URL or Search Query:
• **Newest / Most Recent First (`newest`):** Extracts the latest reviews in chronological order (newest to oldest).
• **Lowest Rating / Negative First (`lowest_rating`):** Prioritizes 1-star and 2-star negative complaints first — ideal for reputation audits, negative review lead generation, and finding `review_report_url` dispute links.
• **Highest Rating / Positive First (`highest_rating`):** Prioritizes 5-star and 4-star positive reviews first.
• **Most Relevant (`most_relevant`):** Uses Google Maps' default relevance ranking.

## `reviewKeyword` (type: `string`):

Optional server-side keyword filter when scraping a Business Place URL or Search Query (e.g. `service`, `refund`, `manager`, `food`, `cleanliness`). Leave empty to extract all reviews.

## `language` (type: `string`):

ISO language code (`hl`) for Google Maps interface and server-side review translation (e.g. `en`, `es`, `fr`, `de`, `pt-BR`, `ar`, `ja`, `zh-TW`). Foreign-language reviews are automatically translated by Google into this language inside `review_text` while preserving original text metadata.

## `region` (type: `string`):

2-letter ISO country code (`gl`) used to bias plain-text search queries and Google Maps regional results (e.g. `us`, `gb`, `ca`, `au`, `de`, `fr`, `ae`, `in`).

## `proxyConfiguration` (type: `object`):

Select the proxies to use. Google actively rate-limits datacenter IPs, so **Apify Residential Proxies** are automatically enabled by default for maximum reliability.

## `maxConcurrency` (type: `integer`):

How many targets to process in parallel. Higher values run faster. (Default: 3, Max: 10)

## Actor input object example

```json
{
  "reviewsToCheck": [
    "https://www.google.com/maps/place/Katz's+Delicatessen/@40.722233,-73.987429,17z/"
  ],
  "maxReviewsPerPlace": 50,
  "maxPlacesPerQuery": 1,
  "reviewsSort": "newest",
  "reviewKeyword": "",
  "language": "en",
  "region": "us",
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "maxConcurrency": 3
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const 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 the Actor and wait for it to finish
const run = await client.actor("unitbytes/google-maps-reviews-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
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 the Actor and wait for it to finish
run = client.actor("unitbytes/google-maps-reviews-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "reviewsToCheck": [
    "https://www.google.com/maps/place/Katz'\''s+Delicatessen/@40.722233,-73.987429,17z/"
  ],
  "reviewsSort": "newest",
  "language": "en",
  "region": "us",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call unitbytes/google-maps-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,unitbytes/google-maps-reviews-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/fPCCsergoMBWObLKz/builds/N0VgcQwVe5NscrKHV/openapi.json
