Multi Review Scraper avatar

Multi Review Scraper

Pricing

$150.00 / 1,000 business analyzeds

Go to Apify Store
Multi Review Scraper

Multi Review Scraper

Pricing

$150.00 / 1,000 business analyzeds

Rating

0.0

(0)

Developer

ryan clinton

ryan clinton

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Multi-Platform Review Scraper

Scrape customer reviews for any business from Trustpilot and BBB (Better Business Bureau) in a single run. Get individual review records plus a cross-platform summary with ratings, review counts, and overall sentiment.

Multi-Platform Review Scraper searches for your target business on each platform, extracts individual reviews with ratings, titles, review text, dates, and verification status, then produces a summary record that aggregates ratings across platforms. Use it for reputation monitoring, competitive analysis, or customer sentiment research.

What data can you extract?

Data PointSourceExample
Review ratingTrustpilot, BBB5 (out of 5)
Review titleTrustpilotExcellent customer support
Review bodyTrustpilot, BBBI had a great experience with...
Reviewer nameTrustpilot, BBBJohn D.
Review dateTrustpilot, BBB2026-02-15
Verified statusTrustpilottrue
PlatformTrustpilot, BBBtrustpilot
Average ratingComputed per platform4.3
Total reviews on platformTrustpilot, BBB2,847
Overall average ratingComputed across all platforms4.1

Why use Multi-Platform Review Scraper?

Checking a business's reputation means visiting multiple review sites, reading through pages of reviews, and manually tracking ratings. For competitive analysis across several businesses, this becomes a full-time job.

This actor automates cross-platform review collection. Enter a business name, choose your platforms, and get structured review data from Trustpilot and BBB in minutes. Individual reviews are returned for detailed analysis, and a summary record gives you the big picture across platforms.

Built on the Apify platform, Multi-Platform Review Scraper gives you capabilities you won't get from a simple script:

  • Scheduling -- run weekly to monitor reputation changes over time
  • API access -- trigger runs programmatically from Python, JavaScript, or any HTTP client
  • Proxy rotation -- scrape at scale without IP blocks using Apify's built-in proxy infrastructure
  • Monitoring -- get notified when runs fail or produce unexpected results
  • Integrations -- connect directly to Zapier, Make, Google Sheets, or webhooks

Features

  • Multi-platform scraping from Trustpilot and BBB in a single run
  • Individual review extraction with rating, title, body, reviewer name, date, and verification status
  • Cross-platform summary with per-platform averages, review counts, and overall aggregate rating
  • Configurable review limits (1-100 reviews per platform) to control depth and cost
  • Minimum rating filter to extract only positive reviews (or only negative ones by combining with post-processing)
  • Business domain matching for accurate Trustpilot lookups (uses domain-based URLs instead of relying on search)
  • Trustpilot NEXT_DATA parsing for reliable, structured data extraction from server-rendered pages
  • BBB search and navigation that finds the business listing and navigates to the customer reviews page
  • Pay-per-event pricing charged per business analyzed, not per review
  • Proxy support for both platforms to avoid rate limiting

Use cases for multi-platform review scraping

Reputation monitoring

Track your business's reviews across Trustpilot and BBB over time. Schedule weekly runs and compare ratings to detect reputation changes early.

Competitive analysis

Scrape reviews for your competitors to understand their strengths and weaknesses from the customer's perspective. Compare ratings and common complaints across businesses.

Due diligence

Before partnering with or investing in a business, scrape their reviews across platforms to assess customer satisfaction and identify red flags.

Customer sentiment analysis

Export reviews to feed into NLP or LLM pipelines for automated sentiment analysis, topic extraction, and trend detection.

Sales intelligence

Research prospect companies before outreach. Knowing their review scores and common customer complaints helps personalize your pitch.

Market research

Analyze reviews across multiple businesses in a category to identify industry-wide pain points, unmet needs, and opportunities.

How to scrape business reviews

  1. Enter the business name -- Type the name of the business you want to research (e.g., "Stripe", "Shopify", "Comcast").
  2. Add the business domain (optional) -- For more accurate Trustpilot matching, provide the business website domain (e.g., "stripe.com"). Without this, the actor guesses the domain from the business name.
  3. Choose platforms -- Select which platforms to scrape: Trustpilot, BBB, or both (default is both).
  4. Set review limits -- Choose the maximum number of reviews per platform (default is 20, max 100).
  5. Run the actor -- Click "Start" to begin. The actor scrapes each selected platform and produces individual review records plus a summary.
  6. Download results -- Once finished, download your data as JSON, CSV, or Excel from the Dataset tab.

Input parameters

ParameterTypeRequiredDefaultDescription
businessNamestringYes--Name of the business to search for reviews (e.g., "Stripe", "Shopify").
businessDomainstringNo--Business website domain for accurate Trustpilot matching (e.g., "stripe.com"). If omitted, the actor derives it from the business name.
platformsstring[]No["trustpilot", "bbb"]Which review platforms to scrape. Options: trustpilot, bbb.
maxReviewsPerPlatformintegerNo20Maximum reviews to scrape from each platform (1-100).
minRatingintegerNo--Only return reviews at or above this star rating (1-5). Leave empty for all reviews.
proxyConfigurationobjectNo--Proxy settings for requests. Recommended for production use to avoid rate limiting.

Input examples

Scrape reviews for a business with defaults:

{
"businessName": "Stripe"
}

Accurate Trustpilot lookup with domain:

{
"businessName": "Shopify",
"businessDomain": "shopify.com",
"maxReviewsPerPlatform": 50
}

Trustpilot only, positive reviews:

{
"businessName": "HubSpot",
"businessDomain": "hubspot.com",
"platforms": ["trustpilot"],
"maxReviewsPerPlatform": 100,
"minRating": 4
}

BBB only:

{
"businessName": "Comcast",
"platforms": ["bbb"],
"maxReviewsPerPlatform": 30
}

Input tips

  • Always provide businessDomain for Trustpilot searches. Without it, the actor guesses the domain by stripping spaces from the business name and appending .com, which may not match.
  • Start with 20 reviews to test, then increase the limit for deeper analysis.
  • Use minRating to filter for positive reviews (4-5 stars) or leave it empty to get the full distribution.

Output example

The output contains two types of records: individual reviews and a summary.

Individual review record:

{
"platform": "trustpilot",
"businessName": "Stripe",
"reviewerName": "Sarah M.",
"rating": 5,
"title": "Seamless payment integration",
"body": "We integrated Stripe into our e-commerce platform in under a day. The documentation is excellent and the API is intuitive. Customer support resolved our one issue within hours.",
"date": "2026-02-15",
"verified": true,
"extractedAt": "2026-03-18T14:32:18.456Z"
}

Summary record:

{
"type": "summary",
"businessName": "Stripe",
"businessDomain": "stripe.com",
"platforms": {
"trustpilot": {
"found": true,
"avgRating": 4.3,
"totalReviews": 2847,
"reviewsScraped": 20
},
"bbb": {
"found": true,
"avgRating": 3.8,
"totalReviews": 156,
"reviewsScraped": 20
}
},
"overallAvgRating": 4.05,
"totalReviewsScraped": 40,
"extractedAt": "2026-03-18T14:32:18.456Z"
}

Output fields

Review record fields

FieldTypeDescription
platformstringSource platform: trustpilot or bbb
businessNamestringBusiness name as resolved on the platform
reviewerNamestringName of the reviewer (or "Anonymous" if not available)
ratingnumberStar rating (1-5)
titlestringReview title/headline (Trustpilot only; empty for BBB)
bodystringFull review text
datestringReview publication date (format varies by platform)
verifiedbooleanWhether the review is verified (Trustpilot only; always false for BBB)
extractedAtstringISO 8601 timestamp of when the review was extracted

Summary record fields

FieldTypeDescription
typestringAlways "summary" -- use this to distinguish from review records
businessNamestringBusiness name as provided in the input
businessDomainstring or nullBusiness domain as provided in the input
platformsobjectPer-platform summary with found (boolean), avgRating (number), totalReviews (number), and reviewsScraped (number)
overallAvgRatingnumber or nullAverage rating across all scraped reviews from all platforms
totalReviewsScrapednumberTotal number of reviews extracted across all platforms
extractedAtstringISO 8601 timestamp of when the extraction completed

How much does it cost to scrape business reviews?

Multi-Platform Review Scraper uses pay-per-event pricing -- you pay $0.15 per business analyzed. This covers all platforms and all reviews for that business. Platform usage costs are included in the price.

ScenarioBusinessesCost per businessTotal cost
Quick test1$0.15$0.15
Competitor set5$0.15$0.75
Industry survey20$0.15$3.00
Large research project50$0.15$7.50
Enterprise monitoring100$0.15$15.00

You can set a maximum spending limit per run to control costs. The actor charges once per business, regardless of how many reviews are scraped or how many platforms are queried.

Scrape business reviews using the API

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("ryanclinton/multi-review-scraper").call(run_input={
"businessName": "Stripe",
"businessDomain": "stripe.com",
"platforms": ["trustpilot", "bbb"],
"maxReviewsPerPlatform": 20,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if item.get("type") == "summary":
print(f"Overall rating: {item['overallAvgRating']} ({item['totalReviewsScraped']} reviews)")
else:
print(f"[{item['platform']}] {item['rating']}/5 - {item['title'] or item['body'][:60]}")

JavaScript

import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "YOUR_API_TOKEN" });
const run = await client.actor("ryanclinton/multi-review-scraper").call({
businessName: "Stripe",
businessDomain: "stripe.com",
platforms: ["trustpilot", "bbb"],
maxReviewsPerPlatform: 20,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const summary = items.find(i => i.type === "summary");
const reviews = items.filter(i => !i.type);
console.log(`Overall: ${summary.overallAvgRating}/5 from ${summary.totalReviewsScraped} reviews`);
for (const review of reviews) {
console.log(`[${review.platform}] ${review.rating}/5 by ${review.reviewerName}`);
}

cURL

# Start the actor run
curl -X POST "https://api.apify.com/v2/acts/ryanclinton~multi-review-scraper/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"businessName": "Stripe",
"businessDomain": "stripe.com",
"platforms": ["trustpilot", "bbb"],
"maxReviewsPerPlatform": 20
}'
# Fetch results (replace DATASET_ID from the run response)
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_API_TOKEN&format=json"

How the Multi-Platform Review Scraper works

The actor runs platform-specific scrapers in sequence, then aggregates results.

Trustpilot scraping

The actor constructs a Trustpilot review page URL from the business domain (e.g., https://www.trustpilot.com/review/stripe.com). If no domain is provided, it derives one from the business name. The page is loaded via CheerioCrawler and the __NEXT_DATA__ script tag is parsed to extract structured review data from Trustpilot's Next.js server-rendered payload. This includes the business display name, total review count, trust score, and individual reviews with rating, title, text, date, reviewer name, and verification status. If more reviews are needed, additional pages are enqueued (Trustpilot shows 20 reviews per page). The crawler runs at 2 concurrent connections to be respectful of Trustpilot's rate limits.

BBB scraping

The actor searches BBB for the business name using their search endpoint. From the search results page, it identifies the first matching business listing and navigates to its customer reviews page. Reviews are extracted using CSS selectors targeting review cards, star ratings (from aria-labels or filled star icons), reviewer names, review text, and dates. If primary selectors don't match, a fallback strategy looks for text blocks with nearby star rating images. The crawler runs at 1 concurrent connection since BBB requires sequential navigation from search to profile to reviews.

Summary aggregation

After both platform scrapers complete, the actor calculates per-platform averages (sum of ratings divided by count, rounded to 2 decimal places) and an overall average across all platforms. Individual review records and the summary record are all pushed to the output dataset. The summary record has type: "summary" to distinguish it from review records.

Limitations

  • Two platforms supported -- currently scrapes Trustpilot and BBB only. Google Reviews, Yelp, G2, Capterra, and other platforms are not supported.
  • One business per run -- the actor processes a single business name per execution. For multiple businesses, run the actor multiple times or use the API to batch requests.
  • Maximum 100 reviews per platform -- Trustpilot and BBB page structures limit practical extraction to 100 reviews per platform per run.
  • Business matching is approximate -- BBB search uses keyword matching, which may return the wrong business if the name is common. Trustpilot matching depends on the domain being correct.
  • No authentication -- only processes publicly accessible review pages. Reviews behind login walls are not supported.
  • BBB review extraction varies -- BBB's HTML structure changes frequently. The actor uses multiple fallback CSS selectors, but some reviews may not be captured if the page layout has changed.
  • Trustpilot requires correct domain -- if the businessDomain doesn't match the Trustpilot listing, no reviews will be found. Check trustpilot.com/review/[domain] manually if results are empty.
  • Review dates vary by platform -- Trustpilot returns ISO dates (YYYY-MM-DD). BBB dates are extracted from text and may use different formats.

Integrations

  • Zapier -- Trigger a Zap when new reviews are scraped. Push to Slack, Google Sheets, or your CRM for team visibility.
  • Make -- Build automated workflows that monitor reviews and alert you when ratings drop below a threshold.
  • Google Sheets -- Export reviews directly to Google Sheets for collaborative analysis and reporting.
  • Apify API -- Call the actor programmatically. Start runs, poll for completion, and download results in JSON, CSV, XML, or Excel format.
  • Webhooks -- Receive notifications when a run completes, then automatically process results in your backend.
  • LangChain / LlamaIndex -- Feed review text into LLM pipelines for sentiment analysis, summarization, or topic extraction.

Responsible use

  • This actor only accesses publicly visible review pages on Trustpilot and BBB.
  • Respect each platform's terms of service and rate limits.
  • Do not use scraped reviews to create fake testimonials, defame businesses, or manipulate ratings.
  • Comply with applicable data protection laws when processing reviewer names and review content.
  • For guidance on web scraping legality, see Apify's guide.

FAQ

How do I find the correct business domain for Trustpilot? Visit trustpilot.com and search for the business. The URL will show the domain used, e.g., trustpilot.com/review/stripe.com. Use that domain in the businessDomain field. If the business uses a non-obvious domain on Trustpilot, this manual check is recommended.

What if a business isn't found on one of the platforms? The actor still completes successfully. The platform's summary will show found: false, and no reviews from that platform will appear in the output. The overall average is calculated only from platforms where reviews were found.

Can I filter for only negative reviews? Not directly through the input. Set minRating to 1 (or omit it) to get all reviews, then filter the output for reviews with rating 1-2 in post-processing. The minRating parameter filters for reviews at or above the specified rating.

How often should I run this for reputation monitoring? Weekly runs are sufficient for most businesses. For fast-moving industries or during PR incidents, daily runs provide more granular monitoring. Use Apify Schedules to automate recurring runs.

Why are BBB review ratings sometimes 0? If the actor cannot parse the star rating from the BBB HTML (due to layout changes or missing rating elements), it defaults to 0. The review text is still extracted. You can filter these in post-processing.

Can I scrape reviews for multiple businesses in one run? No. The actor processes one business per run. To scrape multiple businesses, trigger separate runs via the API or Apify Schedules. Each business costs $0.15 regardless of how many reviews are extracted.

Is the overall average rating weighted by review count? No. The overallAvgRating is a simple average of all scraped reviews across platforms, not weighted by the total number of reviews on each platform. Each scraped review contributes equally.

How many reviews can I get from Trustpilot? Up to 100 reviews per run (configurable via maxReviewsPerPlatform). Trustpilot pages show 20 reviews each, so the actor enqueues multiple pages as needed. The totalReviews field in the summary shows how many reviews exist on the platform in total.

ActorHow to combine
Google Maps Email ExtractorFind businesses on Google Maps, then check their reputation with Multi-Review Scraper
Website Contact ScraperExtract contact details from the business website after checking their reviews
B2B Lead QualifierScore and qualify leads using review data as one of many signals
Website Tech Stack DetectorCombine review reputation data with technology intelligence for deeper business profiling
Bulk Email VerifierVerify contact emails before reaching out to businesses you've researched

Support

Found a bug or have a feature request? Open an issue in the Issues tab on this actor's page. For custom scraping solutions or enterprise integrations, reach out through the Apify platform.