TrustRadius Reviews Scraper avatar

TrustRadius Reviews Scraper

Pricing

from $0.99 / 1,000 saved reviews

Go to Apify Store
TrustRadius Reviews Scraper

TrustRadius Reviews Scraper

Export public TrustRadius product reviews with ratings, dates, pros, cons and source links. Get one JSON row per unique review and clear partial-result summaries. Up to 200 saved reviews per run.

Pricing

from $0.99 / 1,000 saved reviews

Rating

0.0

(0)

Developer

Cliqto Media

Cliqto Media

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 days ago

Last modified

Categories

Share

Export public TrustRadius product reviews as one JSON row per unique review. Keep ratings, dates, source links and the available use-case, pros, cons and recommendation sections.

Start with the prefilled Slack URL and 10 reviews. The price is $0.031 per start plus $0.00099 per saved review. Pages can be blocked, repeated or partial; check RUN_SUMMARY before you use the results.

TrustRadius Reviews Scraper: public review pages to JSON rows with native ratings, pros, cons and source links

Contents

What it does

The Actor reads public TrustRadius product review pages. It follows available pages, removes repeated reviews and saves the fields listed below. Review text comes from labeled sections. HTML tags are removed and spaces are normalized. Text has size limits; this is not a full-page archive.

Good fit: product feedback research, pros and cons research, and a small review export with links back to the source.

Not a fit: all-review guarantees, private pages, reviewer contact lists, AI summaries or other review sites. Direct review URL input, date/rating filters, custom sorting, ROI, alternatives and feature-score extraction are not supported. The Actor keeps source order. It does not log in or accept cookies.

Quick start

  1. Open Input in Apify Console. A new form suggests the public Slack review URL.
  2. Keep that URL. Leave the other fields at their defaults for a small first run.
  3. Set the run timeout to 300 seconds and keep 256 MB of memory for this demo.
  4. Click Start.
  5. Open Dataset. Check reviewUrl, rating, pros and cons. Open Output → Run summary to see why the run stopped.

The demo aims to save up to 10 unique reviews. Source access can change. An empty or failed response is explained in the summary and is not replaced with a fake review.

This explicit API input matches the new form's URL suggestion:

{
"productUrls": ["https://www.trustradius.com/products/slack/reviews"]
}

The URL is a UI prefill, not a runtime default. API input {} returns INVALID_INPUT. It does not silently scrape Slack.

Use cases

TaskInputUseful fieldsNext step
Study product feedbackOne public product URLuseCase, pros, cons, likelihoodToRecommendRead the source link before quoting text.
Compare a small sample from two productsproductSlugs with two slugsproductSlug, rating, publishedAt, reviewUrlExport Dataset to your analysis tool.
Keep review referencesSmall limitsreviewKey, identityQuality, source.retrievedAtUse the key to match rows in your own storage.

The Actor does not analyze sentiment or keep a monitoring baseline. Each run is a fresh bounded collection.

Input

All input fields

Exactly one of productUrls and productSlugs must be present and nonempty. Other fields are optional. Empty strings, nulls, unknown keys and unsupported filters are rejected. Duplicate product targets are normalized and processed once. Up to 25 raw target entries are accepted.

FieldTypeRequiredRuntime defaultUI prefillValues and effect
productUrlsarray of stringsOne target sourceNoneSlack review URL1–25 public product URLs; each string up to 2,048 characters. Use https://www.trustradius.com/products/<slug>, /reviews or /reviews/all. No query, fragment, credentials, other host or direct review URL.
productSlugsarray of stringsOne target sourceNoneNone1–25 lowercase slugs; each 1–120 characters, letters, digits and hyphens. First character must be a letter or digit. Example: slack.
maxReviewsPerProductintegerNo10None1–200; maximum unique rows saved for one product.
maxTotalReviewsintegerNo100None1–200 across all products; the global cap wins.
sortstringNosourceNoneOnly source; preserves the order returned by TrustRadius.
transportstringNoapify-unblockerNoneValues in the route table below. The default is the measured managed public-page route.
includeReviewExcerptbooleanNofalseNoneAdds up to 2,000 Unicode characters from the accepted labeled sections. Does not add new source sections.
includeReviewerContextbooleanNotrueNoneKeeps coarse public reviewer fields only when found. Does not enrich missing context.

productUrls[] and productSlugs[] contain plain strings, not request objects. Schema defaults may appear in the form's saved INPUT. They are separate from the URL prefill.

Access routes

transport valueMeaning and limit
apify-unblockerDefault. Uses Apify's managed public-page access service. Source access is measured, not guaranteed.
directDirect HTTPS; current public product probes returned 403.
apify-proxyExisting Apify datacenter proxy route. Diagnostic option; access may be denied.
apify-residentialExisting residential proxy route. Diagnostic option; access may be denied.
apify-residential-browserlikeBounded browser-like HTTP route, up to 15 sessions after 403 responses. Diagnostic option.
browserBounded Chromium route. Diagnostic option; browser startup may exceed the available memory.

These route values remain for existing API users. They keep the same host, product, output and time boundaries. They are not a promise to bypass login or solve a CAPTCHA. Cost measurements in this README concern the default route.

Interacting settings

  • If a per-product cap is 12 and the global cap is 15, the first product can save 12 rows and the next can save at most 3.
  • A global cap can leave later targets unprocessed. RUN_SUMMARY.unprocessed lists them.
  • includeReviewerContext=false omits reviewer. includeReviewExcerpt=true creates an excerpt only from available labeled text.
  • The platform's maximum run charge includes both start and review events. Once no further row charge fits, collection stops. Set a limit above $0.031 plus at least one review event.

Two-product example

{
"productSlugs": ["slack", "hubspot-crm"],
"maxReviewsPerProduct": 12,
"maxTotalReviews": 24,
"includeReviewExcerpt": true,
"includeReviewerContext": false
}

Expect up to 24 rows, with a productSlug on each row. Repeated pages or source errors can return fewer. This limit gives a maximum event charge of $0.05476 at 256–512 MB; a partial run bills only the rows saved plus its start.

Output

Dataset fields

The default Dataset contains one REVIEW_SAVED object per unique saved review. Errors, empty outcomes and summaries are not Dataset items.

FieldTypePresence and meaning
schemaVersionintegerAlways 1.
rowTypestringAlways review.
statusstringAlways REVIEW_SAVED; row status does not prove run completeness.
reviewKeystringAlways present. Stable tr-v1 identity: source ID, then canonical permalink, then a content fingerprint.
identityQualitystringsource_id, canonical_url or fingerprint; fingerprints can change when text changes.
productIdstringPublic source product ID or normalized slug.
productSlugstringNormalized product slug.
productNamestringSource product name or slug fallback.
productUrlstringCanonical public product reviews URL.
aggregateRatingnumberOptional source aggregate rating; native 1–10 scale.
aggregateRatingCountintegerOptional source aggregate count; can include ratings without review text. It is not the row count.
ratingScaleobjectAlways present; min is 1, max is 10.
reviewIdstringOptional source ID. Not invented from a URL.
reviewUrlstringOptional canonical review permalink.
reviewTitlestringOptional source title, up to 1,000 Unicode characters.
ratingnumberOptional source score on the 1–10 scale; not converted to 5 stars.
publishedAtstringOptional source date converted to ISO 8601.
updatedAtstringOptional source update date converted to ISO 8601.
useCasestringOptional labeled use-case/deployment text, up to 8,000 characters.
prosarray of stringsOptional list; up to 20 items, each up to 2,000 characters.
consarray of stringsSame bounds as pros.
likelihoodToRecommendstringOptional labeled recommendation answer, up to 8,000 characters.
reviewSourceLabelstringOptional published verification/source label, up to 200 characters.
incentiveDisclosurestringOptional published incentive label, up to 200 characters.
reviewExcerptstringOptional excerpt, only when enabled; up to 2,000 characters.
reviewerobjectOptional coarse public context, only when enabled and found.
sourceobjectAlways present; retrieval details below.
warningsarray of stringsAlways present; safe warning codes, can be empty.

Nested fields

FieldTypeMeaning
reviewer.displaystringOptional anonymous label only, such as Verified User; never a reviewer name.
reviewer.isVerified, reviewer.isVettedbooleanOptional source verification flags.
reviewer.rolestringOptional role, up to 500 characters.
reviewer.companySizestringOptional company-size band, up to 120 characters.
reviewer.industry, reviewer.departmentstringOptional coarse context, up to 300 characters each.
reviewer.experienceYearsnumberOptional disclosed experience, 0–100.
source.sourceUrlstringCanonical product reviews URL; use pageIndex to identify the collection page.
source.sourceRoutestringpublic-http or public-browser.
source.retrievedAtstringUTC retrieval time, separate from review publication time.
source.pageIndexintegerCollection page number, starting at 1.
source.sourceRecordIdstringOptional public source review ID.

Optional missing fields are omitted, not replaced by null, empty strings or invented values. If the source omits a section, the Actor cannot provide it. The current Slack sample has canonical URL identity and no separate reviewId, updatedAt or reviewer object. Public review text may itself mention people or businesses; the Actor does not provide separate name, company, profile, avatar or contact fields.

Output surfaces and run summary

SurfaceContent
Default DatasetUnique saved review rows. Export or fetch these rows.
Default Key-value store → RUN_SUMMARYRun status, counts, limits and per-product outcomes.
Output → reviewsLink to default Dataset items.
Output → runSummaryLink to the RUN_SUMMARY record. Output link rendering does not require a separate OUTPUT KVS record.

RUN_SUMMARY includes schemaVersion, runStatus, startedAt, finishedAt, inputCount, productsResolved, optional sourceReportedReviewCount, uniqueReviewsSaved, duplicatesDropped, pagesRead, requestsMade, retries, redirects, rateLimits, bytesRead, inputsTruncated, terminationReason, inputResults, unprocessed, failedInputReferences, transport, limits, charge and warnings.

Counts are integers. Dates are ISO strings. Status and reason are strings. inputResults is an array with target, status, reviewsSaved, duplicatesDropped, pagesRead, requestsMade, retries, redirects, rateLimits, bytesRead, optional sourceReportedReviewCount, terminationReason and warnings. unprocessed is an array of {target, reason} objects. failedInputReferences and warnings are arrays of safe strings.

transport contains mode, sourceRoute and host. limits contains numeric request, redirect, byte, parser, retry, runtime and delay bounds, including maxConcurrentRequests. charge contains eventName, datasetRows, chargeAttempts, chargedEvents, chargeLimitReached and pricingConfigured. Its counts concern saved-review events; it is not a total bill and does not include the platform's automatic start event. Use run billing for total charges.

OutcomeMeaningWhat to do
PRODUCT_FOUNDProduct rows were found and the available route ended.Read the stop reason; this is not an all-review guarantee.
NO_REVIEWSValid product response with zero accessible reviews.Check the product and source.
NOT_FOUNDProduct page returned 404.Correct the URL or slug.
TRUNCATED_BY_LIMITRow, request, byte, charge or runtime cap stopped collection.Use the rows saved; check the relevant limit.
PARTIALA source page/input failed or pagination repeated after some rows.Keep useful rows and inspect per-input warnings.
BLOCKED, TRANSIENT_ERRORAccess denial or exhausted retry.Retry a small input later; no empty-success claim.
PARSER_DRIFTSource shape or a positive-total empty page is inconsistent.Share the run ID with support.
INVALID_INPUT, TECHNICAL_ERRORInput validation or resource/runtime/storage error.Fix the input or inspect the safe error code.

Real output example

{
"schemaVersion": 1,
"rowType": "review",
"status": "REVIEW_SAVED",
"reviewKey": "tr-v1:url:92077e8f5a4dbf435514c67de50c7d0d575e1e16343f66da1588609458c7450c",
"identityQuality": "canonical_url",
"productSlug": "slack",
"productName": "Slack",
"productUrl": "https://www.trustradius.com/products/slack/reviews",
"reviewUrl": "https://www.trustradius.com/reviews/slack-2026-08-05-00-29-43",
"reviewTitle": "Well Organized and Easy to Manage",
"rating": 9,
"ratingScale": {
"min": 1,
"max": 10
},
"publishedAt": "2026-08-10T16:20:28.250Z",
"pros": [
"Keep project discussions organized with separate channels."
],
"source": {
"sourceUrl": "https://www.trustradius.com/products/slack/reviews",
"sourceRoute": "public-http",
"retrievedAt": "2026-10-09T20:33:08.040Z",
"pageIndex": 1
},
"warnings": [
"identity_fallback_canonical_url"
]
}

This is a trimmed row from the Slack quick-start input. Only one pro is shown; other available text sections are omitted from this example. Those example omissions do not describe the full saved row.

Pricing and limits

The applied price is $0.031 per start + $0.00099 per saved review. Apify charges the standard apify-actor-start automatically. At the supported 256–512 MB memory, it counts once. No extra compute or proxy bill is passed to the buyer for a standard run.

Saved rowsStart eventsReview eventsTotal event charge
0: valid empty, not found or blocked10$0.031
111$0.03199
10110$0.04090
24124$0.05476
200 maximum1200$0.22900

Partial or failed runs keep the start charge and charge for reviews already saved. Duplicates and the summary do not add review events. There are no date/rating filters or unchanged-monitor mode; fully filtered and unchanged billing scenarios do not apply.

The row cap is a maximum, not a promise. A repeated page can stop a run early even below the cap. The source's aggregate rating count and review total are different from saved rows.

  • Up to 25 products, 200 rows per product and 200 rows in total.
  • Default memory 256 MB; allowed memory 256–512 MB.
  • Internal source work lasts at most 10 minutes. A longer platform timeout does not extend that deadline. For a 300-second demo, source work stops early enough to reserve 30 seconds for storing the summary.
  • One source request at a time; up to two retries per request, three redirects and a 1-second delay between pages.
  • Responses are bounded to 2 MiB per page and 256 MiB per run; parser work is bounded to 200,000 nodes per page. The request cap is 2,000; time and row caps usually stop the run sooner.

API and export

Use the Apify Run Actor API with the same JSON input. For the demo, set timeout=300, memory=256 and a maximum charge such as $0.10. Leave the build selector out to use the published default.

Get rows from the run's defaultDatasetId. The Dataset items API supports JSON and CSV exports. Use reviewKey for matching rows and reviewUrl for source references. Console can also export the Dataset. This Actor does not create schedules, webhooks or external integrations for you.

Troubleshooting

Empty Dataset

Check RUN_SUMMARY.runStatus before treating it as a valid zero. NOT_FOUND means the product URL did not resolve. BLOCKED means access was denied. NO_REVIEWS means a valid product response had no accessible review rows.

Fewer rows than requested

Check terminationReason, sourceReportedReviewCount, duplicatesDropped and the per-input warnings. A repeated or changed source page can end collection. Raising the cap does not fix a repeated page.

Timeout or memory error

Keep the demo at 256 MB and 300 seconds. Use smaller row caps for slow source access. A resource error is TECHNICAL_ERROR, separate from INVALID_INPUT. A longer platform timeout keeps the internal 10-minute source cap.

Missing review ID, date or reviewer context

These fields depend on public source data. Use reviewKey plus identityQuality for identity. Do not replace a missing source date with retrieval time.

FAQ

Does it collect every review?

No. It collects the accessible public sample within your limits. Source pages can repeat, change or hide reviews. The summary shows what was actually saved.

Is this the full review text?

It keeps available labeled use-case, pros, cons and recommendation sections within the stated text bounds. It does not collect every Q&A section or the entire page. The optional excerpt is shorter than those sections.

Do I need a TrustRadius login?

No. This Actor reads public pages. Do not send tokens, passwords or cookies.

Why do repeated reviews not cost extra?

The Actor checks the stable key before writing a row. Repeated cards do not create another saved-review event within the run. A separate run is a fresh collection and has its own start and review charges.

Can I request only recent reviews or a rating range?

No. Only source order is supported. Date, rating and company-size filters are not implemented.

Is a source total the same as the number I can export?

No. Source counts can include ratings without text or reviews that this route cannot reach. Compare the source count with uniqueReviewsSaved and the stop reason.

For review research on other platforms, use these separate tools from the same owner:

They have their own inputs, limits and pricing. TrustRadius URLs belong in this Actor.

Support

Use the Issues tab on this Actor's Apify Store page. Include the run ID, public product URL or slug, limits and safe summary codes. Never send tokens, cookies or private account details.

TrustRadius is a trademark of its owner. This is an independent tool and is not endorsed by or affiliated with TrustRadius.