# TrustRadius Scraper: Reviews, Products & Comparisons (`fanndev/trustradius-scraper`) Actor

B2B software intelligence from TrustRadius: every verified review of a product (with the full questionnaire on request), product profiles with feature ratings and pricing, ranked category lists, alternatives by company size and head-to-head comparisons. No login.

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

## Pricing

from $1.40 / 1,000 results

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

## TrustRadius Scraper: Reviews, Products, Categories & Comparisons

Extract verified B2B software reviews, product profiles, ranked category lists, alternatives and head-to-head comparisons from [TrustRadius](https://www.trustradius.com) — as clean, structured JSON.

### Why use this actor

- **Every review of a product**, not just the first page — with pros, cons, rating, the reviewer's role, department, company size and industry, and how the review was sourced (incentivized or not).
- **The full review questionnaire on request**: feature-by-feature scores, usability, return on investment, alternatives the reviewer evaluated, other software they use, their country and buying role.
- **Product intelligence in one record**: trScore, 30+ feature ratings against the category average, pricing editions, awards, competitors, aggregated pros and cons, and the install base by industry.
- **Category rankings** with filters for company size, published pricing, free options, operating system and Top Rated winners.
- **Cheap monitoring**: reviews come newest first, so "only reviews since date X" stops as soon as it reaches older ones.
- No account, no login, no API key. Export to JSON, CSV or Excel, or schedule it on Apify.

### How it works

1. Pick a mode: **Reviews**, **Product details**, **Category products**, **Alternatives**, **Compare products** or **Category tree**.
2. Paste product slugs or TrustRadius URLs (`hubspot-crm` or `https://www.trustradius.com/products/hubspot-crm/reviews`), category slugs (`crm`) or comparisons (`hubspot-crm-vs-pipedrive`).
3. Run. Each result lands in the dataset as one row, tagged with a `recordType`.
4. Inputs that don't exist come back as an `ERROR` row saying so, instead of silently disappearing.

There are no scrapers, browsers or blocks to babysit — refused pages are retried automatically.

### Input

```json
{
    "mode": "reviews",
    "products": ["hubspot-crm"],
    "maxItems": 50,
    "reviewsNewerThan": "2026-09-01",
    "includeReviewDetails": true,
    "proxyConfiguration": {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}
}
```

```json
{
    "mode": "categoryProducts",
    "categories": ["crm"],
    "maxItems": 100,
    "companySize": "enterprise",
    "hasPricingOnly": true
}
```

| Field | Type | Description |
| --- | --- | --- |
| `mode` | string | `reviews`, `products`, `categoryProducts`, `alternatives`, `compare` or `categories`. |
| `products` | array | Product slugs or URLs — for Reviews, Product details and Alternatives. |
| `categories` | array | Category slugs or URLs — for Category products. Run **Category tree** to list every slug. |
| `comparisons` | array | `product-a-vs-product-b`, `product-a, product-b`, or a comparison URL. |
| `maxItems` | integer | Reviews per product, or products per category (default 100). |
| `reviewsNewerThan` | date | Reviews: stop at the first review published before this date. |
| `includeReviewDetails` | boolean | Reviews: add the full questionnaire (one extra page per review). |
| `includePricing` | boolean | Product details: add the pricing page (price quotes from reviewers, support, deployment). Default on. |
| `companySize` | string | Category products: `any`, `small-business`, `mid-sized`, `enterprise`. |
| `topRatedOnly`, `hasPricingOnly`, `freeOptionOnly` | boolean | Category products filters. |
| `operatingSystem` | string | Category products: `any`, `windows`, `mac`, `linux`. |
| `deepPagination` | boolean | Category products: go past TrustRadius's 1,000-product listing limit (see Notes). |
| `maxConcurrency` | integer | Pages fetched in parallel (default 3). |
| `proxyConfiguration` | object | Residential proxy recommended. |

### Output

Every row has `_input`, `_source`, `_scrapedAt` and `recordType`.

#### Reviews (`recordType: REVIEW`)

Real output, long text truncated:

```json
{
  "_input": "hubspot-crm",
  "recordType": "REVIEW",
  "productSlug": "hubspot-crm",
  "productName": "HubSpot CRM",
  "reviewId": "6a9acd7749470e91003cfdfc",
  "url": "https://www.trustradius.com/reviews/hubspot-crm-2026-09-04-08-53-58",
  "title": "You can't miss HubSpot if you are considering a CRM",
  "rating": 8,
  "datePublished": "2026-09-09T15:50:19.121Z",
  "source": {"trusted": true, "incentive": "TrustRadius", "source": "RaaS"},
  "reviewer": {
    "isPublic": false,
    "title": "Marketing & Sales director",
    "jobType": "Manager",
    "department": "Sales",
    "companySize": "11-50 employees",
    "yearsExperience": 3,
    "verification": {"isVerified": false, "verifiedBy": "LinkedIn"}
  },
  "verification": {"isVerified": false, "isVetted": true, "isReseller": false},
  "pros": ["Simple UI", "Integration abilities", "Easy configuration and customisation"],
  "cons": ["Pricing can be adapted to smaller companies", "Rights management can be tricky to master", "Marketing module should be more powerful in standard"],
  "answers": [
    {"question": "Use Cases and Deployment Scope", "type": "text", "text": "I used HubSpot and deployed it in my previous company as there was no CRM in place. HubSpot seemed to be the easiest and most powerful CRM amongst all the potential candidates…"},
    "… 3 more"
  ],
  "details": {
    "wordCount": 340,
    "reviewerProfile": {
      "companySize": "11-50 employees",
      "industry": "Computer Software",
      "countryCode": "FRA",
      "roles": {"user": true, "manager": true, "decisionMaker": true, "implementer": false},
      "currentExperience": "recent"
    },
    "alsoReviewedProducts": [{"slug": "freshsales", "name": "Freshsales"}],
    "details": [
      {"section": "Overall Satisfaction", "slug": "likelihood-to-recommend", "question": "Likelihood to Recommend", "type": "slider", "value": 8},
      {"section": "Overall Satisfaction", "slug": "feature-ratings", "question": "HubSpot CRM Feature Ratings", "type": "features",
       "value": [{"feature": "Customer data management / contact management", "value": 8}, {"feature": "Workflow management", "value": 8}, "… 25 more"]},
      {"section": "Overall Satisfaction", "slug": "alternatives-evaluated", "question": "Alternatives Considered", "type": "competitors", "value": ["Freshsales"]},
      "… 7 more"
    ]
  }
}
```

| Field | Description |
| --- | --- |
| `rating` | The reviewer's score out of 10. |
| `source` | How TrustRadius sourced the review — `incentive` tells you whether it was incentivized. |
| `reviewer` | Role, department, company size, industry, years of experience. Name, company, photo and LinkedIn appear **only when the reviewer published the review under their name**. |
| `pros`, `cons` | The reviewer's own bullet lists. |
| `answers` | Every question/answer shown on the review. |
| `details` | With `includeReviewDetails`: every answered question of the full questionnaire, feature ratings by name, reviewer country and buying role. |

#### Product details (`recordType: PRODUCT_DETAILS`)

```json
{
  "_input": "hubspot-crm",
  "recordType": "PRODUCT_DETAILS",
  "slug": "hubspot-crm",
  "name": "HubSpot CRM",
  "rating": {"avg": 8.4, "count": 5522},
  "featureRatings": [
    {"name": "Customer data management / contact management", "score": 8.9, "count": 1661, "categoryAverage": 8.6},
    {"name": "Workflow management", "score": 8.4, "count": 1631, "categoryAverage": 8.3},
    "… 29 more"
  ],
  "industryInstallShare": {
    "totalInstalls": 41520,
    "industries": [
      {"naicsCode": "54", "naicsName": "Professional, Scientific, and Technical Services", "companyCount": 10549, "installSharePct": 25.4},
      "… 2 more"
    ]
  },
  "awards": [{"title": "Top Rated 2022", "awardType": "toprated"}, "… 28 more"],
  "prosAndCons": {"pros": ["Easy to use", "User friendly", "… 8 more"], "cons": ["Mobile app", "Email address", "… 8 more"]},
  "pricingPage": {
    "editionPricing": [{"name": "Free Forever", "price": "$0", "otherTerms": "Per Month [Unlimited Users]"}, {"name": "CRM Bundle", "price": "$50", "terms": {"period": "per month"}}],
    "freeAvailable": true,
    "trialAvailable": true,
    "support": {"channelsFree": ["Live Chat", "Forum/Community", "… 2 more"], "channelsPaid": ["Phone", "Live Chat", "… 5 more"]},
    "pricingAlternatives": [{"name": "Sugar Sell (SugarCRM)", "editionPricing": [{"name": "Essentials", "price": "$19"}, "… 3 more"]}, "… 2 more"],
    "pricingQuotes": ["… what reviewers say about the price, with the review it came from"]
  }
}
```

The record also carries `vendor`, `categories`, `competitors`, `featureGroupRatings`, `screenshots`, `faq`, `interviews` (featured reviews) and more, as TrustRadius publishes them.

#### Category products (`recordType: PRODUCT`)

```json
{
  "_input": "crm",
  "recordType": "PRODUCT",
  "rank": 1,
  "categorySlug": "crm",
  "categoryName": "Customer Relationship Management (CRM)",
  "slug": "bigin-by-zoho-crm",
  "name": "Bigin by Zoho CRM",
  "url": "https://www.trustradius.com/products/bigin-by-zoho-crm",
  "vendorName": "Zoho",
  "trScore": 8.832,
  "ratingAvg": 8.8,
  "ratingCount": 285,
  "reviewCount": 167,
  "startingPrice": 9,
  "trialAvailable": true,
  "product": {"… full product object: vendor, feature ratings, pros and cons, awards, pricing editions": "…"}
}
```

With a filter set, `rank` is empty and `filterRank` holds the position in the filtered list.

#### Alternatives (`recordType: ALTERNATIVE`)

```json
{
  "_input": "hubspot-crm",
  "recordType": "ALTERNATIVE",
  "forProduct": "hubspot-crm",
  "slug": "zoho-crm",
  "name": "Zoho CRM",
  "vendorName": "Zoho",
  "ratingAvg": 8.4,
  "ratingCount": 1038,
  "reviewCount": 314,
  "featureRatings": [{"name": "Customer data management / contact management", "trScore": 8.731, "count": 280}, "… 30 more"],
  "lists": {"competitors": 1}
}
```

`lists` says where the product appears: `competitors` (TrustRadius's curated list) and `alternatives_all`, `alternatives_small`, `alternatives_medium`, `alternatives_large` (alternatives per company size), with its position in each.

#### Compare products (`recordType: COMPARISON`)

```json
{
  "_input": "hubspot-crm-vs-pipedrive",
  "recordType": "COMPARISON",
  "products": [
    {
      "slug": "hubspot-crm", "name": "HubSpot CRM", "avg": 8.9, "ratingsCount": 1513,
      "insights": {"buyAgain": {"yesCount": 1607, "noCount": 55}, "valuePrice": {"yesCount": 1204, "noCount": 34}},
      "pricingEditions": [{"edition": "Free Forever", "price": "$0", "terms": "Per Month [Unlimited Users]"}, {"edition": "CRM Bundle", "price": "$50", "terms": "per month"}]
    },
    {"slug": "pipedrive", "name": "Pipedrive", "avg": 7.5, "ratingsCount": 49, "pricingEditions": [{"edition": "Essential", "price": "$24", "terms": "per month per seat"}, "… 4 more"]}
  ],
  "featureGroups": [
    {
      "heading": "Sales Force Automation",
      "features": [
        {"name": "Customer data management / contact management", "cells": [{"slug": "hubspot-crm", "avg": 8.9, "isWinner": true}, {"slug": "pipedrive", "avg": 8.7, "isWinner": false}]},
        "… 8 more"
      ]
    },
    "… 9 more"
  ],
  "testimonials": ["… 25 reviewer quotes comparing the two products"]
}
```

#### Category tree (`recordType: CATEGORY`)

```json
{
  "recordType": "CATEGORY",
  "slug": "crm",
  "name": "Customer Relationship Management (CRM)",
  "url": "https://www.trustradius.com/categories/crm",
  "path": ["Customer Relationship Management (CRM)"],
  "groups": ["Revenue Operations - Sales"]
}
```

946 categories at the time of writing.

### Notes and limits

- **Reviews**: no depth limit — every review of a product can be collected (HubSpot CRM: all 1,762). Ten reviews per page, newest first.
- **Review details** add one page per review and take longer; leave them off when you only need pros, cons and ratings.
- **Category lists stop at 1,000 products** on TrustRadius, and its pages overlap slightly (duplicates are removed, so a 1,000 walk yields ~890 unique products on CRM). `deepPagination` re-reads the category in its other orderings and filters and merges the results: on CRM it reached 1,060 unique products, at about six times the page requests. Use it only when you need the long tail.
- **Reviewer identity** follows what TrustRadius shows: anonymous reviews never include a name, company, photo or LinkedIn link.
- Residential proxy is recommended for large runs.

# Actor input Schema

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

Reviews: every review of the products below. Product details: rating, feature ratings, pricing, awards, competitors, install base. Category products: the ranked product list of the categories below. Alternatives: competitors and alternatives by company size. Compare: head-to-head comparison pages. Category tree: every category with its slug.

## `products` (type: `array`):

For Reviews, Product details and Alternatives. A product slug (hubspot-crm) or any TrustRadius product URL (https://www.trustradius.com/products/hubspot-crm/reviews).

## `categories` (type: `array`):

For Category products. A category slug (crm) or a category URL (https://www.trustradius.com/categories/crm). Run the Category tree mode to see every slug.

## `comparisons` (type: `array`):

For Compare products. Two product slugs as 'hubspot-crm-vs-pipedrive' or 'hubspot-crm, pipedrive', or a /compare-products/ URL.

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

Reviews per product, or products per category. Other modes return everything on the page.

## `reviewsNewerThan` (type: `string`):

Reviews: stop at the first review older than this date (YYYY-MM-DD). Reviews are listed newest first, so this makes daily or weekly monitoring cheap.

## `includeReviewDetails` (type: `boolean`):

Reviews: also open each review's own page for the answers the list does not show -- feature-by-feature ratings, usability score, return on investment, alternatives the reviewer evaluated, other software used, reviewer's country and roles. One extra page per review.

## `includePricing` (type: `boolean`):

Product details: also read the product's pricing page for reviewer price quotes, support channels, deployment types and priced alternatives. One extra page per product.

## `companySize` (type: `string`):

Category products: rank the list for this company size.

## `topRatedOnly` (type: `boolean`):

Category products: only products holding a current TrustRadius Top Rated award.

## `hasPricingOnly` (type: `boolean`):

Category products: only products that publish pricing on TrustRadius.

## `freeOptionOnly` (type: `boolean`):

Category products: only products with a free plan or free option.

## `operatingSystem` (type: `string`):

Category products: only products that run on this operating system.

## `deepPagination` (type: `boolean`):

TrustRadius stops paging a category at 1,000 products. When no filter is set, this re-walks the category in its other orderings and slices and merges them without duplicates to reach further.

## `filterCategoryTree` (type: `boolean`):

Category tree: return only categories whose slug or name matches the Categories list above.

## `maxConcurrency` (type: `integer`):

How many pages are fetched at the same time. Higher is faster; lower is gentler and gets fewer refused pages (those are retried automatically).

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

Residential proxies are recommended for reliable results. A page that is refused is retried automatically from a new IP.

## Actor input object example

```json
{
  "mode": "reviews",
  "products": [
    "hubspot-crm"
  ],
  "categories": [
    "crm"
  ],
  "comparisons": [
    "hubspot-crm-vs-pipedrive"
  ],
  "maxItems": 50,
  "includeReviewDetails": false,
  "includePricing": true,
  "companySize": "any",
  "topRatedOnly": false,
  "hasPricingOnly": false,
  "freeOptionOnly": false,
  "operatingSystem": "any",
  "deepPagination": false,
  "filterCategoryTree": false,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

All review, product, category, alternative, comparison and error records produced by this run.

# 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 = {
    "mode": "reviews",
    "products": [
        "hubspot-crm"
    ],
    "categories": [
        "crm"
    ],
    "comparisons": [
        "hubspot-crm-vs-pipedrive"
    ],
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("fanndev/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 = {
    "mode": "reviews",
    "products": ["hubspot-crm"],
    "categories": ["crm"],
    "comparisons": ["hubspot-crm-vs-pipedrive"],
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("fanndev/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 '{
  "mode": "reviews",
  "products": [
    "hubspot-crm"
  ],
  "categories": [
    "crm"
  ],
  "comparisons": [
    "hubspot-crm-vs-pipedrive"
  ],
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call fanndev/trustradius-scraper --silent --output-dataset

```

## MCP server setup

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