Trustpilot Reviews Scraper API | Company Replies avatar

Trustpilot Reviews Scraper API | Company Replies

Pricing

from $0.10 / 1,000 delivered reviews

Go to Apify Store
Trustpilot Reviews Scraper API | Company Replies

Trustpilot Reviews Scraper API | Company Replies

Trustpilot reviews API for ratings, review text, company replies and business details. Filter star ratings, languages and dates; export JSON/CSV for reputation monitoring. No personal login needed. Browser resources cost extra; complete historical coverage is not guaranteed.

Pricing

from $0.10 / 1,000 delivered reviews

Rating

0.0

(0)

Developer

tingyou333 zhuang

tingyou333 zhuang

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 days ago

Last modified

Share

Trustpilot reviews API for ratings, review text, company replies and business details. Filter star ratings, languages and dates; export JSON/CSV for reputation monitoring. No personal login needed. Browser resources cost extra; complete historical coverage is not guaranteed.

Try the prefilled example · Inspect sample JSON before signing in · Download sample CSV

Choose your first workflow

GoalStart here
Inspect five recent reviews for one companyOpen the prefilled example, inspect the input and price, then Start
Integrate CSV/JSON into your own scriptStep-by-step guide
Call this named tool from an AI assistantDirect MCP setup

What this adds: Source coverage reports accompany filtered review exports so that partial collections remain visible. No personal Trustpilot login or browser cookie is required.

Replace companyUrls with domains or Trustpilot company URLs. Use the input fields for language, star and date filters; URL query parameters are ignored.

{
"companyUrls": [
"pipedrive.com"
],
"maxReviewsPerCompany": 5,
"languages": [
"all"
],
"sort": "recency",
"includeCompanyInfo": true
}

The September 27, 2026 (UTC+8) owner check returned 5 non-error data records. The linked preview selects up to three records and a subset of fields. It omits full descriptions and reviewer identities; textExcerpt, hasDeveloperReply, hasCompanyReply, counts and presence flags in previews are derived summaries, not additional Actor fields. Live results can differ. This is sample execution evidence, not proof of complete coverage or customer adoption.

Cost at a glance

Free planStarter / BronzeScale / SilverBusiness / Gold+
$0.3$0.27$0.22$0.1

Rates per 1,000 delivered reviews. No custom start fee. Browser runtime and other platform resources are additional.

At the Free-plan result rate, this 5-record sample adds $0.00150 in event fees. The owner check recorded $0.001197 in resources, giving an illustrative $0.00270 combined at that result rate and resource usage. Actual costs vary with retries, proxy traffic, storage and exports.

The Console example has a $0.15 Actor-event cap, 1024 MB memory and a 240-second timeout. The event cap does not cap separate platform resources. “Try for free” uses available account credits. Check the live Pricing tab for your account rate.

Coverage to know: Complete historical coverage is not guaranteed. Replies are included only when published. Source totals and filtered feeds may disagree. Keep browser memory at 1 GB for this starter; a 256 MB trial crashed during navigation.

Full workflow guide · Python starter ZIP · Compare all ten workflows

First run from the Input form

The Input form now starts with the small configuration below. Review the target and Pricing tab before Start, then inspect the dataset and coverage diagnostics. Increase the limits after checking the sample. Saved tasks and explicitly supplied API inputs keep their own settings.

{
"maxReviewsPerCompany": 5,
"languages": [
"all"
],
"companyUrls": [
"pipedrive.com"
],
"sort": "recency",
"includeCompanyInfo": true
}

This browser workflow requires at least 1 GB memory. Apify raises smaller memory requests to 1 GB, so resource charges use at least 1 GB. The default is already 1 GB.

Guides and full reference

Collect public reviews, reviewer information, company replies and company metadata from Trustpilot. Export JSON or CSV and use the Actor from the Apify API or scheduled tasks. No personal account or browser cookies are required.

Bounded cloud collection and delivery-billing tests have passed. Public-source access limits apply; complete historical coverage is not guaranteed. This Actor is not affiliated with Trustpilot.

Use a domain or an HTTPS trustpilot.com/review/... company URL. Limits apply separately to each company and count matching reviews delivered to the dataset. Query parameters in a company URL are ignored: set the corresponding input fields explicitly.

Input reference

InputDefaultBehavior
companyUrlsRequiredNonempty array of domains or Trustpilot company URLs. Exact duplicate inputs are removed.
maxReviewsPerCompany0Maximum matching reviews per company; zero means no result cap. Set a cap for an initial trial.
stars[]Any of "1" through "5", as strings. Empty means all ratings.
languages[]Empty preserves the website language default, commonly English. ["all"] requests all languages; individual language codes select those languages.
sort"recency""recency" or "relevance", as ordered by the source.
date""All dates, or last30days, last3months, last6months, last12months. Source applies these relative windows.
publishedAfterUnsetStrictly newer than this ISO date or timestamp. A date means midnight UTC; timestamps must contain a timezone.
verifiedfalseRequests the source's verified feed. Output eligibility accepts verified/invited review labels; reviewer identity verification is separate.
withRepliesfalseOnly reviews with a company reply.
includeCompanyInfotrueInclude company fields alongside each review.

For multiple requested languages, the Actor reads the all-language feed and filters the union locally, preserving source order. This can fetch substantially more reviews than it returns. With recency sorting, publishedAfter stops pagination after the first fetched page reaches the exact publication cutoff. Observed publication dates must be nonincreasing within and across fetched pages; otherwise the target fails. Relevance sorting scans the selected feed because that order cannot establish a time boundary. Use a source date window where appropriate to reduce work.

Output fields

GroupFields
ReviewreviewId, reviewUrl, title, text, rating, publishedDate, experienceDate, updatedDate, language, likes, source
Review verificationverificationLevel, isVerified
ReviewerauthorName, authorId, authorImage, authorReviewCount, country, authorIsVerified
ReplyreplyMessage, replyPublishedDate, replyUpdatedDate
CompanycompanyName, companyDomain, companyTrustScore, companyStars, companyTotalReviews, companyCategories, companyUrl, companyId
Additional source fieldssubmittedDate, sameCompanyReviewCount

Unavailable source values remain null. Company fields are omitted when includeCompanyInfo is false. companyTrustScore is the numeric score; companyStars is the displayed star value and can differ. authorIsVerified does not establish that a review is verified.

Four dataset views display Reviews, Authors and verification, Company replies, and Company metadata. JSON export contains all fields, regardless of the selected table view.

Example review record

A frozen example from the private cloud probe epbvRwqm6BefjIJCY; company totals and replies can change later.

{
"reviewId": "6a9803f1574b106456ec6975",
"reviewUrl": "https://www.trustpilot.com/reviews/6a9803f1574b106456ec6975",
"title": "The meeting was really helpful",
"text": "The meeting was really helpful and Rafael very easy to talk to. I got good advice and look forward for our next session. ",
"rating": 5,
"publishedDate": "2026-09-02T13:09:37.000Z",
"experienceDate": "2026-09-02T00:00:00.000Z",
"updatedDate": null,
"language": "en",
"likes": 0,
"verificationLevel": "invited",
"isVerified": false,
"source": "BasicLink",
"authorName": "Marian Seppälä",
"authorId": "6a9803e3452b16209f4da30a",
"authorImage": "https://user-images.trustpilot.com/6a9803e3452b16209f4da30a/73x73.png",
"authorReviewCount": 1,
"country": "SE",
"replyMessage": "Hi Marian,\n\nThank you for sharing your feedback!\n\nWe’re glad to hear that you found the meeting helpful and that the team made the session easy and comfortable. \nIt’s great to know that you received useful advice and are looking forward to the next session.\n\nBest regards,\nPipedrive Team",
"replyPublishedDate": "2026-09-02T13:19:01.000Z",
"replyUpdatedDate": null,
"authorIsVerified": false,
"submittedDate": null,
"sameCompanyReviewCount": 1,
"companyName": "Pipedrive",
"companyDomain": "pipedrive.com",
"companyTrustScore": 4.4,
"companyStars": 4.5,
"companyTotalReviews": 3447,
"companyCategories": [
"Business to Business Service",
"CRM Provider",
"Software Company"
],
"companyUrl": "https://www.trustpilot.com/review/pipedrive.com",
"companyId": "514581950000640005241c4f"
}

Counts, limits and failures

The OUTPUT key-value-store record provides per-company delivered/fetched counts, page counts, actual source filters, source totals, limit/exhaustion status and failedTargets. Source filteredTotal and profile companyTotal measure different populations. For a language union, filteredTotal describes the all-language feed read, not just the delivered languages. Exhausting a selected feed does not prove every review counted on the company profile is publicly accessible.

The Actor validates company identity, pagination counts, applied filters, duplicate IDs and cross-page consistency. A changing source total or inconsistent page fails the target rather than claiming complete history. Only a www. domain alias is accepted automatically; other identity changes are rejected.

Network timeouts, connection resets and HTTP 429/500/502/503/504 receive at most one retry per page, sharing a two-navigation budget with query-redirect recovery. Invalid input and inconsistent data are not treated as empty results. HTTP 404 fails immediately. Challenges that do not clear through normal loading time out; there is no CAPTCHA solver.

A failed company does not discard earlier successful companies or already delivered reviews. Inspect failedTargets even if the run status is SUCCEEDED. All-company failure makes the run fail. A genuine empty selected feed succeeds with zero reviews.

API example

Store your Apify token in an environment variable; never put it in the Actor input.

curl --request POST \
--header "Authorization: Bearer $APIFY_TOKEN" \
--header 'Content-Type: application/json' \
--data '{"companyUrls":["pipedrive.com"],"maxReviewsPerCompany":20}' \
'https://api.apify.com/v2/acts/peerless_columbine~trustpilot-reviews-data-scraper/runs'

The response contains the run ID and dataset ID. Poll /v2/actor-runs/{runId} until terminal, retrieve /v2/datasets/{defaultDatasetId}/items, and inspect the default key-value store's OUTPUT record for completeness and failures. Use your own Apify account and API token.

Verification and current limits

Bounded cloud tests cover Pipedrive combinations of star/date/language/reply filters, multi-page acquisition, verified/relevance sorting, genuine empty results, multiple companies and www redirects. A German/French union delivered four matching reviews after fetching 180 reviews across nine pages. These examples do not establish a general success-rate or cost advantage.

Input and principal output names target compatibility with automation-lab/trustpilot build 0.1.46. Exact paid-run value parity has not been established. Transient retry fault tests are local; cloud failure/recovery coverage is still being expanded. Owner PPE cap/empty tests pass; customer settlement, full cost comparison and broader workload validation remain pending. No revenue or universal competitor superiority is claimed.

Pricing

Delivered reviews per 1,000: Free $0.30; Bronze $0.27; Silver $0.22; Gold $0.10; Platinum $0.10; Diamond $0.10. Platform usage is additional. No custom start event fee; even zero-result runs may incur platform usage. This replaces the earlier internal $0.003 startup draft. Owner cloud tests verified two delivered rows/two events at the event cap and zero review events for empty results. Owner tests do not establish customer settlement.

When the event budget is exhausted, the Actor stops delivering, marks budgetReached, and lists unstarted companies under skippedTargets. This is a partial result, not an exhausted feed.

When cursorReached is true, the run reached the requested publication boundary; it did not exhaust all historical reviews. Reviews at the exact timestamp are excluded. This does not detect edits to reviews published before the cursor.

Python client example

Use the apify-client package. The iterator handles dataset pagination; checking the run and diagnostics prevents silently treating a partial run as complete.

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("peerless_columbine/trustpilot-reviews-data-scraper").call(
run_input={"companyUrls": ["pipedrive.com"], "maxReviewsPerCompany": 20}
)
if run is None or run["status"] != "SUCCEEDED":
raise RuntimeError("Actor did not complete successfully")
record = client.key_value_store(run["defaultKeyValueStoreId"]).get_record("OUTPUT")
summary = record["value"]
if summary["failedTargets"] or summary.get("budgetReached"):
raise RuntimeError(f"Partial run: {summary}")
for review in client.dataset(run["defaultDatasetId"]).iterate_items():
print(review["reviewId"], review["rating"], review["text"])

The requested result cap can intentionally produce a partial historical feed even when no target failed. Use each target's limitReached, cursorReached and exhaustedSelectedFeed fields to distinguish these outcomes. Configure schedules and integrations in Apify Console; they are platform features, not custom notification logic in this Actor.

Known source login limit

A cloud run of the last12months Pipedrive feed was redirected to Trustpilot login on page11 after200 delivered reviews, although the selected total was398. This run failed with partial data; complete long-history extraction is not verified. Login redirects stop the target without retry or personal credentials. Previously verified complete6-page/4-page feeds remain bounded evidence, not a guarantee of unrestricted history.

Delivery counts use the SDK accepted count for priced review events. Reviews rejected by the event budget do not increase rowsSaved. Free or zero-priced writes can still save records. A positive automatic dataset-item fee alongside the review fee is rejected to prevent duplicate charges. An uncertain write is reported as a target failure and is not automatically replayed. These controls do not remove the documented source-access limits.

Repeated company inputs are merged after domain normalization, including the equivalent www alias. The first submitted form is retained, so entering both example.com and www.example.com does not create two crawls or duplicate review charges. Other subdomains remain separate targets. This uses the same company-identity rule as source-page validation.

Reading completion and failure reports

The Source counts, limits and failed targets output opens the native key-value record list. Open OUTPUT for per-company delivery counts, parsed source pages, fetched reviews, limits, budget stops and failures. The raw API record remains /v2/key-value-stores/{storeId}/records/OUTPUT.

pagesFetched counts successfully parsed source pages even if later continuity, filtering or delivery validation fails. Failed targets also retain reviewsFetched; these counts do not mean those reviews were delivered or the source was complete. If both the requested result cap and event budget are reached on the same review, limitReached and budgetReached are both true. Inspect skippedTargets for companies not started after the budget stop.

Measured customer-cost examples

The default run limit is 900 seconds with 1,024 MB of memory. Console/API overrides take precedence. A longer timeout does not solve source login restrictions.

The table reprices measured private-run resource quantities using the public platform tariffs and our current Bronze result fee ($0.27 per 1,000 delivered reviews, no custom start fee). It includes compute, transfers and run storage operations; it is not a customer invoice. Historical samples may precede the active fee configuration.

Observed workloadDelivered reviewsResult feePlatform resourcesModeled total
One complete selected three-month feed109$0.029430$0.002901$0.032331
One complete selected German-language feed78$0.021060$0.002521$0.023581
Multiple-language filter sample4$0.001080$0.002313$0.003393
Two reviews, stopped at event budget2$0.000540$0.001404$0.001944

These examples exclude monthly plan commitment, taxes, post-run downloads and time-based retention. Source size, filters, retries and runtime versions can change costs. A sparse language filter can fetch substantially more than it delivers; an event budget does not cap platform-resource spending. No uniform cost per 1,000 reviews, unrestricted-history support or future savings guarantee follows from these samples.

Public star-feed coverage

For chronological requests above200 results (or unlimited), when the source reports more than200 matching reviews, this version merges the five public star-filter lists by publication time. It retains all original filters, checks ordering and duplicates, and never requests beyond the exposed ten-page anonymous range of any individual list. If one required list still exceeds that range, coverage remains blocked; unrestricted history is not promised.

The source can report a different total on its unfiltered landing than the sum of its star-filter lists. Valid rows are retained, but sourceTotalsConsistent=false, exhaustedSelectedFeed=false, and a warning make clear that global completeness is unverified. partitionTotal and exhaustedPartitions describe only those independently fetched lists. A bounded result is not complete history even when the requested result limit is met.