# Software Review Scraper: Capterra, TrustRadius & Trustpilot (`getascraper/software-review-scraper`) Actor

Scrape B2B software reviews from Capterra, TrustRadius, and Trustpilot in one run. Get rating, pros, cons, reviewer job title, company size, industry, and verification status per review. Search by product name, skip logging into three sites separately, no subscription.

- **URL**: https://apify.com/getascraper/software-review-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Lead generation, Other, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $9.70 / 1,000 reviews

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/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

## Software Review Scraper: Capterra, TrustRadius & Trustpilot

<table width="100%">
<tr>
<td style="padding:24px 28px;background:#F0FDFA;border:1px solid #99F6E4;border-top:4px solid #0D9488;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">One dataset for every software review that matters</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Pull ratings, pros, cons, and reviewer details from Capterra, TrustRadius, and Trustpilot for any product, in a single run, with no exports to merge by hand.</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #99F6E4;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#0F766E">🗂️ Three sites, one dataset</span><br>
<span style="font-size:12px;color:#57534E">Capterra, TrustRadius, and Trustpilot reviews land in the same table, every time.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #99F6E4;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#0F766E">🧑‍💼 Know who's talking</span><br>
<span style="font-size:12px;color:#57534E">Job title, company size, industry, and review history ride along with every review.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #99F6E4;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#0F766E">🎯 Filter to what matters</span><br>
<span style="font-size:12px;color:#57534E">Keep only 1 and 2 star reviews for a battlecard, or search review text for one topic.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #99F6E4;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#0F766E">⭐ Ratings on one scale</span><br>
<span style="font-size:12px;color:#57534E">Every platform's rating is normalized to 5 stars, so scores line up cleanly.</span>
</td>
</tr>
</table>

### 🔍 What does Software Review Scraper do?

Software Review Scraper collects product reviews from
[Capterra](https://www.capterra.com), [TrustRadius](https://www.trustradius.com),
and [Trustpilot](https://www.trustpilot.com) and returns them as one unified
dataset. Give it a product name, a company domain, or a review page link, and
it finds and scrapes the matching review pages on every platform you select.

Each review comes back with its rating, title, full text, pros and cons, and
a set of reviewer details that go well beyond a bare star rating: job title,
company size, industry, how many reviews that person has written, their
country, whether they're verified, whether the review was solicited, and any
public reply from the vendor. Ratings are normalized to a 5-star scale across
all three platforms, so a TrustRadius review out of 10 lines up directly with
a Capterra or Trustpilot review out of 5.

Runs go through the Apify platform, so you get automatic proxy handling,
scheduling, and API or webhook access to every dataset without maintaining
any infrastructure yourself.

### 💡 Why use Software Review Scraper?

- **I am a competitive intelligence analyst** looking to pull every 1 and 2
  star review of a competitor's product in order to build a battlecard
  before Monday's sales call.
- **I am a SaaS product manager** looking to track my own product's rating
  across Capterra, TrustRadius, and Trustpilot in order to catch a sentiment
  drop without checking three dashboards every morning.
- **I am an investment analyst** looking to read real customer sentiment on
  a target company's product in order to sanity check the vendor's own case
  studies before due diligence closes.
- **I am a sales enablement manager** looking to collect the exact words
  unhappy customers used about a competitor in order to arm my reps with
  objection handling before they hear it live from a prospect.

### 🚀 How to use Software Review Scraper

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#F0FDFA;border:1px solid #99F6E4;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#0D9488;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Name your product</span><br>
<span style="font-size:12px;color:#57534E">Type a product name, a company domain, or paste review page links directly.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F0FDFA;border:1px solid #99F6E4;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#0D9488;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set your platforms and filters</span><br>
<span style="font-size:12px;color:#57534E">Choose which sites to include, which star ratings to keep, or a keyword to search for.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F0FDFA;border:1px solid #99F6E4;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#0D9488;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Export your dataset</span><br>
<span style="font-size:12px;color:#57534E">Every review lands in your dataset with reviewer details, ready for JSON, CSV, or Excel.</span>
</td>
</tr>
</table>

### 📥 Input

Configure the Actor from the Input tab in Apify Console, or pass JSON
directly via the API.

| Field | Type | Required | Description |
|---|---|---|---|
| `query` | string | No | A product name (Slack), a company domain (asana.com), or a full review-page URL. Resolved to a review page on each selected platform automatically. |
| `startUrls` | array of URLs | No | Paste one or more exact review-page URLs from Capterra, TrustRadius, or Trustpilot, mixed if you like. |
| `platforms` | enum | No | Limit the run to specific platforms: Capterra, TrustRadius, Trustpilot. Defaults to all three. |
| `starRatings` | enum | No | Only keep reviews at these star ratings (1 to 5). Leave empty for every rating. |
| `reviewKeyword` | string | No | Only keep reviews whose title, text, pros, or cons contain this word or phrase. |
| `maxReviewsPerPlatform` | integer | No | The most reviews to return per platform for the whole run. Defaults to 100. |
| `proxyConfiguration` | object | No | Defaults to a residential proxy, required because all three platforms sit behind active bot protection. |

### 📤 Output

Every review is returned as a JSON object in your dataset. You can download
it as JSON, HTML, CSV, or Excel, or fetch it through the Apify API.

```json
{
  "platform": "capterra",
  "productName": "Slack",
  "reviewId": "Capterra___4821093",
  "title": "Great for team communication",
  "text": "We moved our whole team from email threads to Slack channels and never looked back.",
  "pros": "Easy to set up, huge app ecosystem, search actually works.",
  "cons": "Notifications get noisy once you're in more than a dozen channels.",
  "rating": 5,
  "ratingScale": 5,
  "reviewerName": "Priya Nair",
  "reviewerTitle": "Operations Manager",
  "reviewerCompanySize": "51-200 employees",
  "reviewerIndustry": "Marketing and Advertising",
  "verified": true,
  "incentivized": false,
  "reviewSource": "organic",
  "date": "2026-05-14",
  "url": "https://www.capterra.com/p/135003/Slack/reviews/",
  "sourceUrl": "https://www.capterra.com/p/135003/Slack/reviews/",
  "scrapedAt": "2026-07-18T09:12:00.000Z"
}
```

#### Data table

| Field | Type | Description |
|---|---|---|
| `platform` | string | The source site: `capterra`, `trustradius`, or `trustpilot`. |
| `productName` | string | The product name the review is about, when the platform exposes it. |
| `reviewId` | string | The platform's internal review identifier, when available. |
| `title` | string | The review's headline. |
| `text` | string | The full review body. |
| `pros` / `cons` | string | Separate pros and cons text, when the platform collects them separately. |
| `rating` / `ratingScale` | number | The review's rating and the scale it was given on (for example 8 out of 10 on TrustRadius). |
| `reviewerName` | string | The name the reviewer posted under. |
| `reviewerTitle` | string | The reviewer's job title, when disclosed. |
| `reviewerCompany` / `reviewerCompanySize` / `reviewerIndustry` | string | The reviewer's company, its size band, and its industry, when disclosed. |
| `reviewerReviewCount` | number | How many reviews that person has posted on the platform, a trust signal. |
| `reviewerCountry` | string | The reviewer's country, where the platform exposes it. |
| `verified` | boolean | Whether the platform marked the reviewer or review as verified. |
| `incentivized` | boolean | Whether the review was solicited, for example through a referral or discount program. |
| `reviewSource` | string | How the review was collected, for example organic or invited. |
| `helpfulCount` | number | How many people marked the review helpful or liked it. |
| `companyReply` | string | The vendor's public reply to the review, when present. |
| `date` | string | When the review was posted. |
| `experiencedDate` | string | On Trustpilot, when the reviewer actually used the product, distinct from the posted date. |
| `url` | string | A direct link to the review, when the platform provides one. |
| `sourceUrl` | string | The review page this record was scraped from. |
| `scrapedAt` | string | Timestamp of when this record was collected. |

### 💰 Pricing

Software Review Scraper runs on the Apify pay-per-result model. You only pay
for what you use, empty runs cost nothing, and there's no subscription
required. Apify's free monthly usage credits cover small test runs before
you commit to a larger job.

### ⭐ Enjoying Software Review Scraper?

<table width="100%">
<tr>
<td style="padding:20px 24px 14px;background:#F0FDFA;border:1px solid #99F6E4;border-left:5px solid #0D9488;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">If this saved you from checking three review sites by hand, a rating helps.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other competitive intelligence analysts and product teams find this Actor. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#0D9488;border:1px solid #99F6E4;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/software-review-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### 🛠️ Tips for better runs

- Set `platforms` to just the site or sites you need. A single-platform run
  is faster and uses less of your run budget than scraping all three.
- Combine `starRatings` with `reviewKeyword` for a tight battlecard export,
  for example only 1 and 2 star reviews that mention "support" or "pricing".
- Set `maxReviewsPerPlatform` to a small number first when testing a new
  product, then raise it once you know the run looks right.
- Leave the default proxy configuration in place. All three platforms run
  active bot protection, so the residential proxy default is required, not
  optional.

### ❓ FAQ

**Which review platforms does this Actor cover?**
Capterra, TrustRadius, and Trustpilot. These three consistently return
complete, reliable review data on every run, so this Actor stays focused on
sources it can deliver on every time rather than promising a longer list it
can't back up consistently.

**Can I scrape just Capterra reviews, or just Trustpilot reviews?**
Yes. Set `platforms` to a single site and this Actor behaves like a
dedicated Capterra scraper, TrustRadius scraper, or Trustpilot review
scraper, without the other two running.

**Does this work as a Trustpilot review API?**
Yes. Point it at a Trustpilot business page or a company domain and it
returns every review as structured data, ready to pull through the Apify
API or a webhook, no manual export needed.

**Can I search by product name instead of pasting a URL?**
Yes. Type a product name like Slack or a company domain like asana.com, and
this Actor finds the matching review page on every platform you selected
automatically. For Trustpilot specifically, a bare product name is guessed
as a `.com` domain, which is wrong for a product on another domain. Pass the
exact domain (or a full review URL) for guaranteed accuracy on Trustpilot.

**What does "incentivized" mean?**
Some reviews are solicited through referral programs, discounts, or
contests. The `incentivized` field flags these separately from organic
reviews, so you can weigh them differently.

**How do star ratings compare across platforms?**
Every rating is normalized to a 5-star scale. TrustRadius scores out of 10
convert automatically, so filtering by `starRatings` works the same way
across all three platforms.

**Is this legal?**
This Actor only collects review data that is already publicly visible on
each platform's review pages. You are responsible for how you use the data,
including compliance with each platform's terms of service and any
applicable data protection law in your jurisdiction.

**What if I need a feature this Actor doesn't have?**
Open an issue in the Actor's Issues tab in Apify Console, or reach out
through Apify's support. Custom scraping projects are also available on
request.

### 🔗 Other actors

- [Serchen Scraper: B2B Software Reviews & Directory Leads](https://apify.com/getascraper/serchen-scraper) ↗ - reviews and vendor listings from Serchen's B2B software directory.
- [TeamBlind Reviews Scraper: Tech Employer Ratings](https://apify.com/getascraper/teamblind-reviews-scraper) ↗ - anonymous employer reviews and ratings from tech workers on Blind.
- [Moz Domain Authority Scraper: Bulk DA & SEO Stats](https://apify.com/getascraper/moz-scraper) ↗ - domain authority and competitive SEO metrics for any list of domains.
- [RapidAPI Hub Scraper: API Listings, Metrics and Developer Data](https://apify.com/getascraper/rapidapi-scraper) ↗ - listings, pricing, and usage metrics from the RapidAPI developer marketplace.

# Actor input Schema

## `query` (type: `string`):

Type a product name (Slack, Jira, Zendesk), a company domain (asana.com), or a full review-page URL. Names and domains are resolved to each selected platform automatically. TrustRadius and Trustpilot resolve directly; Capterra is looked up by search. For Trustpilot, a bare name is guessed as name.com, which is wrong for companies on another domain (for example notion.so) - pass the exact domain or a full review URL for guaranteed accuracy. A full URL is scraped as-is.

## `startUrls` (type: `array`):

Paste one or more exact review-page URLs from Capterra, TrustRadius, or Trustpilot, mixed if you like. Use this instead of, or alongside, the product name above when you want to target exact pages.

## `platforms` (type: `array`):

Only collect from these platforms. Leave all selected to scrape every URL you pasted. Handy when you paste a mix of URLs but want just some of the sources this run.

## `starRatings` (type: `array`):

Only keep reviews with these star ratings. Leave empty for all. Ratings are normalised to a 1 to 5 scale, so 4 also matches an 8/10 on TrustRadius. Pick 1 and 2 to surface only complaints for a battlecard, or 4 and 5 for testimonials.

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

Only keep reviews whose title or text contains this word or phrase, for example pricing, onboarding, or support. Leave blank to keep all reviews.

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

The most reviews to return per platform for the whole run, counted after the filters above. Keeps your run size and cost predictable.

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

A residential proxy is required: all three review sites are behind Cloudflare or CloudFront bot protection. Leave the default unless you have a specific reason to change it.

## Actor input object example

```json
{
  "query": "Slack",
  "startUrls": [],
  "platforms": [
    "capterra",
    "trustradius",
    "trustpilot"
  ],
  "starRatings": [],
  "reviewKeyword": "",
  "maxReviewsPerPlatform": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# 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 = {
    "query": "Slack",
    "startUrls": [],
    "platforms": [
        "capterra",
        "trustradius",
        "trustpilot"
    ],
    "starRatings": [],
    "reviewKeyword": "",
    "maxReviewsPerPlatform": 100,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/software-review-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 = {
    "query": "Slack",
    "startUrls": [],
    "platforms": [
        "capterra",
        "trustradius",
        "trustpilot",
    ],
    "starRatings": [],
    "reviewKeyword": "",
    "maxReviewsPerPlatform": 100,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/software-review-scraper").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 '{
  "query": "Slack",
  "startUrls": [],
  "platforms": [
    "capterra",
    "trustradius",
    "trustpilot"
  ],
  "starRatings": [],
  "reviewKeyword": "",
  "maxReviewsPerPlatform": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call getascraper/software-review-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=getascraper/software-review-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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