TrustRadius $1π° Reviews, Products, Category & Compare Scraper
Pricing
from $1.00 / 1,000 results
TrustRadius $1π° Reviews, Products, Category & Compare Scraper
π° $1 per 1,000 results TrustRadius all-in-one scraper β product, reviews, category & compare URLs in one actor. Flat per-review rows with full Q&A sections, reviewer firmographics & LinkedIn URL, dual 0β10/0β5 ratings, awards & featureList. Sitemap-driven bulk mode. Pure HTTP, no browser.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
TrustRadius Reviews, Products, Categories & Compare Scraper
How it works

All-in-one TrustRadius.com scraper β paste any mix of URL kinds in the same input list and the actor auto-classifies each one:
| Input | Row(s) emitted |
|---|---|
Any product URL β /products/{slug}, /products/{slug}/reviews, or /products/{slug}/reviews/all | 1 product row + N review rows β all three variants are treated identically. The actor fetches both the product page (rich SoftwareApplication JSON-LD with name/description/awards/featureList/vendor + 5 sample reviews with reviewer.profilePicUrl + linkedInUrl nested) and /reviews/all (paginated full review thread, 10 per page). Review count capped by maxReviewsPerProduct. |
Category URL β /categories/{slug} (e.g. collaboration, crm) | N category-product rows β one per product in the category (rowType: "category-product"). Each row carries a nested categoryAggregate with description, total count, FAQs (from JSON-LD FAQPage), and related categories. |
Compare URL β /compare-products/{slug-a}-vs-{slug-b} | 1 compare row: side-by-side products with ratings, vendor info, logos |
Sitemap URL β /sitemap_index.xml | Bulk discovery β expands the sitemap into product URLs and scrapes the first maxProductsFromSitemap (default 50). |
Bare product slugs (slack) also work. JSON + CSV.
One product URL β product overview + every review. You don't need to paste both
/reviewsand/reviews/allβ any product-shaped URL gives you the full coverage. The three variants (/products/slack,/products/slack/reviews,/products/slack/reviews/all) all dedupe to the same canonical URL internally.
Reviews are flat with the aggregate denormalized into every row. Every dataset row from a reviews URL is a single review. The thread-level aggregate (rating, awards, features, vendor info, total reviews, pages scraped) lives under each row's
productAggregatefield β duplicated on every review row from the same URL, but that keeps each row self-contained and makes billing trivial: one row = one paidoutputrecordevent.
Pure HTTP. No Puppeteer, no Playwright, no headless Chromium. TrustRadius is open (no Cloudflare) so we use a simple impit Firefox fingerprint at concurrency 5.
TrustRadius's anti-bot posture is far gentler than Capterra's or G2's β there's no Cloudflare gate, no challenge JS, no IP banning at our request volume. We confirmed this with parallel probes across 9 URL kinds: every one returned 200 on the first impit attempt through Apify Residential US. robots.txt is permissive β /products/, /categories/, /compare-products/, and /sitemap_index.xml are all crawl-allowed.
So no warmup, no session rotation, no cookie jar. We fan out parallel requests through a sliding-window scheduler (default concurrency 5).
Data architecture
- Product / reviews / category pages use Next.js App-router with
__next_f.pushRSC streaming + comprehensive JSON-LD. We extract structured data from both sources:SoftwareApplicationJSON-LD shipsaggregateRating,featureList,award,offers, plus 5 fully-structuredreview[]objects (Person author + Rating + reviewBody + datePublished).- The RSC stream carries
reviewer:{firstName, lastName, jobTitle, companyName, companySize, department, user:{pictureUrl, linkedInProfileUrl, linkedInIsVerified}}blocks per visible review β same brace-balanced extractor we proved on Capterra.
/reviews/all?page=Nis the paginated review thread: 10 visible<article>cards per page, JSON-LD only carriesaggregateRatinghere. We DOM-walk articles for title + date + rating + section headings (Q&A) and align them with RSC reviewer blocks for firmographics./categories/{slug}hasItemListJSON-LD (product cards),FAQPageJSON-LD (editorial Q&A), andBreadcrumbListβ three structured sources we merge into one row per product./compare-products/{a}-vs-{b}is HTML-only (6 MB of editorial content; no embedded data JSON). We extract product info per slug via visible card walking β best-effort in v1.
Input
| Field | Type | Required | Notes |
|---|---|---|---|
startUrls | string[] | yes | Any mix of product / reviews / category / compare / sitemap URLs (or bare product slugs). Auto-classified. |
maxItems | integer | no | Safety cap on total dataset rows, not URLs. A reviews URL with 100 reviews emits 100 review rows; a category URL with 50 products emits 50 rows. Default 1000. Free-tier users are capped at 100. |
maxReviewsPerProduct | integer | no | Max individual review rows emitted per reviews URL. TrustRadius paginates 10 per page; Slack has ~10,000 reviews across ~1,000 pages β cap aggressively. Default 100, 0 = no limit. |
maxProductsPerCategory | integer | no | Max category-product rows emitted per category URL. Default 50, 0 = no limit. |
maxProductsFromSitemap | integer | no | When you paste a sitemap URL, the actor discovers product URLs and scrapes the first N. Default 50. |
normalizeRatings | boolean | no | Add averageNormalized (0β5 scale) alongside native 0β10. Default true. |
includeReviewSections | boolean | no | Include full per-question sections[] on each review row. Adds 1β3 KB per row but captures TrustRadius's unique Q&A structure. Default true. |
maxConcurrency | integer | no | Parallel HTTP requests. TrustRadius is open β concurrency up to 10 is safe. Default 5. |
maxRequestRetries | integer | no | Per-URL retry budget on 5xx/network errors. Default 3. |
proxy | object | no | Apify Residential US recommended. |
Example input
{"startUrls": ["https://www.trustradius.com/products/slack","https://www.trustradius.com/categories/collaboration","https://www.trustradius.com/compare-products/slack-vs-microsoft-teams"],"maxItems": 100,"maxReviewsPerProduct": 30,"maxProductsPerCategory": 20,"normalizeRatings": true,"includeReviewSections": true,"proxy": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US" }}
That yields 52 rows on Slack: 1 product row (with 5 rich nested review snippets + LinkedIn URLs) + 30 flat review rows (paginated /reviews/all, with productAggregate nested) + 20 category-product rows + 1 compare. Use maxItems / maxReviewsPerProduct / maxProductsPerCategory to cap per-URL fan-out.
Output schema
Four row shapes, distinguished by the rowType field: product, review, category-product, compare.
rowType: "product"
{"rowType": "product","productUrl": "https://www.trustradius.com/products/slack/reviews","productSlug": "slack","name": "Slack","description": "Slack brings team communication and collaboration into one placeβ¦","applicationCategory": "BusinessApplication","categories": ["Collaboration"],"rating": {"average": 9,"averageNormalized": 4.5, // 0β5 scale for cross-platform consumers"count": 9979,"bestRating": 10,"worstRating": 1},"vendor": {"name": "Salesforce","url": "https://slack.com/β¦"},"offer": {"price": 0,"priceCurrency": "USD","offerUrl": null},"awards": [{ "title": "Buyer's Choice 2026", "year": "2026" }],"features": ["Task Management", "Gantt Charts", "Scheduling", /* +20 more */],"reviewSnippets": [ /* up to 5 fully-structured reviews from JSON-LD */ ],"breadcrumbs": [ /* ... */ ],"scrapedAt": "2026-05-12T17:36:00.000Z"}
rowType: "review" (one per individual review)
{"rowType": "review","reviewsUrl": "https://www.trustradius.com/products/slack/reviews/all","productSlug": "slack","productName": "Slack","reviewId": null, // TrustRadius doesn't surface stable IDs on /reviews/all"title": "Slack Review","reviewUrl": "https://www.trustradius.com/products/slack/reviews","rating": {"average": 10, // native 0β10"averageNormalized": 5, // 0β5 normalized"count": 1,"bestRating": 10,"worstRating": 1},"text": "So we use it for daily collaboration, just notificationsβ¦","pros": null,"cons": null,"publishedAt": "2026-05-12T01:30:29.251Z", // ISO 8601 β cleaner than Capterra's "May 31, 2024"// Reviewer firmographics β RICHER than Capterra (companyName + department + LinkedIn URL)"reviewer": {"name": "Sapna Nayak","firstName": "Sapna","lastName": "Nayak","jobTitle": "Senior Salesforce Administrator","jobType": "Administrator","companyName": "Side", // β Capterra doesn't surface company NAME"companySize": "51-200 employees","department": "Other", // β richer than Capterra"industry": null,"profileUrl": null,"profilePicUrl": "https://media.trustradius.com/profile-photos/β¦jpeg", // when available"linkedInUrl": "https://www.linkedin.com/in/sapna-nayak-β¦", // β UNIQUE to TrustRadius"linkedInVerified": null},// Per-question Q&A β UNIQUE to TrustRadius"sections": [{"title": "Use Cases and Deployment Scope","responses": [{"question": "Use Cases and Deployment Scope","answer": "So we use it for daily collaboration, just notifications for different thingsβ¦"}]},{"title": "Pros","responses": [{ "question": "Pros", "answer": "Real-time messaging | File sharing | Channel organization" }]},{"title": "Cons","responses": [{ "question": "Cons", "answer": "Search can be slow for large workspaces" }]}/* + more sections per review */],"incentive": null, // "Incentivized" when TrustRadius flags it"source": "TrustRadius","trusted": null,// Thread-level aggregate (same on every review row from the same reviews URL)"productAggregate": {"rating": { "average": 9, "averageNormalized": 4.5, "count": 9980, "bestRating": 10, "worstRating": 1 },"awards": [{ "title": "Buyer's Choice 2026", "year": "2026" }],"features": ["Task Management", "Gantt Charts", /* +21 */],"vendor": { "name": "Salesforce", "url": "https://slack.com/β¦" },"totalReviewsEmitted": 30,"pagesScraped": 3},"scrapedAt": "2026-05-12T17:36:00.000Z"}
rowType: "category-product" (one per product in the category)
{"rowType": "category-product","categoryUrl": "https://www.trustradius.com/categories/collaboration","categorySlug": "collaboration","productSlug": "slack","productUrl": "https://www.trustradius.com/products/slack","name": "Slack","description": "Slack brings team communication into one placeβ¦","rating": { "average": 9, "averageNormalized": 4.5, "count": null, "bestRating": 10, "worstRating": 1 },"vendor": { "name": "Salesforce", "url": "β¦" },"logoUrl": "https://media.trustradius.com/product-logos/β¦png","sponsored": null,"categoryAggregate": {"categoryUrl": "https://www.trustradius.com/categories/collaboration","categorySlug": "collaboration","categoryName": "Collaboration Tools","description": "Collaboration tools help teams work togetherβ¦","totalProductsOnPage": 25,"faqs": [ // β TrustRadius ships editorial Q&A as JSON-LD FAQPage{ "question": "What is collaboration software?", "answer": "β¦" },{ "question": "How much does it cost?", "answer": "β¦" }],"relatedCategories": [{ "name": "Web Conferencing", "url": "β¦" }, /* +29 */]},"scrapedAt": "2026-05-12T17:36:00.000Z"}
rowType: "compare"
{"rowType": "compare","compareUrl": "https://www.trustradius.com/compare-products/slack-vs-microsoft-teams","title": "Microsoft Teams vs Slack","products": [{"productSlug": "slack","productUrl": "https://www.trustradius.com/products/slack","name": "Slack","rating": { "average": 9, "averageNormalized": 4.5, /* β¦ */ },"vendor": null,"logoUrl": "https://media.trustradius.com/product-logos/β¦png"},{"productSlug": "microsoft-teams","productUrl": "https://www.trustradius.com/products/microsoft-teams","name": "Microsoft Teams","rating": { "average": 8.6, "averageNormalized": 4.3, /* β¦ */ },/* β¦ */}],"scrapedAt": "2026-05-12T17:36:00.000Z"}
Compare row is best-effort in v1.0. TrustRadius compare pages are HTML-rendered editorial articles (no embedded JSON data block). We DOM-walk the visible cards per slug β good for slug + name + rating + logo, but vendor info may be partial. For full data, scrape each product separately.
Pricing
Pay-per-event. Reviews and category-products are billed flat β each is its own dataset row, one outputrecord event per row. Cost = rows Γ outputrecord-price. No nested-array arithmetic.
| Event | When | Suggested rate |
|---|---|---|
outputrecord | Once per dataset row pushed β product, review, category-product, compare. Thread/category aggregate is nested INSIDE each flat row. | configured on the actor page |
additional-data | Once per nested item inside a product / compare row only (features, awards, review snippets, breadcrumb categories, compared products). Reviews and category-products are never billed here. | $0.75 per 1,000 items ($0.00075 each) |
What makes this richer than the competition
We surveyed all 16 TrustRadius actors on Apify Store (May 2026). The top specialist (zen-studio/trustradius-review-scraper, 25 users) covers reviews only. Same gap we filled for Capterra.
| Capability | Competitor actors | This actor |
|---|---|---|
| Product + reviews + category + compare in one actor | β (reviews-only is the norm) | β |
| Sitemap-driven bulk discovery | β | β |
| URL auto-classification (paste any mix) | β | β |
Per-question sections[] Q&A captured on every review | partial (1 actor mentions Q&A, partial coverage) | β |
| Reviewer LinkedIn URL | β | β |
| Reviewer company name (not just size) | β | β |
| Reviewer department | β | β |
| Dual 0β10 native + 0β5 normalized ratings | β | β |
| Capterra-style awards (Buyer's Choice etc.) | β | β |
Category FAQ extraction (from JSON-LD FAQPage) | β | β |
| Flat-per-review billing (1 review = 1 paid row) | mixed | β |
Notes & limitations
- TrustRadius is open β no Cloudflare, no warmup needed. Apify Residential US works first-attempt at 100%.
- Reviews pagination auto-walks
/reviews/all?page=Nuntil empty ormaxReviewsPerProducthits. Slack has ~10,000 reviews across ~1,000 pages β set caps appropriately. - Compare extraction is best-effort in v1.0 β TrustRadius compare pages ship as HTML-only editorial. v1.1 will follow per-product fetches for richer compare rows (same pattern that worked on Capterra).
reviewer.profilePicUrl/linkedInUrldata-source notes. These fields are surfaced on the product page (/products/{slug}/reviews) β the 5 reviews shipped via JSON-LD + RSC carry full reviewer.user blocks (profile pic + LinkedIn URL + verification flag). On the paginated/products/{slug}/reviews/all?page=N, TrustRadius ships a slimmer payload that does not include these fields β reviewer firmographics (name, company, jobTitle, department, companySize) are still 100%-filled, but profile pic + LinkedIn URLs come back null. If you need full reviewer enrichment, prefer the/reviewsURL over/reviews/all.- Sitemap mode is conservative β only walks
maxProductsFromSitemapURLs to avoid runaway costs. Buyers wanting full-catalog scrapes should run multiple sitemap calls withmaxItemsset high.
Support
Issues, feature requests, or custom output shapes? Open a ticket on the actor's Apify page or message the maintainer.