# Google Workspace Marketplace Review Tracker (`crawlerbros/google-workspace-marketplace-review-tracker`) Actor

Track and monitor reviews for any Google Workspace Marketplace app. Filter by date, rating, and sort order, ideal for daily sentiment monitoring and competitor analysis.

- **URL**: https://apify.com/crawlerbros/google-workspace-marketplace-review-tracker.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, E-commerce, Other
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 7 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.00 / 1,000 results

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

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Google Workspace Marketplace Review Tracker

Monitor and track user reviews for any [Google Workspace Marketplace](https://workspace.google.com/marketplace) app. Provide an App ID and get back reviewer names, star ratings, review text, dates, and helpful counts — ideal for daily sentiment monitoring, competitor analysis, and reputation tracking.

---

### What data you get

| Field | Type | Description |
|---|---|---|
| `reviewId` | string | Unique review identifier |
| `appId` | string | Numeric App ID |
| `appName` | string | App display name |
| `appUrl` | string | Direct URL to the app listing |
| `reviewerName` | string | Display name of the reviewer |
| `rating` | integer | Star rating (1–5) |
| `reviewText` | string | Full text of the review |
| `reviewDate` | string | ISO-8601 date when the review was posted (YYYY-MM-DD) |
| `helpfulCount` | integer | Number of users who marked the review as helpful |
| `recordType` | string | Always `workspace_review` |
| `scrapedAt` | string | ISO-8601 UTC timestamp of when this record was scraped |

---

### Input options

| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| `appId` | string | Yes | — | Numeric App ID from the Marketplace URL |
| `maxItems` | integer | No | `50` | Max reviews to return (1–500) |
| `sinceDate` | string | No | — | Only return reviews on or after this date (YYYY-MM-DD) |
| `minRating` | integer | No | — | Minimum star rating (1–5). Leave blank for all |
| `sortBy` | select | No | `Newest` | Sort order: Newest, MostRelevant, HighestRated, LowestRated |

#### How to find the App ID

The App ID is the numeric part at the end of a Google Workspace Marketplace URL:

````

https://workspace.google.com/marketplace/app/mailmeteor\_mail\_merge\_for\_gmail/1008170693301
↑
This is the App ID

````

---

### Example output record

```json
{
  "reviewId": "06060438314121439815",
  "appId": "1008170693301",
  "appName": "Mailmeteor - Mail merge for Gmail",
  "appUrl": "https://workspace.google.com/marketplace/app/mailmeteor_mail_merge_for_gmail/1008170693301",
  "reviewerName": "Alice Reviewer",
  "rating": 5,
  "reviewText": "Excellent tool for sending personalized emails at scale. Works perfectly with Gmail.",
  "reviewDate": "2026-04-19",
  "helpfulCount": 12,
  "recordType": "workspace_review",
  "scrapedAt": "2026-05-20T10:00:00+00:00"
}
````

***

### Use cases

- **Reputation monitoring** — run daily on your own app to catch new negative reviews quickly.
- **Competitor analysis** — track what users say about competing apps over time.
- **Sentiment trending** — collect reviews with `sinceDate` set to last month and analyze sentiment shifts.
- **Review alerting** — use `minRating: 1` with `sortBy: Newest` to catch only critical 1-star reviews.
- **Product research** — harvest user pain points from competitor reviews to inform your roadmap.

***

### FAQ

**How do I find the App ID for any Workspace Marketplace app?**
Navigate to the app listing and copy the numeric ID from the URL. Example: for the URL `...app/mailmeteor_mail_merge_for_gmail/1008170693301`, the App ID is `1008170693301`.

**Does it require a Google account or API key?**
No. The scraper uses the public marketplace website and requires no authentication or credentials.

**How many reviews can I collect?**
Up to 500 per run. Most popular apps have thousands of reviews.

**What is `sinceDate` used for?**
Set `sinceDate` to `2025-01-01` to only collect reviews posted on or after January 1, 2025. Combine with `sortBy: Newest` to collect only recent reviews for incremental tracking.

**What does `helpfulCount` represent?**
The number of other users who clicked "Helpful" on that review. Reviews with 0 helpful votes will not have this field.

**Why are some reviews missing `reviewText`?**
A small number of reviews consist only of a star rating with no written text. The `reviewText` field is omitted for those.

**What sort orders are available?**

- `Newest` — most recent reviews first (best for daily monitoring)
- `MostRelevant` — Google's relevance ranking
- `HighestRated` — 5-star reviews first
- `LowestRated` — 1-star reviews first (useful for finding complaints)

# Actor input Schema

## `appId` (type: `string`):

Numeric App ID from the Google Workspace Marketplace URL. Example: 218858140275 for Yet Another Mail Merge, 1008170693301 for Mailmeteor.

## `maxItems` (type: `integer`):

Maximum number of reviews to collect (1–500).

## `sinceDate` (type: `string`):

Only return reviews on or after this date, e.g. 2025-01-01. Leave blank for all dates.

## `minRating` (type: `integer`):

Only include reviews with this star rating or higher (1–5). Leave blank for all ratings.

## `sortBy` (type: `string`):

Order in which to retrieve reviews.

## Actor input object example

```json
{
  "appId": "1008170693301",
  "maxItems": 50,
  "sortBy": "Newest"
}
```

# Actor output Schema

## `reviews` (type: `string`):

Dataset containing all scraped reviews with reviewer name, rating, text, date, and helpful count.

# 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 = {
    "appId": "1008170693301",
    "maxItems": 50,
    "sortBy": "Newest"
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/google-workspace-marketplace-review-tracker").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 = {
    "appId": "1008170693301",
    "maxItems": 50,
    "sortBy": "Newest",
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/google-workspace-marketplace-review-tracker").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "appId": "1008170693301",
  "maxItems": 50,
  "sortBy": "Newest"
}' |
apify call crawlerbros/google-workspace-marketplace-review-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlerbros/google-workspace-marketplace-review-tracker",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Google Workspace Marketplace Review Tracker",
        "description": "Track and monitor reviews for any Google Workspace Marketplace app. Filter by date, rating, and sort order, ideal for daily sentiment monitoring and competitor analysis.",
        "version": "1.0",
        "x-build-id": "2RzeXBb9AdfeL39ZV"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~google-workspace-marketplace-review-tracker/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-google-workspace-marketplace-review-tracker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/crawlerbros~google-workspace-marketplace-review-tracker/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-google-workspace-marketplace-review-tracker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/crawlerbros~google-workspace-marketplace-review-tracker/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-google-workspace-marketplace-review-tracker",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "appId"
                ],
                "properties": {
                    "appId": {
                        "title": "App ID",
                        "type": "string",
                        "description": "Numeric App ID from the Google Workspace Marketplace URL. Example: 218858140275 for Yet Another Mail Merge, 1008170693301 for Mailmeteor."
                    },
                    "maxItems": {
                        "title": "Max reviews",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of reviews to collect (1–500).",
                        "default": 50
                    },
                    "sinceDate": {
                        "title": "Since date (ISO-8601)",
                        "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
                        "type": "string",
                        "description": "Only return reviews on or after this date, e.g. 2025-01-01. Leave blank for all dates."
                    },
                    "minRating": {
                        "title": "Minimum star rating",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Only include reviews with this star rating or higher (1–5). Leave blank for all ratings."
                    },
                    "sortBy": {
                        "title": "Sort reviews by",
                        "enum": [
                            "Newest",
                            "MostRelevant",
                            "HighestRated",
                            "LowestRated"
                        ],
                        "type": "string",
                        "description": "Order in which to retrieve reviews.",
                        "default": "Newest"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
