Trustpilot Reviews Scraper — Ratings, Reviews & Replies avatar

Trustpilot Reviews Scraper — Ratings, Reviews & Replies

Pricing

from $0.14 / 1,000 trustpilot reviews

Go to Apify Store
Trustpilot Reviews Scraper — Ratings, Reviews & Replies

Trustpilot Reviews Scraper — Ratings, Reviews & Replies

Collect accessible Trustpilot reviews, ratings and company replies with filters and source diagnostics. Bulk export: JSON, CSV, Excel and API. Pay per result: from $0.1/1K reviews; start fee, usage extra.

Pricing

from $0.14 / 1,000 trustpilot reviews

Rating

0.0

(0)

Developer

Apivault Labs

Apivault Labs

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

7 days ago

Last modified

Share

Trustpilot Scraper — Reviews, Ratings & Replies

Fast Trustpilot scraper for collecting Trustpilot reviews, ratings, business replies, TrustScore, and company-profile data. Explore recent results or configure deeper collection, with every review exported as a separate row.

Run bulk company and competitor monitoring, track brand reputation and complaints, analyze ratings and replies, and export clean results to CSV, JSON, or Excel from Apify.

First run: one company, three reviews

  1. Paste an exact company profile, for example https://www.trustpilot.com/review/canva.com, into Start URLs.
  2. Set Maximum reviews per company to 3 and Maximum source pages per company to 1.
  3. Click Start, then open Reviews. Company information is in the separate Companies dataset.
{"startUrls":["https://www.trustpilot.com/review/canva.com"],"maxReviews":3,"maxPages":1,"contentMode":"companyInformationAndReviews","includeCompanyResponseMetrics":true,"includeReviewInsights":true}

On the Free plan, three returned reviews cost $0.008 in Actor events ($0.005 start + 3 × $0.001), plus platform usage. This is an estimate for one run with three reviews; check the current Pricing tab and your tier. Set an overall run/spend cap in your client when available. Fewer results can reflect filters or source access. Read SUMMARY and INPUT_STATUS before treating the collection as complete.

The fresh Console example uses 3 reviews and 1 page. The API/schema defaults remain 20 reviews and 3 pages; existing saved inputs can retain their own values. Optional settings are grouped below the first-run controls. No Trustpilot credential is required. See the complete input reference for every parameter and its dependencies.

MCP and AI agents

Use this Actor for public Trustpilot review research, company reputation summaries and reply analysis. Start with one company and a small review sample.

Select apivault_labs/trustpilot-scraper-reviews-ratings-api in the Actor's API → MCP tab, or connect an authenticated MCP client to:

https://mcp.apify.com/?tools=apivault_labs/trustpilot-scraper-reviews-ratings-api

The direct tool is apivault_labs--trustpilot-scraper-reviews-ratings-api. Keep the Apify token in the client's secure authentication configuration. Public source data does not remove the requirement for Apify authentication and applicable run charges. Read tools/list before calling: wrapper fields can differ from the Actor input schema.

Small Actor input:

{
"startUrls": [
"canva.com"
],
"contentMode": "reviews",
"maxReviews": 3,
"maxPages": 1,
"incremental": false,
"expandRegionalDomains": false
}

Send this object as the direct tool's arguments. Its current wrapper also accepts waitSecs: 45. waitSecs controls how long the tool waits; it is not the Actor run timeout. If the run is still active, poll its returned run ID with get-actor-run; do not start a duplicate. Once terminal, use get-dataset-items with the returned dataset ID and a small limit/field selection, then get-key-value-store-record with the returned store ID and required record key. Missing IDs/records must be reported, not replaced with another run's storage.

Retrieve the default Reviews dataset. Company information is a separate named dataset; use the returned storage links, not a guessed name or a new dataset. Read SUMMARY and INPUT_STATUS: failedCompanies, partialCompanies and writeErrors indicate incomplete collection. A company-only run can have zero Reviews while Companies is populated. Public login walls and configured page limits can truncate history; never infer full coverage from a short sample.

Agent request: “Collect up to three accessible public Canva reviews from one page, then return the review URLs and explain any failures or incomplete coverage.”

Keep the first run small. Increase limits only for the requested scope, check current Pricing and cap runtime/spend using controls actually supported by your run client. Distinguish source errors, filtered emptiness and partial delivery; a completed tool call alone does not establish successful data collection.

Get your first 20 reviews

  1. Enter a company domain such as canva.com in Start URLs.
  2. Keep Maximum reviews per company at 20 and click Start.
  3. Open Reviews for review rows or Companies for TrustScore and company summaries. Export the chosen dataset as CSV, JSON, or Excel.
{"startUrls":["canva.com"],"maxReviews":20,"maxPages":3,"contentMode":"companyInformationAndReviews"}

Review rows include reviewId, companyDomain, rating, title, text, publishedAt, hasReply, replyText, and reviewUrl. Company rows are in a separate dataset, so a company-only run can have an empty Reviews dataset and a populated Companies dataset.

On the Free plan, 20 reviews cost $0.025 in Actor events ($0.005 start + 20 × $0.001), plus Apify platform usage. No Trustpilot credential is required; programmatic Apify calls use your Apify credential.

Public-page limits and incomplete results

The Actor collects accessible public pages and does not guarantee a complete review archive. In our October 4 check, Canva page 10 returned reviews and page 11 required Trustpilot login. Availability can differ across companies, filters, and time.

maxReviews: 0 removes the requested review-count limit; maxPages still caps collection and upstream access restrictions still apply. A larger limit does not bypass a login wall. Source failures appear in Input errors and SUMMARY.partialCompanies; collected rows remain available. Requested limits can also intentionally produce a sample without a source error.

For incremental monitoring, reuse the same persistent state store. The next run excludes timestamps already collected. Run often enough and use sufficient page/review limits: reviews outside the collected sample are not recovered automatically. Company insights and reply-rate metrics describe the collected sample.

Why use this Trustpilot scraper?

  • Configurable review history — start with a fast recent sample or increase the limits for deeper collection.
  • Reviews, ratings, and replies — full review text, star rating, dates, verification, reviewer details, and responses from the business.
  • TrustScore and company profiles — company rating, review totals, star distribution, country, website, and response metrics.
  • Fast bulk scraping — process multiple companies in one run with bounded concurrency.
  • CSV, JSON, and Excel export — every review is a separate dataset item, ready for analysis or automation.
  • Competitor and complaint monitoring — filter low ratings, identify recurring complaint themes, and compare brand reputation.
  • Incremental updates — collect only reviews published since the previous saved state.

No Trustpilot login or user-supplied Trustpilot credential is required for normal runs. Version 1.7 preserves full publication timestamps, review text, and business replies. Failures and partial results are recorded in Input errors and SUMMARY.

Pricing

Pay per review written to the Reviews dataset. Company summaries and input-status records are not billed as review results. Apify platform usage costs (compute, storage, and network) are charged separately to the user.

Apify planPer reviewPer 1,000 reviewsRun start
FREE$0.00100$1.00$0.00500
Bronze$0.00025$0.25$0.00005
Silver$0.00018$0.18$0.00005
Gold$0.00014$0.14$0.00005
Platinum$0.00012$0.12$0.00005
Diamond$0.00010$0.10$0.00005

Company-only runs have no review-result charge; the run-start event and platform usage still apply.

Flexible start input

Use startUrls for any mix of bare brands/domains, normal websites, Trustpilot company profiles (/review/), individual reviews (/reviews/), consumer profiles (/users/), and Trustpilot search URLs (/search?query=). The legacy companyUrls field remains accepted. searchTerms can be combined with all URL inputs.

The prefilled example uses canva.com. Recent sampling is the default; balanced sampling is available when you want a wider rating distribution. maxPages caps native page requests even with filters.

Use lastDays for rolling windows, or enable incremental to collect only reviews newer than the saved timestamp. Supply incrementalStateStoreId for automatic state reuse between runs. Enable expandRegionalDomains to discover exact-name regional profiles, with maxRegionalDomains as a safety cap. maxConcurrency controls how many companies are processed in parallel.

Enable includeReviewInsights for a deterministic company digest with average rating, sentiment split, rating distribution, verified/reply percentages, languages, complaint themes, frequent negative terms, and feature-request snippets. It does not use AI or require another API key.

Content modes

  • companyInformationAndReviews — company profile followed by reviews.
  • reviews — review rows only.
  • companyInformation — one company-information row, without review requests.
  • bulkCompanyInformation — company-information rows for every supplied domain.

Repeat runs and regional brands

For a first incremental run, enable incremental. The Actor writes the newest timestamp per company to INCREMENTAL_STATE. To make later runs reuse it automatically, point incrementalStateStoreId to a persistent Apify key-value store; the Actor reads and updates that record without exposing authentication data.

Regional discovery resolves the supplied company, searches Trustpilot for profiles with the exact normalized display name, removes duplicates, and respects maxRegionalDomains. It is disabled by default to avoid unexpected requests.

Filters and output

The Actor supports multiple companies, start page, maximum pages/reviews, star ratings, languages, reviewer countries, verified reviews, reviews with replies, an exact startDate, and presets for the last 30 days or 3/6/12 months.

Full review rows include complete text, dates, verification and source metadata, reviewer profile/avatar, company reply and response time, TrustScore, star distribution, and company metadata. compact returns essential fields, while includeRaw preserves the complete API object. Company items can include sampled reply rate, average response time, and review insights.

Local run

Copy INPUT.example.json to INPUT.json, then run:

go test ./...
go run .

Local results are written to OUTPUT.json. On Apify, output is separated into Reviews, Companies, and Input errors datasets. SUMMARY, INPUT_STATUS, and INCREMENTAL_STATE are also stored in the default key-value store.

Automate it in n8n

Install n8n-nodes-apivault-trustpilot and import the ready-to-use reputation workflow. Add your Apify API credential, replace the sample company, and run it.

Build a repeatable Trustpilot review research workflow

Use this Trustpilot reviews API when you already know the company or can review a resolved brand match. Customer-support teams can inspect complaint themes and responses; researchers can export a bounded competitor sample; analysts can maintain their own dated review observations. A rating is a source observation, not independent proof that a business is trustworthy. This tool does not verify a reviewer's identity, purchases or the truth of a complaint.

TaskUseful fieldsInterpretation to preserve
Review a complaint samplerating, title, text, reviewUrlA filtered sample is not the company's overall sentiment
Examine company responseshasReply, replyText, replyResponseHoursMissing replies and dates remain unknown where unavailable
Compare companiescompanyDomain, companyTrustScore, publishedAtMatch brands and collect comparable windows before comparing
Export feedback to a spreadsheetreviewId, companyDomain, reviewUrlRetain source identity and collection time for deduplication
Summarize observed themesdeterministic insights and sample countsKeyword heuristics are not a language model or audited survey

The company dataset and Reviews dataset serve different questions. A company summary may be populated without any review rows. For analysis of individual experiences, inspect Reviews and its source links; do not count a company summary as another review. Preserve both the requested company and the resolved domain when reviewing search-based matches.

Small review-only export

{
"startUrls": [
"canva.com"
],
"contentMode": "reviews",
"maxReviews": 3,
"maxPages": 1,
"compact": true,
"expandRegionalDomains": false
}

Use a small first sample to check identity, dates and review URLs. compact changes the output shape; it does not remove source restrictions or reduce the per-review rate.

Company context without review collection

{
"startUrls": [
"canva.com"
],
"contentMode": "companyInformation",
"includeCompanyDetails": true,
"includeCompanyResponseMetrics": true
}

Read the named Companies output. A zero-row Reviews dataset can be expected for this mode. Company-only work still has startup and resource costs; it is not a free API request.

Bounded low-star feedback research

{
"startUrls": [
"canva.com"
],
"contentMode": "reviews",
"maxReviews": 5,
"maxPages": 2,
"filterStars": [
"1",
"2"
],
"dateRange": "last30days",
"includeReviewInsights": true
}

This is a targeted complaint sample. Fewer than five matching reviews can be correct. Report the rating/date filters, pages attempted and any source errors alongside a digest.

Review available company replies

{
"startUrls": [
"canva.com"
],
"contentMode": "reviews",
"maxReviews": 5,
"maxPages": 2,
"repliesOnly": true,
"sortBy": "recency"
}

Useful for examining visible response wording. A response-time estimate depends on valid review/reply timestamps; do not invent a delay for records without them.

Coverage, sampling and reliable exports

The maximum review count is a cap per company, not a promise that every requested review exists or is accessible. Native page limits, star/date/language/country filters and login walls can all reduce delivered rows. A source error after earlier pages does not invalidate the collected reviews, but it makes the run incomplete. Distinguish intentional sampling from partial source access by reading INPUT_STATUS and SUMMARY.

For repeat monitoring, keep your own reviewId-based ledger and the exact company scope. Incremental mode uses timestamps and optional saved state; it is not a full change-data-capture system. A review edited later or returned out of order may require an independent reconciliation policy. Do not enable a shared persistent state store just to try an example: it changes the next run's baseline. Regional expansion can resolve additional profiles with the same normalized brand name; it does not prove common legal ownership.

Before importing CSV into a dashboard, retain numeric ratings, original date fields, review URLs and missing-value distinctions. A reply percentage or average response time computed over the returned sample should be labelled as sampled. Do not compare two businesses using different windows as if their populations were identical. Download the selected named dataset rather than assuming the default dataset contains all record types.

Trustpilot API questions

Can I get the entire review history? A high maxReviews value does not grant access to inaccessible pages. Use the configured caps and source diagnostics to state what was actually collected.

Does company-only output consume review events? Company summaries are not paid review results in this contract. Startup and platform costs still apply; inspect current Pricing and the run's event counts.

Is the analysis an unbiased reputation score? No. Source ratings, available samples, deterministic themes and filter choices must be disclosed. The Actor does not determine fraud, authenticity or future customer satisfaction.

Can an agent run this safely? Give it one company and small limits, read the returned dataset/storage IDs, and have it report partial coverage. A successful MCP call is not proof of a complete archive. Existing n8n and Python integrations below provide alternative delivery paths; their presence is not evidence of additional source access.

n8n and developer integrations

Use this Actor in your automation or application with the existing community integrations below. An Apify account and API token are required; Actor and platform charges follow the current pricing.

  • n8n community node: n8n-nodes-apivault-trustpilot. Install package name n8n-nodes-apivault-trustpilot in a self-hosted n8n instance that permits community packages.
  • Python client and examples: GitHub.
  • n8n source and usage: GitHub.
  • n8n source and usage: GitHub.

These are community packages. Publication on npm does not establish n8n verification or availability in n8n Cloud. Review the linked package README for supported inputs and setup.

Complete input reference

All 31 published input fields are listed below. Defaults are the schema defaults used by the input interface; explicitly send important options in API/MCP calls rather than assuming every client fills them. Console prefill is an example, not an API default. Limits apply per target unless stated otherwise.

First run — company and limits

ParameterType / allowed valuesSchema defaultBehavior and dependencies
startUrlsarraynot declaredCompany domains, website URLs, Trustpilot company/review/user/search URLs, or brand names. At least one item here or in searchTerms is needed. Prefer an exact company profile to avoid brand ambiguity. The Console example is Canva; API calls without a target do not automatically select Canva.
maxReviewsinteger (0–1000000)20Matching reviews per target, not per run; 0 removes only the review-count cap. maxPages, filters and public access still limit results. More targets or higher limits can increase review events and resource use.
maxPagesinteger (1–10000)3Source pages per target, starting at startPage. Collection can stop earlier at the count limit or end of accessible results. Raising this value cannot bypass a login wall. Company-only mode returns after profile collection.
contentModestring: companyInformationAndReviews, reviews, companyInformation, bulkCompanyInformation"companyInformationAndReviews"companyInformationAndReviews collects both datasets; reviews suppresses company rows; companyInformation and bulkCompanyInformation collect company profiles without review rows. Bulk mode still uses the supplied targets. Company summaries use a separate dataset.

Company-name search (optional)

ParameterType / allowed valuesSchema defaultBehavior and dependencies
searchTermsarray[]Additional brand/company-name targets, merged with startUrls and deduplicated after normalization. Each search resolves a matching company rather than returning every search result. Prefer exact URLs when the brand name is ambiguous.
strictNameMatchbooleanfalseFor company-name resolution, reject results without a normalized name match. Matching is heuristic, not legal-entity verification. Does not restrict a supplied exact domain.

Review filters and sampling (optional)

ParameterType / allowed valuesSchema defaultBehavior and dependencies
dateRangestring: all, last30days, last3months, last6months, last12months"all"all, last30days, last3months, last6months, or last12months. Filters review publication time. Combined date filters use the latest cutoff, not an override hierarchy.
lastDaysinteger (0–36500)0Rolling publication cutoff in days, recalculated at run time. 0 disables this filter. Combined with dateRange, startDate and active incremental state using the latest cutoff.
startDatestring""YYYY-MM-DD publication cutoff at UTC midnight; empty disables it. A malformed date is ignored by the runtime, so validate dates before calling. A later rolling or saved-state cutoff still applies.
filterStarsarray[]String values 1, 2, 3, 4, 5; empty includes all ratings. Applied together with other filters. Filtering can return fewer than maxReviews within maxPages.
samplingstring: balanced, proportional"proportional"proportional keeps the collected source selection; it does not guarantee a statistically representative sample. balanced round-robins available ratings in order 1,5,2,4,3 before final date sorting. With no star filter it may collect up to max(100, maxReviews × 5) candidates within maxPages. It cannot produce absent ratings.
filterLanguagesarray[]Language codes such as en or de; empty allows all languages. Filters the review language, not the reviewer country. All selected filter categories must match.
filterCountriesarray[]Reviewer country codes such as US or DE; empty allows all. This filters reviewer location, not company country. Missing country information cannot satisfy a selected country filter.
verifiedOnlybooleanfalseKeep only reviews carrying a verified marker from Trustpilot. This is a source label, not independent verification by this Actor.
repliesOnlybooleanfalseKeep only reviews containing a company reply. This can reduce the sample and require more accessible pages to reach the requested limit.

Output and sample insights (optional)

ParameterType / allowed valuesSchema defaultBehavior and dependencies
includeCompanyDetailsbooleantrueControls separate Companies rows when collecting reviews. Omitted is treated as enabled; false suppresses them in combined mode. reviews mode suppresses them regardless; company-only modes force a company row.
includeCompanyResponseMetricsbooleantrueAdds responseMetrics to company rows. Computed over the collected review sample, not the entire company history. No effect when no company row is written. The schema default is true; raw runtime input that omits this boolean leaves it false. Send true explicitly when needed.
includeReviewInsightsbooleantrueAdds deterministic reviewInsights to company rows: rating/sentiment mix, languages and text heuristics. No AI call or separate insight event. No effect without company output. The schema/Console default is true; a raw runtime input omitting this boolean leaves it false, so agents should send true explicitly when needed.
emitInputStatusbooleantrueWrites invalid, failed, partial and no-review diagnostics to Input errors and INPUT_STATUS. Omitted is treated as true. false suppresses those records; SUMMARY remains essential for checking delivery.
compactbooleanfalseKeep essential review columns. It does not change review count or per-review event rates. includeRaw can still append raw data.
includeRawbooleanfalseAppend the normalized source review object under raw. Its shape depends on the available source; do not rely on a fixed mobile-API payload. Increases row size, not the review-event count.

Pagination and performance (advanced)

ParameterType / allowed valuesSchema defaultBehavior and dependencies
startPageinteger (1–10000)1First requested source page. Use 1 for a first run. Together with maxPages this defines a bounded page window, not a durable resume cursor.
sortBystring: auto, recency, relevance"auto"auto and recency request newest reviews; relevance requests source relevance where supported. Compatibility paths may fall back to recency. Exported review rows are finally sorted by publication time, so this is source selection rather than a promised output ordering.
maxRetriesinteger (0–8)3Retries for retryable requests. Although the schema allows 0, the current runtime normalizes 0 to 3; use 1–8 for an explicit nonzero count. Retries can increase time and resource use; they do not bypass access restrictions.
timeoutinteger (10–180)45Per-request timeout in seconds, not the total Actor run timeout. Set the overall run timeout and spend cap separately in your client or Console.
maxConcurrencyinteger (1–20)3Parallel target workers, 1–20. Higher concurrency can increase rate limiting and resource use; it does not increase review/page caps.

Repeat runs and regional profiles (advanced)

ParameterType / allowed valuesSchema defaultBehavior and dependencies
incrementalbooleanfalseWhen true, exclude reviews at or before the saved publication timestamp for each domain (consumer profiles use consumer:USER_ID). Without prior state, the first run is a baseline. Timestamp tracking is not an exact review-ID ledger and can miss backdated or same-timestamp reviews; use sufficient limits.
incrementalStateStoreIdstringnot declaredExisting persistent Apify key-value store with READ/WRITE permission, used only when incremental is true. Reads and updates INCREMENTAL_STATE. Missing/unreadable state stops the run rather than silently rebilling history. Use a store you control; never copy another run storage ID.
incrementalStateobject{}Manual map of domain (or consumer:USER_ID) to RFC3339 latest publication timestamp. Used for filtering only with incremental true. When a persistent store is also supplied, the later timestamp per key wins. Read the new INCREMENTAL_STATE record for the next call; an ordinary new run store is not automatic cross-run persistence.
expandRegionalDomainsbooleanfalseOptional discovery of same-name regional company profiles. Discovery depends on source availability and can leave only the original target; it is not guaranteed coverage of all countries. Additional profiles can increase review events. Keep false for the first run.
maxRegionalDomainsinteger (1–100)10Cap on discovered profiles per brand when regional expansion succeeds. Ignored when expandRegionalDomains is false. Direct review and consumer-profile targets are not expanded.

Interpret the result before automating

The default dataset contains review rows; company profiles and sample statistics are separate Companies rows. A company-only run can legitimately return zero review rows. SUMMARY.totalReviews is delivered review count, while company profile totalReviews is the source-wide count; neither proves all history was collected. Inspect failedCompanies, partialCompanies, writeErrors and INPUT_STATUS. A successful run status alone does not prove complete collection. Errors are diagnostics rather than paid review rows. Startup and platform costs can still apply when no reviews match.

Missing source values may be null, empty, or absent; do not convert them to a confirmed zero. hasReply: false describes the collected review. Sample metrics can contain zero when no reviews/replies were sampled: that does not establish a company-wide zero reply rate. Deterministic themes and sentiment are heuristics over the returned sample, not verified findings about the company.

For agents: fetch the current Actor input schema (and MCP tools/list wrapper) before building arguments, send exact field names and explicit limits, keep the returned run ID, wait/poll that run until terminal, then read its dataset and diagnostic records. A client timeout is not a reason to automatically start another paid run. Retry only after checking the existing run and correcting the cause.