# Trustpilot Competitor Review Extractor (`jaiveda/trustpilot-review-extractor`) Actor

Scrape customer reviews, star ratings, reviewer details, and sentiment text from Trustpilot business profiles.

- **URL**: https://apify.com/jaiveda/trustpilot-review-extractor.md
- **Developed by:** [Bhavadharini](https://apify.com/jaiveda) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## 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.

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

## ⭐ Trustpilot Reviews Scraper: Ratings, Sentiment & Customer Feedback

> **Fast, reliable scraper for Trustpilot business profiles. Extract verified customer reviews, star ratings, reviewer details, review dates, sentiment text, and official company replies.**

***

### 🚀 Why Use This Trustpilot Scraper?

Trustpilot is the world's most recognized customer review authority. Every day, thousands of businesses monitor Trustpilot to benchmark competitors, prevent customer churn, and improve product satisfaction.

This Actor is engineered to provide clean, structured review data with built-in Cloudflare stealth:

- 🎯 **Competitor Weakness Mining**: Filter specifically for **1-star and 2-star reviews** of your competitors to discover common feature complaints, billing frustration, and support delays.
- 🤖 **AI & LLM Sentiment Analysis**: Feed raw customer feedback into Claude, ChatGPT, or LangChain to generate automated *Voice of Customer (VoC)* and competitor teardown reports.
- 💬 **Track Company Responses**: See how competitors respond to negative reviews, their resolution speed, and customer retention strategies.
- 🛡️ **Built-in Bot Protection Bypass**: Uses headless Playwright Chromium to bypass Cloudflare challenges seamlessly.
- ⚡ **Hybrid Extraction Engine**: Extracts data directly from Next.js state hydration with instant DOM fallback for maximum speed and accuracy.

***

### ✨ Key Features

- **Star Rating Filter (`minStarRating`)**: Target exactly the reviews you want (e.g., scrape only negative 1–2 star reviews for churn research, or all 1–5 stars).
- **Comprehensive Fields**: Reviewer name, country, review title, full text, star rating (1–5), published date, date of experience, and official company reply.
- **Pagination & Limit Controls**: Set exact limits on max reviews or max pages to control runtime and budget.
- **Flexible Domain Input**: Accepts full URLs (`https://www.trustpilot.com/review/monday.com`) or simple domains (`monday.com`, `canva.com`).

***

### ⚙️ Input Configuration

| Parameter | Type | Required | Description | Example / Default |
| :--- | :--- | :--- | :--- | :--- |
| `companyUrl` | String | **Yes** | Trustpilot profile URL or company domain name | `https://www.trustpilot.com/review/monday.com` |
| `minStarRating` | Integer | No | Minimum star rating to filter (1 to 5). Use `1` for all reviews, or `1` with max ratings to isolate complaints | `1` |
| `maxReviews` | Integer | No | Maximum total number of reviews to collect | `50` |
| `maxPages` | Integer | No | Maximum pagination pages to crawl | `10` |

#### Input Example (JSON)

```json
{
  "companyUrl": "https://www.trustpilot.com/review/monday.com",
  "minStarRating": 1,
  "maxReviews": 50,
  "maxPages": 5
}
```

***

### 📊 Sample Output (Dataset)

Each review is extracted into a normalized, clean JSON object:

```json
{
  "reviewId": "6abcb5bf00325aaf98d9a040",
  "company": "monday.com",
  "companyUrl": "https://www.trustpilot.com/review/monday.com",
  "reviewerName": "Dave Springer",
  "reviewerCountry": "US",
  "starRating": 1,
  "reviewTitle": "Connection issue with Gmail integration",
  "reviewText": "We have had an issue for the past few weeks with the connection between Monday and Gmail. Support response has been slow and mostly handled by bots...",
  "publishedDate": "2026-09-30T09:09:51.000Z",
  "experiencedDate": "2026-09-09T00:00:00.000Z",
  "companyReply": "Hi Dave, thank you for flagging this. Our technical team is actively reviewing...",
  "companyReplyDate": "2026-10-01T08:00:00.000Z",
  "scrapedAt": "2026-10-01T15:33:55.193Z"
}
```

***

### 💼 High-Value Use Cases

1. **Competitor Churn Intelligence**:
   - Extract 100 recent 1-star reviews for your primary competitor.
   - Run an AI script to group complaints into categories (*Pricing*, *Bugs*, *Customer Support*, *Missing Features*).
   - Use these insights to optimize your sales pitch and land dissatisfied switchers.
2. **Product Feedback Loop**:
   - Continuously scrape your own brand's Trustpilot page and push reviews into a Slack channel or Notion database.
3. **Reputation Monitoring**:
   - Track brand score changes over time and verify whether company replies improve customer sentiment.

***

### 🔗 Integrations & Export Formats

Export your datasets in any format directly from the Apify Console or API:

- **CSV / Excel** (Easy review analysis in spreadsheets)
- **JSON / NDJSON** (Ideal for Python, pandas, and data science pipelines)
- **Automations**: Trigger via **Apify API**, **Webhooks**, **Make**, or **Zapier** whenever a scheduled run finishes.

***

### ❓ Frequently Asked Questions

**Q: Can I scrape reviews for any company on Trustpilot?**\
A: Yes! Simply provide the company's domain (e.g. `shopify.com` or `canva.com`) or full Trustpilot profile link.

**Q: Does this scraper get blocked by Cloudflare?**\
A: No. The Actor runs inside a real headless Playwright browser environment with realistic browser headers and human emulation.

***

### 📞 Support & Feature Requests

Have questions, need custom review filters, or want custom integration support? Feel free to reach out via the **Issues** tab.

# Actor input Schema

## `companyUrl` (type: `string`):

The URL of the company on Trustpilot (e.g., https://www.trustpilot.com/review/monday.com or monday.com).

## `minStarRating` (type: `integer`):

Filter reviews by minimum star rating. Use 1 to scrape all reviews.

## `maxReviews` (type: `integer`):

Maximum total reviews to collect.

## `maxPages` (type: `integer`):

Maximum review pagination pages to process.

## Actor input object example

```json
{
  "companyUrl": "https://www.trustpilot.com/review/monday.com",
  "minStarRating": 1,
  "maxReviews": 50,
  "maxPages": 10
}
```

# Actor output Schema

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

Dataset containing customer reviews, star ratings, reviewer details, review dates, and company replies.

# 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 = {
    "companyUrl": "https://www.trustpilot.com/review/monday.com"
};

// Run the Actor and wait for it to finish
const run = await client.actor("jaiveda/trustpilot-review-extractor").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 = { "companyUrl": "https://www.trustpilot.com/review/monday.com" }

# Run the Actor and wait for it to finish
run = client.actor("jaiveda/trustpilot-review-extractor").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 '{
  "companyUrl": "https://www.trustpilot.com/review/monday.com"
}' |
apify call jaiveda/trustpilot-review-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jaiveda/trustpilot-review-extractor"
        }
    }
}
```

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/Qfd1sGqVqdWY1dphO/builds/PutAZ9na4i0qCsGHS/openapi.json
