Guides / Scrape Trustpilot
How to Scrape Trustpilot in 2026
Trustpilot is one of the most popular business review platforms, used for brand monitoring, competitor analysis, and reputation management. Browser7 handles the anti-bot protection and JavaScript rendering so you can extract review data with a single API call.
What makes Trustpilot hard to scrape
Anti-bot protection
Trustpilot uses bot detection and rate limiting to prevent automated access. Datacenter IPs and headless browsers are identified and blocked through fingerprinting and behavioral analysis.
JavaScript-rendered reviews
Review content, star ratings, and reviewer information are rendered via JavaScript. A simple HTTP request returns a page shell without the actual review data.
Paginated results
Companies with thousands of reviews spread their reviews across hundreds of pages. Collecting complete review data requires handling pagination reliably without getting rate-limited.
Scrape Trustpilot reviews
Browser7 handles proxy rotation, anti-bot bypass, and JavaScript rendering automatically. This example scrapes reviews for Amazon on Trustpilot.
from browser7 import Browser7
client = Browser7(
api_key="b7_your_api_key",
base_url="https://ca-api.browser7.com/v1"
)
result = client.render(
"https://www.trustpilot.com/review/amazon.com",
country_code="US"
)
print(result.html)Data you can extract
The rendered HTML contains all the review data Trustpilot shows to visitors:
Review content
- Full review text
- Review title
- Star rating (1-5)
- Date posted
- Verified purchase status
Reviewer info
- Reviewer name
- Number of reviews written
- Profile link
- Location (when available)
Company info
- Overall rating
- Total number of reviews
- Rating distribution
- Company response rate
Metadata
- Review filtering options
- Sort order
- Pagination info
- Review reply from business
Complete example: parse reviews
Extract structured review data including author name, star rating, date, and review text. The rating is parsed from the star image's alt text.
from browser7 import Browser7
from bs4 import BeautifulSoup
import json, re
client = Browser7(
api_key="b7_your_api_key",
base_url="https://ca-api.browser7.com/v1"
)
result = client.render(
"https://www.trustpilot.com/review/amazon.com",
country_code="US"
)
soup = BeautifulSoup(result.html, "html.parser")
reviews = []
for article in soup.select("article"):
author = article.select_one("span[data-consumer-name-typography]")
if not author:
continue
review = {
"author": author.get_text(strip=True),
"rating": None,
"date": None,
"text": None,
}
star_img = article.select_one(
"img.CDS_StarRating_starRating__614d2e"
)
if star_img:
match = re.search(r"Rated (\d) out of 5", star_img.get("alt", ""))
if match:
review["rating"] = int(match.group(1))
time_el = article.select_one("time[data-service-review-date-time-ago]")
if time_el:
review["date"] = time_el.get("datetime", "")[:10]
text_el = article.select_one("p[data-relevant-review-text-typography]")
if text_el:
review["text"] = text_el.get_text(strip=True)[:150]
reviews.append(review)
print(json.dumps(reviews[:10], indent=2))CSS selectors may change if Trustpilot updates their page structure. Inspect the current page if any fields return null.
Sample output:
[
{
"author": "Tony S",
"rating": 2,
"date": "2026-04-08",
"text": "I have been a loyal Amazon customer for years and purchase not only small ticket items..."
},
{
"author": "Paul Burns",
"rating": 1,
"date": "2026-04-04",
"text": "As soon as you write a negative review, uh-oh something went wrong!..."
},
...
]Scrape page 2 and beyond
Trustpilot uses the page query parameter for pagination. Page 1 is the default, page 2 is ?page=2, page 3 is ?page=3, and so on.
from browser7 import Browser7
from bs4 import BeautifulSoup
client = Browser7(
api_key="b7_your_api_key",
base_url="https://ca-api.browser7.com/v1"
)
# Page 2: add ?page=2 to the URL
result = client.render(
"https://www.trustpilot.com/review/amazon.com?page=2",
country_code="US"
)
soup = BeautifulSoup(result.html, "html.parser")
for article in soup.select("article"):
author = article.select_one("span[data-consumer-name-typography]")
if author:
print(author.get_text(strip=True))Take a screenshot of reviews
Capture Trustpilot review pages as images for brand monitoring dashboards, competitor analysis reports, or historical tracking.
import base64
from browser7 import Browser7
client = Browser7(
api_key="b7_your_api_key",
base_url="https://ca-api.browser7.com/v1"
)
result = client.render(
"https://www.trustpilot.com/review/amazon.com",
country_code="US",
block_images=False,
include_screenshot=True,
screenshot_full_page=True,
screenshot_format="png"
)
with open("trustpilot-reviews.png", "wb") as f:
f.write(base64.b64decode(result.screenshot))
print("Screenshot saved")What this costs
Every Trustpilot page render costs $0.01 - the same as any other website. Residential proxies, JavaScript rendering, and screenshots are all included. There are no per-domain surcharges, no credit multipliers, and no bandwidth fees.
Scraping 100 pages of reviews (about 2,000 reviews) costs $1. You know this before you start.