TrustRadius Reviews Scraper
Pricing
from $5.00 / 1,000 review scrapeds
TrustRadius Reviews Scraper
Scrape TrustRadius B2B software reviews: ratings (0–10), pros/cons, firmographics, feature scores. Product URL, slug, or search. HTTP-first with Residential + Firefox fallback. MCP-ready.
Pricing
from $5.00 / 1,000 review scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
For SaaS competitive analysts, product marketers, and MCP agents who need structured B2B review evidence. This Actor extracts public TrustRadius software reviews into flat dataset rows with native TrustRadius scores (zero to ten), titles, bodies, best-effort pros/cons, and reviewer firmographics when the public page exposes them. Provide a product URL, product slug, or search query — then download JSON/CSV/Excel or pull rows via the Apify API.
Focused standalone workflow
This Actor is a focused standalone TrustRadius workflow. An analyst pastes a Slack product reviews URL, keeps Apify Residential US on, caps maxReviewsPerProduct at a small number for a smoke test, then exports review rows into a competitor matrix. For multi-platform review aggregation across G2/Capterra/TrustRadius after the TrustRadius shortlist, use software-reviews-all-in-one-scraper. For Capterra-only depth, use capterra-reviews-scraper.
Best fit
Choose this Actor when you already know a TrustRadius product URL or slug and need native TrustRadius scores plus public review text for competitive research or agent pipelines.
It works well for bounded product deep-dives and search-to-reviews discovery. Pair it with software-reviews-all-in-one-scraper when the next step is a cross-platform corpus rather than TrustRadius alone.
Practical scenario
A competitive analyst pastes the Slack TrustRadius reviews URL, sets maxReviewsPerProduct to 10, and leaves Residential US as the default proxy. The run returns review rows with rating, reviewTitle, reviewBody, and optional firmographics. Next they filter starRating to high-score bands and feed themes into a battlecard.
Best results
- Prefer exact product URLs or known slugs over broad search when you need depth on one product.
- Keep Apify Residential US enabled; bare IPs commonly hit Cloudflare challenges.
- TrustRadius scores use a native zero-to-ten scale — use
ratingOutOf5only as a convenience helper for classic five-star style filters. - Start with
maxReviewsPerProduct: 1to confirm the slug, then raise the cap for production batches. - When Cloudflare challenges every path and zero rows are saved, the Actor records
UPSTREAM_FAILEDwith an honest upstream outcome instead of empty billed rows.
Quick start input
{"startUrls": [{ "url": "https://www.trustradius.com/products/slack/reviews" }],"maxReviewsPerProduct": 10,"sortReviewsBy": "newest","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
Slug mode:
{"productSlugs": ["notion"],"maxReviewsPerProduct": 5}
Search mode:
{"searchQuery": "Slack","maxProductsPerSearch": 1,"maxReviewsPerProduct": 3,"includeReviews": true}
Input reference
| Field | Type | What it controls |
|---|---|---|
startUrls | array | TrustRadius product/reviews URLs (normalized to /products/{slug}/reviews). |
productSlugs | array | Slugs without a full URL (for example slack, notion). |
searchQuery | string | Product name search, then scrape matched products. |
maxReviewsPerProduct | integer | Cap per product (default 50, prefill 1). |
maxProductsPerSearch | integer | Cap on search matches (default 5). |
includeReviews | boolean | Search mode: scrape reviews (default) vs product cards only. |
includeProductSummary | boolean | Emit a product card when reviews are off. |
sortReviewsBy | enum | newest or helpful. |
starRating | array | Market-style 1–5★ bands mapped onto TrustRadius 0–10. |
companySize | array | small / medium / large when firmographics exist. |
proxyConfiguration | object | Prefer Apify Residential US; Unblocker is used automatically as a separate recovery path when Residential yields zero reviews. |
Output data
| Field | Description |
|---|---|
recordType | review or product |
productName / productSlug / productUrl | Product context |
rating | Native TrustRadius score (zero to ten) |
ratingOutOf5 | Derived half-scale helper |
reviewTitle / reviewBody | Public review text |
pros / cons | When the HTML card exposes them |
reviewer | name, title, company, size, industry when public |
reviewDate / reviewUrl | Provenance |
scrapedAt | ISO 8601 timestamp |
Example review row:
{"platform": "trustradius","recordType": "review","productName": "Slack","productSlug": "slack","productUrl": "https://www.trustradius.com/products/slack/reviews","rating": 9,"ratingOutOf5": 4.5,"reviewTitle": "Essential for remote collaboration","reviewBody": "Channels keep our distributed team organized...","pros": ["Fast search", "Integrations"],"cons": ["Notification noise"],"reviewer": {"name": "Alex R.","title": "IT Manager","companySize": "201-1000","industry": "Software"},"reviewDate": "2025-11-02T00:00:00.000Z","scrapedAt": "2026-09-22T12:00:00.000Z"}
You can download the dataset as JSON, HTML, CSV, or Excel.
Pricing
Pay per event + platform usage (isPPEPlatformUsagePaidByUser: true). The live Pricing tab is the current source of truth after deployment.
| Event | Price | When charged |
|---|---|---|
apify-actor-start | $0.00005 | Once per run (memory-scaled) |
review-scraped (primary) | $0.005 | Each review row saved |
product-found | $0.01 | Each product card when reviews are not scraped |
Worked cost example for a Slack prefill-style run with one review: $0.00005 + $0.005 = $0.00505 in named PPE events, plus Residential/browser platform usage. Invalid inputs and truthful empty matches skip review-scraped charges; Cloudflare-challenged runs with zero rows likewise skip review events.
API example
curl "https://api.apify.com/v2/acts/khadinakbar~trustradius-reviews-scraper/runs?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"startUrls": [{"url": "https://www.trustradius.com/products/slack/reviews"}],"maxReviewsPerProduct": 10,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}'
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('khadinakbar/trustradius-reviews-scraper').call({startUrls: [{ url: 'https://www.trustradius.com/products/slack/reviews' }],maxReviewsPerProduct: 10,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
MCP / AI agent
MCP tool name: apify--trustradius-reviews-scraper.
Scrape Slack TrustRadius public reviews with Residential US, return dataset rows, and note COMPLETE vs VALID_EMPTY vs UPSTREAM_FAILED.
Agent guidance: prefer startUrls / productSlugs over broad search; keep Residential US on; page via maxReviewsPerProduct; read OUTPUT/RUN_SUMMARY for outcome and charges. Partial runs keep successful rows and mark PARTIAL.
Outcomes
| Outcome | Meaning |
|---|---|
COMPLETE | Targets produced useful rows |
PARTIAL | Some targets incomplete with warnings |
VALID_EMPTY | Valid targets, no matching public reviews (or filters excluded all) |
INVALID_INPUT | No usable TrustRadius targets |
UPSTREAM_FAILED | Cloudflare/CSR block with zero useful rows |
CONFIG_ERROR | Required proxy/config unavailable |
Every run writes OUTPUT and RUN_SUMMARY with itemsPushed and chargedEventCounts.
Scope and recovery guidance
Provide Residential US for Cloudflare-protected TrustRadius pages. Start with known URLs or slugs, validate one product, then scale caps. When CSR review loading stays empty after retries (including a separate Unblocker recovery attempt), the Actor records UPSTREAM_FAILED so operators can adjust proxy settings while keeping the contract honest. Invalid hosts resolve as INVALID_INPUT with zero review charges.
Builder's note
I built this Actor after TrustRadius stopped embedding review[] arrays inside SoftwareApplication JSON-LD and moved public reviews behind a client-rendered loader. HTTP-first still wins when the shell is warm, but the reliable path is Playwright Firefox waiting out ReviewsAll_loading, scrolling for lazy cards, and capturing review JSON from network responses. In my testing, Slack/Notion/Asana clear Residential consistently, while some high-traffic CRM/video products remain Cloudflare-sensitive — so the runtime records an honest block when aggregate review counts exist but zero cards extract.
Differentiation
Dedicated TrustRadius depth with native zero-to-ten scores, MCP-ready schemas, PPE + usage pass-through, Residential-first transport plus separate Unblocker recovery, and outcome contracts that refuse hollow soft-success.
Legal / responsible use
Use only for lawful purposes and respect TrustRadius terms of service and applicable privacy law. Public pages only — no login bypass. Reviewer names and firmographics may appear when TrustRadius shows them publicly; callers need a lawful basis for any personal data use. TrustRadius is a trademark of its owner. This independent Actor is not affiliated with, associated with, or endorsed by TrustRadius.