# TrustRadius Reviews Scraper (`tortuga/trustradius-scraper`) Actor

Scrape TrustRadius software reviews and product profiles: overall score, pros and cons, use cases, ROI, reviewer role, industry and company size, pricing and feature ratings. Any product or category page.

- **URL**: https://apify.com/tortuga/trustradius-scraper.md
- **Developed by:** [Trevor Ortega](https://apify.com/tortuga) (community)
- **Categories:** Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 reviews

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?

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

## TrustRadius Reviews Scraper

Scrape TrustRadius software reviews and product profiles: the 1-10 trScore, use cases, pros and cons, likelihood to recommend, return on investment, alternatives considered, other software used, usability / support / implementation ratings, per-feature ratings, reviewer job title, department, industry, company size and country, plus product pricing plans, feature scores, alternatives, integrations and awards. Works for any product, category or single review page.

Built for reliability: plain HTTP with browser TLS fingerprinting, no headless browser, no login. Reviews come from the server-rendered list the site itself shows (10 per page, real sorting and star / company-size filters applied by TrustRadius), and each review's own page is read for the full answer set. You pay per item, nothing else.

### What data does TrustRadius Reviews Scraper extract?

**Review items** (`mode: reviews`, default):

| Field | Description |
|---|---|
| `productSlug`, `productName`, `productUrl`, `vendor` | Product the review is about (`slack` in `/products/slack`) and its vendor |
| `reviewId`, `reviewSlug` | Stable review id (`6a72ca49c2147373c7cd803c`) and URL slug |
| `title` | Review headline |
| `overallRating`, `ratingScale` | TrustRadius score on its native 1-10 scale (`ratingScale` is always `10`) |
| `useCasesAndDeployment` | "Use Cases and Deployment Scope" answer |
| `pros`, `cons` | Lists of bullet points |
| `likelihoodToRecommend`, `likelihoodToRecommendText` | 1-10 score (equals the overall score on TrustRadius) and the "where it fits / where it doesn't" text |
| `returnOnInvestment` | ROI bullet points |
| `usabilityRating`, `usabilityText` | 1-10 usability score and explanation |
| `supportRating`, `supportText`, `implementationRating`, `implementationText`, `likelihoodToRenew`, ... | Further 1-10 sliders when the reviewer answered them (`null` otherwise) |
| `alternativesConsidered`, `alternativesText` | Products evaluated and why this one was chosen |
| `otherSoftwareUsed` | `[{productName, rating}]`, other tools the reviewer uses with their 1-10 rating |
| `featureRatings` | `[{feature, group, rating}]`, per-feature 1-10 ratings |
| `keyInsights` | Quick yes/no pulse (`valueprice`, `features`, `salesmarketing`, `implementation`, `buyagain`) |
| `answers` | Every published question and answer of the review as `{section, slug, question, type, answer, followup}`, so nothing is lost |
| `reviewerRole`, `reviewerJobType`, `reviewerDepartment` | Job title, job level ("Manager", "C-Level Executive"...) and department |
| `reviewerIndustry`, `companyName`, `companySize`, `reviewerCountry` | Industry, company, size band ("51-200 employees") and ISO country code |
| `yearsExperience`, `reviewerRoles` | Years using the product; roles such as `user`, `manager`, `decisionMaker` |
| `reviewDate`, `editedDate` | ISO dates (`2026-08-10`) |
| `grade` | TrustRadius review quality grade (A-D) |
| `isVetted`, `isVerified`, `isLinkedInVerified`, `isTrusted`, `isReseller` | Review vetting / verification flags |
| `isIncentivized`, `incentive`, `source` | Whether a gift card was offered (`TrustRadius`) and how the review was sourced (`CommunityInvite`, `RaaS`, ...) |
| `hasFullReview` | `true` when the review's own page was read (see **Fetch full reviews**) |
| `url`, `listingUrl` | Review permalink and the list page it was found on |

Reviewer names, photos, profile links and LinkedIn URLs are deliberately not collected.

**Product items** (`mode: products`): `slug`, `name`, `url`, `vendor`, `vendorUrl`, `description`, `longDescription`, `trScore` (1-10), `ratingCount` (all ratings), `reviewCount` (written reviews), `ratingDistribution` (score bands 9-10 / 7-8 / 5-6 / 3-4 / 1-2), `reviewerCompanySizes`, `reviewerDepartments`, `reviewerJobTypes`, `reviewerCountries`, `primaryCategory`, `categories`, `categoryUrls`, `startingPrice`, `startingPriceText`, `startingPricePeriod`, `startingPriceUnit`, `pricing` (plans with `name`, `price`, `priceText`, `period`, `unit`, `notes`), `pricingUrl`, `hasFreePlan`, `features` (per-feature `score`, `ratingCount`, `categoryAverage`), `featureList`, `alternatives` (name, URL, trScore, rating count), `integrations`, `awards` (full history with dates), `currentAwards`, `operatingSystems`, `prosSummary`, `consSummary`, `faq`, `topIndustries`, `isCustomerVerified`, `homepage`, `logoUrl`, `screenshots`.

**Category cards** (`mode: category`): `position`, `category`, `categorySlug`, `categoryUrl`, `slug`, `name`, `url`, `vendor`, `trScore`, `ratingCount`, `reviewCount`, `tagline`, `description`, `startingPrice`, `trialAvailable`, `awards`, `topFeatures`, `prosSummary`, `consSummary`, `homepage`, `pricingUrl`, `logoUrl`.

### How to use TrustRadius Reviews Scraper

1. Paste one or more URLs into **Start URLs**: a product page (`https://www.trustradius.com/products/slack`), its reviews page, a category page (`https://www.trustradius.com/categories/crm`) or a single review (`https://www.trustradius.com/reviews/slack-2026-08-05-00-29-43`).
2. Pick **What to scrape**: reviews (default), product profiles, or category cards.
3. Set **Max items** and, for category runs, **Max reviews per product** so the budget is spread across products.
4. Choose **Sort reviews** (most recent by default), optionally **Only these star ratings** (e.g. `1, 2, 3` for critical reviews) and **Only these company sizes** (`small`, `medium`, `large`).
5. Leave **Fetch full reviews** on for the complete answer set, or turn it off for a fast pass with title, score, use case, pros, cons and reviewer role / company size only.
6. Click **Start**. Results appear in the **Dataset** tab; export as JSON, CSV or Excel, or read them through the API.

### Input example

```json
{
  "startUrls": [
    { "url": "https://www.trustradius.com/products/slack/reviews" },
    { "url": "https://www.trustradius.com/categories/crm" }
  ],
  "mode": "reviews",
  "maxItems": 500,
  "maxReviewsPerProduct": 100,
  "sortReviews": "most_recent",
  "ratingFilter": [],
  "companySizeFilter": [],
  "fetchFullReviews": true
}
```

### Output example

```json
{
  "type": "review",
  "productSlug": "slack",
  "productName": "Slack",
  "productUrl": "https://www.trustradius.com/products/slack",
  "vendor": "Salesforce",
  "reviewId": "6a72ca49c2147373c7cd803c",
  "title": "Well Organized and Easy to Manage",
  "overallRating": 9,
  "ratingScale": 10,
  "useCasesAndDeployment": "My team uses Slack every day for communication between developer, tester, manager, QA...",
  "pros": ["Keep project discussions organized with separate channels.", "Quick direct messages help solve small issues without long meetings."],
  "cons": ["Too many notification can be distracting, even with notifications setting."],
  "likelihoodToRecommend": 9,
  "likelihoodToRecommendText": "Slack works very well for daily team communications, project discussions, bug tracking...",
  "returnOnInvestment": ["Faster communication between team members.", "Reduced the need for long email conversations"],
  "usabilityRating": 9,
  "alternativesConsidered": ["Microsoft Teams"],
  "alternativesText": "Before using Slack, I worked with Microsoft Teams. ... I found Slack easier for day-to-day communication.",
  "otherSoftwareUsed": [{ "productName": "Microsoft Teams", "rating": 9 }, { "productName": "Google Workspace", "rating": 8 }],
  "featureRatings": [{ "feature": "Chat", "group": "Communication", "rating": 10 }, { "feature": "Search", "group": "Project Management", "rating": 9 }],
  "keyInsights": { "valueprice": "yes", "features": "yes", "salesmarketing": "yes", "implementation": "yes", "buyagain": "yes" },
  "reviewerRole": "Full-stack developer",
  "reviewerJobType": "Professional",
  "reviewerDepartment": "Information Technology",
  "reviewerIndustry": "Computer Software",
  "companySize": "501-1000 employees",
  "reviewerCountry": "IND",
  "yearsExperience": 4,
  "reviewDate": "2026-08-10",
  "grade": "B",
  "isVetted": true,
  "isIncentivized": false,
  "source": "CommunityInvite",
  "hasFullReview": true,
  "url": "https://www.trustradius.com/reviews/slack-2026-08-05-00-29-43"
}
```

### How much does it cost?

Pay per item: $0.002 per review, $0.004 per product profile (two page fetches), $0.001 per category card, plus normal Apify platform usage. No start fee, no subscription. 1,000 full reviews cost about $2 in item fees plus a few cents of compute. With **Fetch full reviews** on, each review is one extra ~1 MB page fetch; on residential proxies that bandwidth is the main cost, so use datacenter proxies (the default, which worked in testing) unless you see blocks.

### How do I scrape all reviews of a product?

Use the product's reviews URL and raise **Max items** and **Max reviews per product**. TrustRadius lists 10 written reviews per page; the actor walks every page (Slack has 640+ written reviews on 65 pages). Sorting by **most recent** and scheduling the actor weekly is the cheapest way to keep a review feed up to date; deduplicate on `reviewId`.

### What is the difference between ratings and reviews?

TrustRadius shows two counts: `ratingCount` includes quick star ratings without text (10,000+ for Slack), `reviewCount` is the number of written reviews you can actually scrape (640+ for Slack). The score (`trScore`, `overallRating`) is always on a 1-10 scale; the site's star filter maps stars to score bands (5 stars = 9-10, 4 = 7-8, 3 = 5-6, 2 = 3-4, 1 = 1-2), and **Only these star ratings** uses the same mapping.

### Can I get only negative reviews?

Yes. Set **Only these star ratings** to `1, 2, 3` (scores 1-6) and **Sort reviews** to "Lowest rated". Filters are applied by TrustRadius itself, so you do not pay for reviews you do not want. **Only these company sizes** works the same way (`small` = 1-50, `medium` = 51-1,000, `large` = 1,001+ employees).

### Does it work with category pages?

Yes. A category URL such as `https://www.trustradius.com/categories/crm` is paginated automatically (25 products per page, 1,500 products in CRM). In reviews mode every product in the category is opened and up to **Max reviews per product** reviews are saved per product; in products mode each product gets a full profile with pricing plans, feature scores and awards; in category mode you get the ranking cards only, the cheapest way to list a whole category with trScores, review counts and starting prices.

### Does it work without login or a browser?

Yes. Everything comes from public pages served to anonymous visitors, read with plain HTTP requests and Chrome TLS fingerprinting. No account, cookies or headless browser, which keeps runs fast (about one second per review with full reviews on, ten reviews per second with it off) and cheap.

### Integrations and API

Use the run in Zapier, Make, n8n, Google Sheets, or call it from Python/Node with the Apify client. See the **API** tab for ready-made snippets. Schedule it to monitor new reviews of your product or your competitors.

### Is it legal to scrape TrustRadius?

This actor collects only publicly available data: review texts and ratings, reviewer job title, department, industry, company size band and country, and product / vendor business information. It does not collect reviewer names, photos, profile links or any contact details. You are responsible for how you use the data and for complying with TrustRadius' terms and applicable law.

### Support

Found a bug or need a field added? Open an issue in the **Issues** tab; it is usually answered within a day.

# Actor input Schema

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

TrustRadius product pages (https://www.trustradius.com/products/slack), review pages (…/products/slack/reviews), category pages (https://www.trustradius.com/categories/crm) or single review pages (https://www.trustradius.com/reviews/slack-2026-08-05-00-29-43). Category pages are paginated automatically and every product on them is processed in the selected mode.

## `mode` (type: `string`):

reviews: one item per user review (default). products: one detailed profile item per product (score, rating distribution, pricing plans, feature scores, alternatives, awards…). category: one card per product on category pages (name, trScore, review count, tagline, starting price, top features).

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

Stop after this many items in total (reviews, products or cards across all start URLs). Keeps cost predictable.

## `maxReviewsPerProduct` (type: `integer`):

Reviews mode only: cap per product, so a category run spreads the budget across products instead of spending it all on the first one.

## `fetchFullReviews` (type: `boolean`):

Open every review's own page to add return on investment, alternatives considered, other software used, usability / support / implementation ratings, per-feature ratings, key insights and reviewer country (one extra ~1 MB request per review). Turn off for a fast, cheap pass with title, score, use case, pros, cons, recommendation text and reviewer role / industry / company size only.

## `sortReviews` (type: `string`):

Order in which reviews are collected (matters when a cap is set). most\_recent is best for monitoring.

## `ratingFilter` (type: `array`):

Optional: keep only reviews in these star bands (TrustRadius maps its 1-10 score to 5 stars: 1 = score 1-2, 2 = 3-4, 3 = 5-6, 4 = 7-8, 5 = 9-10). E.g. \[1, 2, 3] for critical reviews. Leave empty for all.

## `companySizeFilter` (type: `array`):

Optional: keep only reviews from small (1-50 employees), medium (51-1,000) or large (1,001+) companies. Leave empty for all.

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

TrustRadius blocks datacenter IPs, so residential Apify Proxy is the default. Proxy usage is billed to your account.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.trustradius.com/products/slack/reviews"
    }
  ],
  "mode": "reviews",
  "maxItems": 100,
  "maxReviewsPerProduct": 100,
  "fetchFullReviews": true,
  "sortReviews": "most_recent",
  "ratingFilter": [],
  "companySizeFilter": [],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "startUrls": [
        {
            "url": "https://www.trustradius.com/products/slack/reviews"
        }
    ],
    "ratingFilter": [],
    "companySizeFilter": [],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("tortuga/trustradius-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 = {
    "startUrls": [{ "url": "https://www.trustradius.com/products/slack/reviews" }],
    "ratingFilter": [],
    "companySizeFilter": [],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("tortuga/trustradius-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 '{
  "startUrls": [
    {
      "url": "https://www.trustradius.com/products/slack/reviews"
    }
  ],
  "ratingFilter": [],
  "companySizeFilter": [],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call tortuga/trustradius-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tortuga/trustradius-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/tHqVp382JujANLCDc/builds/GA5NeKcM2TiyElbCF/openapi.json
