TrustRadius $1πŸ’° Reviews, Products, Category & Compare Scraper avatar

TrustRadius $1πŸ’° Reviews, Products, Category & Compare Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
TrustRadius $1πŸ’° Reviews, Products, Category & Compare Scraper

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

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

TrustRadius Reviews, Products, Categories & Compare Scraper

How it works

How TrustRadius Scraper 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:

InputRow(s) emitted
Any product URL β€” /products/{slug}, /products/{slug}/reviews, or /products/{slug}/reviews/all1 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.xmlBulk 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 /reviews and /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 productAggregate field β€” duplicated on every review row from the same URL, but that keeps each row self-contained and makes billing trivial: one row = one paid outputrecord event.

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.push RSC streaming + comprehensive JSON-LD. We extract structured data from both sources:
    • SoftwareApplication JSON-LD ships aggregateRating, featureList, award, offers, plus 5 fully-structured review[] 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=N is the paginated review thread: 10 visible <article> cards per page, JSON-LD only carries aggregateRating here. We DOM-walk articles for title + date + rating + section headings (Q&A) and align them with RSC reviewer blocks for firmographics.
  • /categories/{slug} has ItemList JSON-LD (product cards), FAQPage JSON-LD (editorial Q&A), and BreadcrumbList β€” 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

FieldTypeRequiredNotes
startUrlsstring[]yesAny mix of product / reviews / category / compare / sitemap URLs (or bare product slugs). Auto-classified.
maxItemsintegernoSafety 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.
maxReviewsPerProductintegernoMax 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.
maxProductsPerCategoryintegernoMax category-product rows emitted per category URL. Default 50, 0 = no limit.
maxProductsFromSitemapintegernoWhen you paste a sitemap URL, the actor discovers product URLs and scrapes the first N. Default 50.
normalizeRatingsbooleannoAdd averageNormalized (0–5 scale) alongside native 0–10. Default true.
includeReviewSectionsbooleannoInclude full per-question sections[] on each review row. Adds 1–3 KB per row but captures TrustRadius's unique Q&A structure. Default true.
maxConcurrencyintegernoParallel HTTP requests. TrustRadius is open β€” concurrency up to 10 is safe. Default 5.
maxRequestRetriesintegernoPer-URL retry budget on 5xx/network errors. Default 3.
proxyobjectnoApify 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.

EventWhenSuggested rate
outputrecordOnce per dataset row pushed β€” product, review, category-product, compare. Thread/category aggregate is nested INSIDE each flat row.configured on the actor page
additional-dataOnce 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.

CapabilityCompetitor actorsThis 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 reviewpartial (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=N until empty or maxReviewsPerProduct hits. 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 / linkedInUrl data-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 /reviews URL over /reviews/all.
  • Sitemap mode is conservative β€” only walks maxProductsFromSitemap URLs to avoid runaway costs. Buyers wanting full-catalog scrapes should run multiple sitemap calls with maxItems set high.

Support

Issues, feature requests, or custom output shapes? Open a ticket on the actor's Apify page or message the maintainer.