Trustpilot Business Leads Scraper — Email, Phone & TrustScore
Pricing
$0.18 / 1,000 per business returneds
Trustpilot Business Leads Scraper — Email, Phone & TrustScore
Trustpilot business profiles as leads by category + country or domain list: published email, phone, street address, website, TrustScore, reviews, star distribution, claimed/verified flags, reply rate. Filter by TrustScore band. Only rows with a contact are charged. $0.18 per 1,000 businesses.
Pricing
$0.18 / 1,000 per business returneds
Rating
0.0
(0)
Developer
Scrapers Delight
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
5
Monthly active users
18 days ago
Last modified
Categories
Share
Turn Trustpilot into a B2B lead list. Pick a Trustpilot category and a country (or paste a list of domains) and get one row per business — not per review — with the contact block the business published on its Trustpilot profile (email, phone, street address, postal code, city), its website, TrustScore, review count, 1–5 star distribution, claimed and verified flags, reply rate to negative reviews, and the dates of its most recent reviews.
$0.18 per 1,000 businesses. With the default settings you are charged only for businesses that publish an email or a phone number — a business with no contact is skipped and never billed.
Who uses it
- Reputation-management and review-generation SaaS (Birdeye / Podium / Reviews.io type): find businesses with a weak TrustScore, a low reply rate or few recent reviews —
maxTrustScore: 3.5,maxReviews: 50— and reach them on their own published email and phone. - Outbound agencies: every e-commerce shop, broker, installer or agency Trustpilot lists in a category, per country, with a reachable contact.
- B2B list brokers and data teams: category × country business lists with Trustpilot's own id for deduplication, and a
profileUrlfor every row. - Competitor monitoring: paste your competitors' domains and schedule the run to track TrustScore, star distribution and reply behaviour over time.
What one row looks like
A real row from a run on 2026-09-23 (categories: ["home_garden"], countries: ["GB"]), unedited:
{"businessUnitId": "4dc3c01e00006400050fa99f","name": "National Shower Spares","domain": "showerspares.com","website": "https://www.showerspares.com/","email": "support@showerspares.com","phone": "01452 619836","address": "Units 16-17 Bamel Way, Gloucester Business Park, Brockworth","city": "Gloucester","postalCode": "GL3 4BH","countryCode": "GB","countryName": "United Kingdom","hasContact": true,"trustScore": 4.9,"stars": 5,"reviewCount": 62281,"reviewsLast12Months": 5084,"starDistribution": { "five": 58993, "four": 2219, "three": 386, "two": 182, "one": 501 },"primaryCategory": "Bathroom Remodeler","categories": [{ "id": "bathroom_remodeler", "name": "Bathroom Remodeler", "isPrimary": true },{ "id": "bathroom_supply_store", "name": "Bathroom Supply Store", "isPrimary": false },{ "id": "plumbing_supply_store", "name": "Plumbing Supply Store", "isPrimary": false }],"categoryBreadcrumb": ["Home & Garden", "Bathroom & Kitchen", "Bathroom Remodeler"],"isClaimed": true,"claimedDate": "2014-05-20T12:29:39.000Z","isVerifiedCompany": true,"verification": { "paymentMethod": false, "userIdentity": false, "google": true, "persona": false },"usesPaidFeatures": true,"isCollectingReviews": true,"isClosed": false,"consumerAlert": false,"replyPercentage": 99.4,"averageDaysToReply": 2.25,"negativeReviewsTotal": 160,"negativeReviewsReplied": 159,"lastReplyToNegativeReview": "2026-09-22 15:46:48 UTC","lastReviewDate": "2026-09-23T01:09:17.000Z","recentReviews": [{ "date": "2026-09-23T01:09:17.000Z", "rating": 5, "title": "Product quality good", "replied": false },{ "date": "2026-09-23T00:34:16.000Z", "rating": 5, "title": "Excellent service all round spoke to…", "replied": false },{ "date": "2026-09-22T23:39:00.000Z", "rating": 5, "title": "Excellent service", "replied": false }],"facebookUrl": "https://www.facebook.com/NationalShowerSpares","logoUrl": "https://s3-eu-west-1.amazonaws.com/tpd/logos/4dc3c01e00006400050fa99f/0x0.png","profileUrl": "https://www.trustpilot.com/review/showerspares.com","profileDetails": true,"source": { "type": "category", "category": "bathroom_kitchen", "country": "GB", "location": null },"scrapedAt": "2026-09-23T06:07:10.238Z"}
Every field
| Field | What it is |
|---|---|
businessUnitId | Trustpilot's own id for the business — stable, use it to dedupe across runs. Never billed twice in one run. |
name, domain | Display name and the domain Trustpilot files the profile under. |
website | The business's website as Trustpilot lists it. |
email, phone | From the business's published Contact info block, exactly as published (phones are never reformatted or "repaired"). null when not published. |
address, city, postalCode | Street address, city and postal code from the same block. |
countryCode | Trustpilot's country for the business (ISO-2). |
countryName | Country of the published contact address (only when the business published one). |
hasContact | true when there is an email or a phone. |
trustScore, stars, reviewCount | TrustScore (0–5, one decimal), star rating shown (half steps) and total reviews. |
reviewsLast12Months | Reviews received in the last 12 months — a direct read of how active the profile is. |
starDistribution | Count of 5/4/3/2/1-star reviews (sums to reviewCount). |
primaryCategory, categories, categoryBreadcrumb | Trustpilot categories (each with Trustpilot's rank of the business in it, outOf businesses ranked) and the category path. |
isClaimed, claimedDate | Whether the business has claimed its profile, and when. |
isVerifiedCompany, verification | Trustpilot's business verification (payment method, identity, Google, Persona). |
usesPaidFeatures | Whether the business is on a paid Trustpilot plan. |
isCollectingReviews, isClosed, consumerAlert | Actively inviting reviews · closed/temporarily closed · Trustpilot has posted a consumer alert. |
replyPercentage, averageDaysToReply, negativeReviewsTotal, negativeReviewsReplied, lastReplyToNegativeReview | How the business handles negative reviews. |
lastReviewDate, recentReviews | Newest review date and the latest N reviews (date, rating, title, whether the business replied). All languages. |
facebookUrl, logoUrl | Facebook page linked on the profile; logo. |
previouslyClaimed, hasSubscription, usesAiReplies, hasCollectedIncentivisedReviews | Claimed before (even if not now) · on a Trustpilot subscription · replies with Trustpilot's AI responses · has collected incentivised reviews. |
locationsCount | Number of branch locations on the profile. |
promotionTitle, sellingPoints | The business's own tagline and selling points from its profile (paid profiles). |
reviewsByLanguage | Review counts per language, e.g. {"en": 1578342, "de": 30}. |
similarBusinesses | Up to 8 competitors Trustpilot shows beside the profile (name, domain, TrustScore, reviews) — ready-made lookalike leads. |
profileUrl | The Trustpilot profile. |
profileDetails | true when the profile page was read (all rows by default). |
source | Which category/country (or domain input) produced the row. |
Inputs
| Input | Default | What it does |
|---|---|---|
categories | ["electronics_store"] | Trustpilot category ids from the URL trustpilot.com/categories/<id> (a full URL works too). Broad branches such as home_garden are fine — see the 10,000 cap below. |
countries | ["GB"] | ISO-2 codes; each category is walked once per country. |
location | — | A city, using Trustpilot's own location filter. |
domains | — | Look up specific businesses by domain, website URL or Trustpilot profile URL. |
onlyWithContact | true | Deliver and charge only businesses with an email or phone. |
requireEmail / requirePhone | false | Stricter contact filters. |
minTrustScore / maxTrustScore | 0 / 5 | TrustScore band — e.g. maxTrustScore: 3.5 for businesses that need reputation help. |
minReviews / maxReviews | 0 / 0 (no bound) | Review-count band. |
claimedOnly | false | Only claimed profiles. |
includeProfileDetails | true | Read each profile for the claimed flag, star distribution, reply rate and recent reviews. Off = listing fields only, faster. |
recentReviews | 3 | Recent reviews per business (0–20). |
maxResults | 50 | Stop after this many delivered businesses (0 = no limit). |
maxPagesPerListing | 0 (all) | Page cap per category × country (20 businesses per page). |
splitCappedCategories | true | Walk sub-categories when Trustpilot caps a listing at 10,000. |
concurrency | 10 | Pages read in parallel (1–12). |
proxyConfiguration | none | Not needed — see "How it works". |
Filters run before anything is charged, and TrustScore/review filters run before a profile page is even fetched.
Pricing
$0.18 per 1,000 businesses (business-lead event, $0.00018 each). No start fee.
- Charged once per business delivered to your dataset.
- Never charged: businesses without an email or phone (with the default
onlyWithContact), duplicates (a business in two sub-categories or two of your domains), domains that have no Trustpilot profile, businesses removed by your filters, and pages Trustpilot would not serve. - Delivery and billing are one atomic step, so a spending limit you set stops delivery exactly at the limit — you never receive rows you did not pay for, or pay for rows you did not receive.
An empty-input run delivers 50 businesses: $0.009.
How much contact data to expect — measured, not promised
The contact block exists only on profiles the business has claimed and chosen to fill in. How many rows carry it depends heavily on which businesses you pull, so here are the three frames we measured on 2026-09-23 (all counts over every business, including those with no contact):
| Frame | Businesses | Phone | Email or phone | Street address | Claimed | |
|---|---|---|---|---|---|---|
Top of the listing (first page of electronics_store, plumber, car_dealer in US, GB, DE) | 179 | 79.3% | 73.7% | 82.7% | 72.6% | 93.3% |
| Random profiles from Trustpilot's own sitemap | 150 | 41.3% | 30.0% | 41.3% | 35.3% | 58.7% |
An entire category, every page (electronics_store, listing fields) | US 3,309 · DE 788 | 18.3% · 12.9% | 14.1% · 9.6% | — | 21.4% · 15.2% | — |
So: contact fill runs from ~13% to ~83% depending on depth into the listing. Trustpilot orders a category by its own "recommended" ranking, which puts claimed, active businesses first; the long tail is mostly unclaimed profiles with no contact at all (0 of 62 unclaimed profiles in the sitemap sample had one). That is why the default charges only rows with a contact — you pay for leads, not for empty profiles.
Profile-level fields are always present when the profile is read: website, TrustScore, review count, star distribution, reviews in the last 12 months and last review date were 100% filled in every frame.
The run's RUN_SUMMARY record (Storage → Key-value store) reports the fill of every field for your run, how many businesses Trustpilot stated vs how many unique ones were collected per listing, and every business that was skipped and why.
How it works
Every page on trustpilot.com sits behind an AWS WAF "Verifying Connection" check that answers plain HTTP clients with HTTP 403 — from home, datacenter and residential IPs alike. The actor opens one real Chromium page, lets it pass the check (about 2 seconds), then reads every listing and profile over plain HTTP carrying the resulting cookie. It re-runs the check only if Trustpilot asks again. No login, no Trustpilot account, no proxy needed; in our tests 188 consecutive pages were served on one check with zero challenges.
Data comes from the JSON Trustpilot embeds in its own pages (the same data the page renders), so field values are exactly what the profile shows.
The 10,000 cap. Trustpilot shows at most 500 pages × 20 = 10,000 businesses per category listing (page 501 is empty). When a listing reports that cap the actor walks the category's sub-categories instead (e.g. Trustpilot counts 23,985 businesses in home_garden but its GB listing stops at 10,000, so its 10 sub-categories are walked one by one), deduplicating on businessUnitId. A leaf category that is itself capped is walked to its 10,000 and the run summary marks it cappedBySite.
Completeness check. When a listing is walked to its last page, the unique businesses collected are compared with the count Trustpilot states. Measured: 3,309 of 3,327 (99.5%) for electronics_store US and 788 of 789 for DE — a handful of businesses shift between pages while the walk runs. A walk that falls below 97% stops the run with an error instead of delivering a short list as if it were complete.
Data limits
- Contact data is what the business typed in. The "Contact info" block is a Trustpilot convention, not a legal register: businesses choose what to publish, and some publish a support mailbox or a shared number (two sister shops can list the same phone). For EU businesses it often matches their legal notice (Impressum), but nothing guarantees that.
- No contact on unclaimed profiles. Measured above.
- Trustpilot's own addresses never ship as a business's: any email or website on a Trustpilot domain is dropped, and the run fails loudly if one ever reaches the output (the run summary's
platformContactsLeakedis 0 in every test run). - Phones are verbatim. We do not reformat to E.164, because Trustpilot has no reliable per-number country and a "repaired" number is a guess.
- Listing order is Trustpilot's. It ranks by its own relevance; a full walk may miss or repeat under 1% of businesses when rankings shift mid-walk (repeats are never charged twice).
- Recent reviews are a sample (dates, stars, titles) to show activity — this actor sells the business row, not review text. For full review text use a reviews scraper.
- Profile-only fields (
isClaimed,starDistribution, reply behaviour, recent reviews) arenullwhenincludeProfileDetailsis off, and for the rare listing row whose profile could not be read (the row is still delivered withprofileDetails: false).
Source
The public pages of www.trustpilot.com (category listings and business profile pages), read without logging in. Some rows belong to sole traders, so a name, email or phone can be personal data — comply with GDPR, CCPA and other data-protection rules when you use it.
FAQ
Can I get every business in a big branch like home_garden? Yes — leave splitCappedCategories on and maxResults: 0. The run walks the sub-categories past Trustpilot's 10,000-per-listing cap.
How do I find businesses with bad ratings? maxTrustScore: 3 (and maybe minReviews: 20 so the score means something). The listing is ordered best-first, so expect the run to read many listing pages per delivered row; listing pages are cheap and never charged.
Why do some rows have countryCode and countryName that differ? countryCode is the country Trustpilot files the business under; countryName is the country of the contact address the business published. A German shop with a UK returns address shows both.
What if a domain has no Trustpilot profile? It is listed under notFoundOnTrustpilot in the run summary and not charged.