Trustpilot Company Scraper
Pricing
from $0.97 / 1,000 company records
Trustpilot Company Scraper
Collect Trustpilot company listings, optional profile details, and optional reviews from search queries, categories, or company URLs.
Pricing
from $0.97 / 1,000 company records
Rating
0.0
(0)
Developer
Farhan Ali
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
5 days ago
Last modified
Categories
Share
Trustpilot Company Scraper creates a structured dataset of companies collected from Trustpilot. Each dataset item represents one company and can include name, TrustScore, stars, review counts, location, categories, optional profile details (contact, verification, activity, rating breakdown), and optional nested reviews. Query the source with search terms (searchQueries), category slugs (categoryIds), or Trustpilot search, category, or review URLs (startUrls). Control the result limit with maxItems, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, XML, or another supported format.
Dataset at a glance
| Property | Value |
|---|---|
| Source | trustpilot.com |
| Record unit | One Trustpilot company, with optional nested reviews |
| Input methods | Search terms (searchQueries), category slugs or URLs (categoryIds), and/or Trustpilot URLs (startUrls) |
| Main identifiers | companyId, profile URL (url), identifyingName |
| Delivery | Apify Dataset and API |
| Export formats | JSON, CSV, Excel, XML, HTML (Apify dataset exports) |
| Update model | Fresh records per Actor run |
| Pricing | $1 / 1,000 companies; +$1.50 / 1,000 company details; +$1.50 / 1,000 reviews; Actor start $0.00005 |
Coverage and available records
The Actor collects public Trustpilot companies from one or more entry points. Provide at least one of searchQueries, categoryIds, or startUrls.
- Search-based:
searchQueries(for exampleClothing store in United Statesordog trainer).countryis an ISO code that scopes search and category results (defaultUS). - Category-based:
categoryIdsaccepts slugs such ascats_dogsorclothing_store, or a category page URL. - URL-based:
startUrlsaccepts search, category, or company review URLs (for examplehttps://www.trustpilot.com/review/sportdecals.com).
Record types and limits:
- Listing-level companies are always collected: identifiers, TrustScore, stars, review counts, location, categories, and status flags when Trustpilot returns them.
- Company details are conditional: claimed status, verification, contact, activity, rating breakdown, and similar companies are returned when
scrapeCompanyDetailsis enabled (defaultfalse) and charged ascompany-details. - Reviews are conditional: a nested
reviewsarray is returned whenscrapeReviewsis enabled (defaultfalse) and charged per review.maxReviewscaps reviews per company (default5;0= all). - Result cap:
maxItemslimits companies (0means unlimited; console prefill10).
Known exclusions: content Trustpilot only shows after login is not collected; each run captures profile state at run time (no historical snapshots); reviews are nested on the company record and are never separate dataset rows.
Data dictionary
Field names below match dataset record JSON properties exactly. Fields marked conditional appear only when the corresponding input toggle is enabled.
Company listing fields
| Field | Type | Nullable | Description | Example |
|---|---|---|---|---|
companyId | string | No | Trustpilot company identifier; recommended deduplication key | 597650820000ff0005a75542 |
name | string | Yes | Company name | Red Tuna Shirt Club |
identifyingName | string | Yes | Domain-style identifying name | redtunashirtclub.com |
url | string | Yes | Trustpilot review-profile URL | https://www.trustpilot.com/review/redtunashirtclub.com |
website | string | Yes | Company website | https://redtunashirtclub.com |
logoUrl | string | Yes | Logo image URL | https://s3-eu-west-1.amazonaws.com/tpd/logos/597650820000ff0005a75542/0x0.png |
stars | number | Yes | Star rating | 5.0 |
trustScore | number | Yes | TrustScore | 4.9 |
numberOfReviews | number | Yes | Total review count | 3467 |
numberOfReviewsLast12Months | number | Yes | Reviews in the last 12 months | 317 |
email | string | Yes | Email when shown on the listing or details | hello@redtunashirtclub.com |
phone | string | Yes | Phone when shown | 888-411-1704 |
location | object | Yes | {address, city, zipCode, country} | See example record |
country | string | Yes | Country as shown | US |
countryCode | string | Yes | ISO country code used for the query | US |
categories | object[] | Yes | {id, name, isPrimary} | [{"id": "clothing_store", "name": "Clothing Store", "isPrimary": false}] |
isRecommended | boolean | Yes | Recommended flag | false |
isVerified | boolean | Yes | Verified flag | true |
isClaimed | boolean | Yes | Claimed-profile flag | true |
isClosed | boolean | Yes | Closed flag | false |
isTemporarilyClosed | boolean | Yes | Temporarily closed flag | false |
isCollectingReviews | boolean | Yes | Whether the profile is collecting reviews | true |
source | string | Yes | Seed type (search, category, or URL) | search |
searchQuery | string | Yes | Search term that produced the record | Clothing store in United States |
listingType | string | Yes | Listing source label | search |
Company detail fields (conditional — scrapeCompanyDetails)
| Field | Type | Nullable | Description | Example |
|---|---|---|---|---|
verification | object | Yes | {verifiedByGoogle, verifiedPaymentMethod, verifiedUserIdentity} | See example record |
contactInfo | object | Yes | Contact object (email, phone, city, country, zip) | See example record |
reviewRatings | object | Yes | Star-count breakdown (total, one–five) | See example record |
activity | object | Yes | Activity object when Trustpilot returns it | Object as returned by the source |
similarCompanies | array | Yes | Similar-company list when shown | Array as returned by the source |
hasCollectedIncentivisedReviews | boolean | Yes | Incentivised-review flag | Flag when shown |
locationsCount | number | Yes | Location count when shown | Count when shown |
Review fields (conditional — scrapeReviews)
Each company record may include a reviews array. One review object:
| Field | Type | Nullable | Description | Example |
|---|---|---|---|---|
id | string | No | Review identifier | 6a71d8f487df15bb35928f39 |
title | string | Yes | Review title | My son loved getting these each month… |
text | string | Yes | Review body | My son loved getting these each month... |
rating | number | Yes | Star rating | 5 |
language | string | Yes | Language code | en |
likes | number | Yes | Like count | 1 |
source | string | Yes | Review source label | Shopify |
publishedDate | string | Yes | Published timestamp (ISO 8601) | 2026-08-04T14:20:04.000Z |
isVerified | boolean | Yes | Verified-review flag | true |
consumerDisplayName | string | Yes | Reviewer display name | Sandra Lincoln |
consumerCountryCode | string | Yes | Reviewer country | US |
reviewsScraped is the number of reviews attached to that company in this run.
Example dataset record
Company from search Clothing store in United States with scrapeCompanyDetails and scrapeReviews on (maxReviews: 5). The reviews array is shortened to one object.
{"companyId": "597650820000ff0005a75542","name": "Red Tuna Shirt Club","identifyingName": "redtunashirtclub.com","url": "https://www.trustpilot.com/review/redtunashirtclub.com","website": "https://redtunashirtclub.com","logoUrl": "https://s3-eu-west-1.amazonaws.com/tpd/logos/597650820000ff0005a75542/0x0.png","stars": 5.0,"trustScore": 4.9,"numberOfReviews": 3467,"email": "hello@redtunashirtclub.com","phone": "888-411-1704","location": {"address": "","city": "Houston","zipCode": "77005","country": "US"},"country": "US","categories": [{"id": "printed_clothing_store", "name": "Printed Clothing Store", "isPrimary": false},{"id": "clothing_store", "name": "Clothing Store", "isPrimary": false}],"isRecommended": false,"isVerified": true,"source": "search","searchQuery": "Clothing store in United States","listingType": "search","numberOfReviewsLast12Months": 317,"countryCode": "US","isClaimed": true,"isClosed": false,"isTemporarilyClosed": false,"isCollectingReviews": true,"verification": {"verifiedByGoogle": false,"verifiedPaymentMethod": true,"verifiedUserIdentity": false},"contactInfo": {"email": "hello@redtunashirtclub.com","city": "Houston","country": "US","phone": "888-411-1704","zipCode": "77005"},"reviewRatings": {"total": 3467,"one": 19,"two": 12,"three": 39,"four": 169,"five": 3228},"reviews": [{"id": "6a71d8f487df15bb35928f39","title": "My son loved getting these each month…","text": "My son loved getting these each month and reading about the charter. A great gift for the fisherman in your life!","rating": 5,"language": "en","likes": 1,"source": "Shopify","publishedDate": "2026-08-04T14:20:04.000Z","isVerified": true,"consumerDisplayName": "Sandra Lincoln","consumerCountryCode": "US"}],"reviewsScraped": 5}
The record above was produced with this input:
{"searchQueries": ["Clothing store in United States"],"country": "US","maxItems": 3,"scrapeCompanyDetails": true,"scrapeReviews": true,"maxReviews": 5}
Query and input reference
| Input | Type | Required | Default | Accepted values | Description |
|---|---|---|---|---|---|
searchQueries | array (string) | No* | — (prefill Clothing store in United States) | Company search terms | Search entry point |
country | string | No | US | ISO country code (US, GB, DE, FR, …) | Scopes search and category results |
categoryIds | array (string) | No* | — | Category slugs or category page URLs | Category entry point |
startUrls | array (requestListSources) | No* | — | Trustpilot search, category, or /review/… URLs | URL entry point |
maxItems | integer | No | 0 | 0 or any positive integer | Maximum companies; 0 = unlimited (console prefill 10) |
scrapeCompanyDetails | boolean | No | false | true / false | Attach profile details (charged as company details) |
scrapeReviews | boolean | No | false | true / false | Attach nested reviews (charged per review) |
maxReviews | integer | No | 5 | 0 or any positive integer | Review cap per company; 0 = all |
proxyConfiguration | object | No | Apify proxy, RESIDENTIAL | Apify proxy groups or custom proxies | Residential proxies are recommended |
* Provide searchQueries, categoryIds, and/or startUrls — at least one source is required.
Minimal request:
{ "searchQueries": ["Clothing store in United States"], "country": "US" }
Advanced request (details and capped reviews):
{"searchQueries": ["Clothing store in United States"],"country": "US","maxItems": 10,"scrapeCompanyDetails": true,"scrapeReviews": true,"maxReviews": 5,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
Retrieve the data through the API
Records are delivered through the Apify Actor and Dataset APIs — not an official Trustpilot API.
- Start the Actor with a JSON input (console or API).
- Wait for the run to finish, or use a synchronous endpoint if you want the response inline.
- Retrieve items from the run's default dataset.
- Paginate or export the dataset.
Python example:
from apify_client import ApifyClientclient = ApifyClient("YOUR-APIFY-TOKEN")run_input = {"searchQueries": ["Clothing store in United States"],"country": "US","maxItems": 3,"scrapeCompanyDetails": True,"scrapeReviews": True,"maxReviews": 5,}run = client.actor("datascrapers/trustpilot-scraper").call(run_input=run_input)for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["name"], item.get("trustScore"), item.get("numberOfReviews"))
Apify generates ready-to-run Python, JavaScript, and cURL examples on the Actor's API tab. Do not put a real API token in shared code or URLs.
Data quality and record handling
- Conditional fields: details and reviews appear only when their toggles are enabled. Listing-only runs return a leaner company record.
- Source changes: Trustpilot page structure and values can change; unreadable fields are omitted or returned as null rather than fabricated.
- Deduplication: within a run, companies are identified by
companyId. Across runs, records are appended. - Failures: one failed company or review page does not stop the run. The run stops if a spending limit is reached.
- Normalization:
stars,trustScore, andratingare numeric.publishedDateis ISO 8601. Review text comes from Trustpilot.
Export and pipeline examples
| Destination | Recommended method | Typical use |
|---|---|---|
| PostgreSQL / Supabase | Dataset API poll or webhook consumer | Store company scores and nested reviews |
| Google Sheets | Apify Google Sheets integration | Share competitor shortlists |
| CRM / lead tools | Dataset API or completion webhook | Website, email, and phone from claimed profiles |
| S3 / cloud storage | Scheduled export via Apify scheduler + integration | Archival of reputation snapshots |
Pricing and cost examples
The Actor uses pay-per-event pricing. Each run also charges a one-time Actor start. Residential proxies are recommended. Proxy and compute are billed by your Apify plan. Event charges may be tiered on Apify paid plans.
| Event | Trigger | Rate |
|---|---|---|
| Actor start | Once per run | $0.00005 |
dataset-item (Company record) | Each company written to the dataset | $0.001 / company ($1 / 1,000) |
company-details (Company Details) | Profile enrichment (scrapeCompanyDetails) | $0.0015 / company ($1.50 / 1,000) |
review (Review) | Each nested review (scrapeReviews) | $0.0015 / review ($1.50 / 1,000) |
Example costs (Actor start negligible; plan-tier discounts not applied):
| Records | Configuration | Estimated base cost |
|---|---|---|
| 1,000 | Companies only | $1.00 |
| 1,000 | Companies + details | $2.50 |
| 1,000 | Companies + details + 5 reviews each | $10.00 |
Estimates depend on the verified pricing model and the options selected for the run.
Limitations and responsible data use
- The Actor collects publicly accessible Trustpilot company and review data only.
- Field availability depends on what Trustpilot renders at run time; contact and verification fields can be missing.
- The Actor does not provide historical snapshots unless you store them yourself.
- Large runs should use residential proxies; without them, coverage may degrade.
- You are responsible for compliance with Trustpilot's terms of service, applicable privacy law, and any contractual obligations before using the data.
Dataset questions
What does one dataset item represent?
One Trustpilot company. Reviews, when requested, nest in reviews on that company.
Which field should I use as a unique identifier?
companyId is the recommended deduplication key. url and identifyingName are reasonable secondary keys.
Are fields nullable or conditional?
Yes. Details and reviews exist only when their toggles are enabled. Email, phone, and some status flags can be empty when Trustpilot does not show them.
Can I retrieve the records as CSV or JSON?
Yes. The dataset can be exported as JSON, CSV, Excel, XML, or HTML from the Apify Console, and queried through the Dataset API. Nested reviews flatten according to the export format.
Does the Actor return historical data?
No. Each run captures profile and review state at run time. To track TrustScore or new reviews, schedule repeated runs and store the outputs yourself.
What counts as a billable result?
Actor start once per run ($0.00005), a company charge per company ($0.001), a company-details charge when details are collected ($0.0015), and a review charge per nested review ($0.0015).
Related datasets from Data Scrapers
- Yelp Scraper — Local-business ratings that can be joined to Trustpilot companies by name or website.
- Tripadvisor Reviews Scraper — Travel and hospitality reviews for the same reputation pipelines.
- Google Play Store App Reviews — App reviews that pair with Trustpilot product and brand comments.
- Clutch.co Company Scraper — B2B company ratings and reviews for service-provider analysis.
- Glassdoor Jobs Scraper — Employer ratings that sit beside Trustpilot consumer scores.
Data Scrapers support
Need an additional field, record type, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample source URL, required fields, expected record volume, and preferred delivery format.