# Review Intelligence — analyze real reviews from every site (`inovaflow/track-reviews`) Actor

Real reviews from Google, Trustpilot, Yelp, G2 and the app stores, turned into competitor & category intelligence: themes with % frequencies, quotes and switching reasons, distilled into an LLM-ready brief — plus a shareable dashboard, email digest and reply drafts for your own reviews.

- **URL**: https://apify.com/inovaflow/track-reviews.md
- **Developed by:** [inovaflow](https://apify.com/inovaflow) (community)
- **Categories:** Automation, Social media, SEO tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.15 / actor start

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

**Every real review about a market — collected, themed, quantified, and distilled into a brief any LLM can reason over.**

Reviews are the biggest body of honest product feedback on the internet, but they're useless in the shape they come in: scattered across Google Maps, Trustpilot, Yelp, G2 and the app stores, thousands at a time, far too long to paste into ChatGPT or Claude. This Actor fixes the shape. Point it at the companies you care about — yours, a rival's, or **every player in a category** — and it collects their reviews, tags the recurring themes, counts how often each one comes up per company, pulls representative quotes and switching reasons, and compresses all of it into a **~10k-token markdown brief** built for LLM reasoning. One click on **Copy for LLM** and you're asking Claude *"where is the gap nobody serves in this market?"* — with the evidence attached.

Own-review monitoring is built in too: run it on a **Schedule** with your company ticked and each run emails you what's new, with sentiment, a rating trend, and a ready-to-edit reply draft for every fresh review.

### Ask it a real question

Pick what you want to learn and the report, the analyst prompt and the AI summary reshape around it:

**Category gaps** — unmet needs nobody solves · **What's already well served** — where not to compete · **What people love** · **Competitor weaknesses** — battlecard · **Why customers switch** · **Pricing objections** · **Unmet feature requests** · **Onboarding & setup friction** · **Support quality** · **Positioning & messaging** · **Own-reputation monitor** — or type a **custom question** and it's answered over the distilled brief.

### The platforms it covers

| Platform | What you give it | Powered by |
|---|---|---|
| G2 | the G2 product page URL | [automation-lab/g2-scraper](https://apify.com/automation-lab/g2-scraper) |
| Trustpilot | the domain, e.g. `company.com` | [memo23/trustpilot-scraper-ppe](https://apify.com/memo23/trustpilot-scraper-ppe) |
| Google Maps | the listing's URL | [compass/Google-Maps-Reviews-Scraper](https://apify.com/compass/google-maps-reviews-scraper) |
| Yelp | the Yelp business page URL | [web\_wanderer/yelp-reviews-scraper](https://apify.com/web_wanderer/yelp-reviews-scraper) |
| Apple App Store | the app's numeric ID | [thewolves/appstore-reviews-scraper](https://apify.com/thewolves/appstore-reviews-scraper) |
| Google Play | the app's package name | [thewolves/google-play-reviews-scraper](https://apify.com/thewolves/google-play-reviews-scraper) |

**We didn't reinvent the wheel** — the best review scrapers already live on the Apify Store, so we orchestrate them on your own account and do the part they don't: normalize, theme, quantify, distill. Fill in only the links each company has; up to 10 companies per run.

> ### 📍 Where else do you want reviews from?
>
> Tripadvisor · Capterra · Amazon · Facebook · Booking.com · Software Advice · somewhere we haven't thought of?
> **Tell us on the [Issues](https://console.apify.com/actors/qVVYdikeiX5TWPiRu/issues) tab** — we read every request and build the most-asked-for platform next. 🙏

> 🧪 **Early access.** New and **priced lean** — pay only when you run, no subscription. Something missing or broken? Open an issue — we read every one. 🙏

### How it works — and why 20,000 reviews cost the same as 30

The pipeline is deliberately split: **we do the cheap deterministic work — collect, normalize, theme, count — and your LLM does the expensive reasoning** over the distilled result.

1. **Collect.** Each company's reviews from every site you gave, on your own Apify account. You set the window — *"reviews from the last N days"* (or `0` for the entire history, once).
2. **Never re-scrape.** Reviews land in a persistent corpus; after the first backfill every run fetches **only what's new**, while the report still covers the whole window. If a burst of reviews ever exceeds the safety cap, the run says so loudly instead of silently dropping the overflow.
3. **Theme.** Every review is tagged with sentiment and recurring topics. The vocabulary isn't fixed: the Actor derives the themes that actually matter for *your* category (once, cached), then a free rules engine counts them across the entire corpus — so theming 20,000 reviews costs nothing extra.
4. **Distill.** Per company: rating, volume, sentiment split, top themes **with % frequencies**, representative quotes per theme, and switching signals — compressed into a brief that fits any LLM's context. Raw dumps never happen (8 vendors × 1,200 reviews is ~1M tokens; the brief is ~10k).
5. **Deliver.** A shareable dashboard with **Copy for LLM** (analyst prompt + brief on your clipboard) and **Download full corpus** (one JSONL row per review), a clean dataset, an email digest, and an AI summary of your chosen question right at the top.

### Two ways to run it

- **Category / competitor study** — add several companies, tick nobody (or just yourself). The report compares every company against every other: ranked ratings, theme frequencies side by side, what each vendor's customers complain about. This is market research from primary sources, reproducible on demand.
- **Own-review monitoring** — tick *"This is my company"*, add your email, put it on a weekly **Schedule**. Each run brings the new reviews, sentiment and trend, a ✍️ **reply draft for every new review** (personalized, skips ones you've answered), an optional per-review alert email, and an AI action plan. Quiet when nothing happened, loud when something did.

### Set it up in 2 minutes

1. Add the **companies** — a name plus the review-site links each one has. One Google Maps or G2 URL is enough to start.
2. Pick **what you want to learn** (or leave the default full report) and how far back to look.
3. Connect your Apify account in the **Access** section — the review scrapers run on it, so the data is yours and the scraper fees are transparent.
4. Hit **Start**. For monitoring, use the **Schedule** tab — the incremental engine makes weekly runs nearly free.

### Costs

One flat fee, only when you run — no subscription, no per-review or per-feature charges.

- **$0.15 per GB of run memory** at start — at the default 1 GB that's **about $0.15 per run**, everything included: fetching, theming, the brief, the dashboard, the email digest and the AI summary.
- **AI analysis is included** — Claude runs on our built-in key at no extra charge; bring your own Anthropic key if you prefer, and a keyless rules engine is always available as fallback.

Plus the background review scrapers' own pay-as-you-go fees, billed directly to **your own Apify account** (typically cents per platform). Because the engine only fetches *new* reviews after the first run, a scheduled check often costs almost nothing beyond the flat fee.

### Ask your AI assistant (MCP)

Works as an agent tool out of the box: connect [mcp.apify.com](https://mcp.apify.com) to Claude, Cursor, or any MCP client and just ask — *"what do people complain about across CRM tools?"* or *"any new reviews for my company this week?"* — and it runs this Actor with the right inputs.

### Notes

Reads **publicly visible reviews** only and logs into nothing. The review scrapers run on your own Apify account (your token or a one-click connector — see the input's Access section); the corpus, state and dashboard live in your own Apify storage. We host nothing.

Want Tripadvisor or Capterra next? Tell us which one you need first on the **Issues** tab. 🙏

# Actor input Schema

## `companies` (type: `array`):

One entry per company. Give it a name, paste the links for whichever review sites it is on, and tick “This is my company” on your own. Add as many as you like (up to 10) — for category research, add every player and tick none.

## `useCase` (type: `string`):

Pick the question this run should answer. The preset reframes the report headline, the AI synthesis and the ready-to-paste "Copy for LLM" analyst prompt — battlecards, category gaps, switching reasons, pricing objections and more.

## `customPrompt` (type: `string`):

Ask your own question instead of a preset — e.g. "Which complaints would make an enterprise buyer hesitate, and which vendor handles them best?". It runs over the distilled review brief (not the raw reviews), so it stays fast and the flat run fee covers it.

## `reviewsFromLastDays` (type: `integer`):

How far back to look, in days. The first run backfills this window; later runs only fetch new reviews. Set **0** to pull the business's ENTIRE review history — a one-time deep backfill (slower, and the review-scraper cost lands on your own Apify account); after that it goes incremental again automatically.

## `draftReplies` (type: `boolean`):

When on, every new review of YOUR business gets a ready-to-edit reply draft in the report.

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

Two-letter language code for reply drafts and theme labels, e.g. `en`, `de`, `cs`.

## `aiAnalysis` (type: `string`):

How sentiment, themes and reply drafts are produced. `claude-haiku` (default) uses our built-in Claude — included in the run fee, no extra charge — for smarter sentiment (sarcasm, mixed reviews), cleaner themes and replies that reference what the reviewer actually said. `claude-sonnet` is highest quality but requires your own Anthropic key (added below); without one it falls back to the included Haiku. `keyless` uses the built-in rules engine — instant, English-oriented.

## `anthropicApiKey` (type: `string`):

Paste your own Anthropic API key and the AI analysis runs on it for free (no per-business AI fee). Leave blank to use the built-in key.

## `outputEmail` (type: `string`):

Type an email address and every run emails you the digest — new reviews, sentiment, themes and reply drafts, with a link to the interactive dashboard. Sent from reputation-radar@apify.inovaflow.app (no-reply). Leave blank to skip email.

## `newReviewAlertEmail` (type: `string`):

In addition to the run digest, send a separate email listing every NEW review found this run — each flagged by rating — with a direct link and the drafted reply. Same address as the digest or a different one (e.g. a shared inbox). Leave blank to skip.

## `apifyMcpConnector` (type: `string`):

An Apify MCP connector whose account runs and pays for the review scrapers — you authorize once, with no token to paste. Create it in the Apify Console under Settings → Integrations → MCP Connectors with the server URL https://mcp.apify.com, then pick it here. Takes precedence over the API token below if both are set. Optional — leave blank to run on the account executing this Actor.

## `apifyToken` (type: `string`):

An Apify API token — the no-connector alternative to the connector option above. When set (and no connector is given), every review scraper (and the read of its results) runs on — and is billed to — THIS token's account instead of the account running Review Intelligence. Find or create a token in the Apify Console under Settings → API & Integrations. Treat it like a password. Optional — leave blank to run everything on the account executing this Actor.

## `maxReviewsPerPlatform` (type: `integer`):

A cost ceiling, not a target. We size each fetch automatically from how many new reviews actually appeared, so you normally never hit this — it is just the most we will ever pull from one platform in a single run. Raise it if a run warns that it hit the cap.

## Actor input object example

```json
{
  "companies": [
    {
      "name": "Acme CRM",
      "isMine": true,
      "g2ProductUrl": "https://www.g2.com/products/acme-crm/reviews",
      "trustpilotDomain": "acme-crm.com"
    },
    {
      "name": "Rival CRM",
      "isMine": false,
      "g2ProductUrl": "https://www.g2.com/products/rival-crm/reviews",
      "trustpilotDomain": "rival-crm.com"
    }
  ],
  "useCase": "full-report",
  "reviewsFromLastDays": 90,
  "draftReplies": true,
  "language": "en",
  "aiAnalysis": "claude-haiku",
  "outputEmail": "me@example.com",
  "newReviewAlertEmail": "alerts@example.com",
  "apifyToken": "apify_api_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
  "maxReviewsPerPlatform": 200
}
```

# Actor output Schema

## `dashboard` (type: `string`):

Branded interactive dashboard page — score cards, per-platform sentiment, you-vs-competitors and review cards with reply drafts.

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

One row per collected review — normalized across platforms, with sentiment, themes, suggested replies and new-since-last-run flags.

## `summary` (type: `string`):

Machine-readable run verdict: review counts, sentiment split, per-platform stats and the dashboard URL.

# 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 = {
    "companies": [
        {
            "name": "Acme CRM",
            "isMine": true,
            "g2ProductUrl": "https://www.g2.com/products/acme-crm/reviews",
            "trustpilotDomain": "acme-crm.com"
        },
        {
            "name": "Rival CRM",
            "isMine": false,
            "g2ProductUrl": "https://www.g2.com/products/rival-crm/reviews",
            "trustpilotDomain": "rival-crm.com"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("inovaflow/track-reviews").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 = { "companies": [
        {
            "name": "Acme CRM",
            "isMine": True,
            "g2ProductUrl": "https://www.g2.com/products/acme-crm/reviews",
            "trustpilotDomain": "acme-crm.com",
        },
        {
            "name": "Rival CRM",
            "isMine": False,
            "g2ProductUrl": "https://www.g2.com/products/rival-crm/reviews",
            "trustpilotDomain": "rival-crm.com",
        },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("inovaflow/track-reviews").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 '{
  "companies": [
    {
      "name": "Acme CRM",
      "isMine": true,
      "g2ProductUrl": "https://www.g2.com/products/acme-crm/reviews",
      "trustpilotDomain": "acme-crm.com"
    },
    {
      "name": "Rival CRM",
      "isMine": false,
      "g2ProductUrl": "https://www.g2.com/products/rival-crm/reviews",
      "trustpilotDomain": "rival-crm.com"
    }
  ]
}' |
apify call inovaflow/track-reviews --silent --output-dataset

```

## MCP server setup

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

```

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/qVVYdikeiX5TWPiRu/builds/ewJRJOKOOlGPc5hxW/openapi.json
