Shopper Approved Merchant Reviews Scraper avatar

Shopper Approved Merchant Reviews Scraper

Pricing

from $3.12 / 1,000 item extracteds

Go to Apify Store
Shopper Approved Merchant Reviews Scraper

Shopper Approved Merchant Reviews Scraper

Extract public Shopper Approved merchant reviews with ratings, text, reviewer details, verification, merchant responses, survey answers, profile context, and date filters for reputation monitoring.

Pricing

from $3.12 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 days ago

Last modified

Share

Extract public Shopper Approved merchant reviews as structured records for reputation analysis, customer-feedback research, and recurring competitor monitoring.

Provide one or more public Shopper Approved profile URLs or merchant domains. The Actor returns individual reviews together with merchant identity, aggregate rating context, verification, reviewer metadata, dates, merchant responses, custom survey answers, and source links.

What does this Actor do?

Shopper Approved Merchant Reviews Scraper reads public merchant profiles on shopperapproved.com and exports normalized review-level records.

It supports:

  • Shopper Approved profile URLs and bare merchant domains;
  • up to 100 merchants in one run;
  • newest, oldest, highest-rating, and lowest-rating ordering;
  • one-to-five-star filters;
  • post-fulfillment, checkout, or combined survey records;
  • an inclusive fromDate window for incremental monitoring;
  • limits of up to 10,000 reviews per merchant;
  • public merchant responses and custom survey answers when available.

The Actor uses the structured endpoints loaded by the public profile. It does not require a Shopper Approved account, cookies, or a browser.

Who is it for?

Reputation and customer-experience teams

Collect recent reviews for dashboards, complaint triage, and recurring brand-health reports.

Agencies and consultants

Compare customer feedback across public merchant profiles without manually copying review pages.

Market researchers

Study rating distributions, written feedback, survey-stage differences, and merchant responses.

Data and BI teams

Send normalized records to spreadsheets, databases, warehouses, or sentiment-analysis pipelines.

Developers and AI teams

Use stable field names for classifiers, summaries, retrieval systems, and internal monitoring applications.

Why use this Shopper Approved scraper?

  • Merchant context on every row: each review includes merchant identity, aggregate rating, review count, and rating distribution.
  • Review-level detail: export review text, rating, public reviewer details, verification, aspect ratings, custom answers, and responses.
  • Incremental collection: combine newest-first order with fromDate for scheduled monitoring.
  • Server-side filters: star rating, sort order, and survey stage are sent to Shopper Approved's public review endpoint.
  • Predictable limits: the Actor stops at the requested per-merchant count, source exhaustion, or date boundary.
  • Integration-ready output: results are stored in the default Apify dataset as JSON, CSV, Excel, XML, or RSS.

What data can you extract?

FieldDescription
reviewIdStable Shopper Approved feedback identifier
reviewUrlPublic profile URL linked to the review ID
merchantDomainNormalized merchant domain
merchantNamePublic merchant display name
merchantWebsiteMerchant website linked from the profile
merchantSiteIdShopper Approved site identifier
merchantRatingAggregate merchant rating at capture time
merchantReviewCountAggregate public review count
merchantRatingDistributionOne-through-five-star aggregate counts
ratingOverall rating for the individual review
reviewTextWritten review feedback when present
reviewerNamePublic reviewer display name
reviewerLocationPublic location label when present
reviewDateSource review timestamp
verifiedReviewShopper Approved verification flag
surveyTypeCheckout, full/post-fulfillment, or imported source version
merchantResponsePublic merchant response when present
aspectRatingsRecommendation, service, delivery, price, product, and buy-again scores
customAnswersMerchant-specific survey questions and public answers
mediaUrlsPublic media URLs discovered on the review
sourcePageSource pagination page
scrapedAtISO 8601 capture timestamp

Some fields are naturally absent on checkout-only ratings or when a reviewer did not provide that information.

How to scrape Shopper Approved merchant reviews

  1. Open the Actor input page.
  2. Add a public URL such as https://www.shopperapproved.com/reviews/supplementwarehouse.com.
  3. Set Maximum reviews per merchant. Start with 10 for a quick test.
  4. Keep Post-fulfillment reviews to prioritize richer written feedback, or choose checkout/all.
  5. Optionally select star ratings or add a fromDate.
  6. Click Start.
  7. Open the Shopper Approved reviews dataset view.
  8. Export the results or connect the dataset to your workflow.

Input parameters

InputTypeDefaultPurpose
merchantUrlsarrayprofile prefillPublic Shopper Approved merchant profile URLs
merchantDomainsarraynoneBare domains, useful in API/bulk jobs
maxReviewsPerMerchantinteger50Maximum unique records saved for each merchant
sortBystringnewestnewest, oldest, highest_rating, or lowest_rating
ratingsstring arrayall ratingsAny selection of 1 through 5
surveyTypestringpost_fulfillmentpost_fulfillment, checkout, or all
fromDatestringnoneInclusive YYYY-MM-DD lower bound for newest-first runs

Add at least one URL or domain. Duplicate merchants are removed after normalization.

fromDate intentionally works only with newest-first sorting. This lets the Actor stop as soon as it reaches records older than the monitoring window.

Input examples

Recent reviews for one merchant

{
"merchantDomains": ["supplementwarehouse.com"],
"maxReviewsPerMerchant": 10,
"sortBy": "newest",
"surveyType": "post_fulfillment"
}

Low-rating complaint research

{
"merchantUrls": [
{ "url": "https://www.shopperapproved.com/reviews/bulbamerica.com" }
],
"maxReviewsPerMerchant": 25,
"sortBy": "newest",
"ratings": ["1", "2"],
"surveyType": "all"
}

Incremental multi-merchant monitoring

{
"merchantDomains": [
"supplementwarehouse.com",
"bulbamerica.com"
],
"maxReviewsPerMerchant": 100,
"sortBy": "newest",
"surveyType": "post_fulfillment",
"fromDate": "2026-08-01"
}

Output example

A current output record has this shape (public text shortened for documentation):

{
"recordType": "review",
"reviewId": "223683525",
"reviewUrl": "https://www.shopperapproved.com/reviews/supplementwarehouse.com?reviewid=223683525",
"merchantDomain": "supplementwarehouse.com",
"merchantName": "supplementwarehouse.com",
"merchantWebsite": "https://supplementwarehouse.com",
"merchantSiteId": "16361",
"merchantRating": 4.8,
"merchantReviewCount": 31094,
"rating": 5,
"reviewText": "Quick and easy ordering process...",
"reviewerName": "Public reviewer",
"reviewerLocation": "FL",
"reviewDate": "2026-09-01 17:48:45",
"verifiedReview": true,
"surveyType": "full",
"customAnswers": [],
"mediaUrls": [],
"sourcePage": 1,
"scrapedAt": "2026-09-15T08:00:00.000Z"
}

The default dataset contains only review records. Merchant profile and aggregate fields are included on every row so a downstream export remains self-contained.

How much does it cost to extract Shopper Approved reviews?

This Actor uses pay-per-event pricing:

  • one start event is charged once per run;
  • one item event is charged for each review saved to the dataset;
  • rejected, duplicate, filtered-out, and failed records are not item-charged.

The one-time start event is $0.005. Item prices decrease by Apify subscription tier:

TierPrice per saved review
Free$0.00598
Bronze$0.00520
Silver$0.004056
Gold$0.00312
Platinum$0.00312
Diamond$0.00312

For example, on the Bronze tier the estimated Actor charge is:

Saved reviewsBronze-tier calculation
10$0.005 + (10 × $0.00520)
100$0.005 + (100 × $0.00520)
1,000$0.005 + (1,000 × $0.00520)

Each example uses the $0.005 start fee and $0.00520 per saved review. Use maxReviewsPerMerchant and fromDate to control paid output records. Infrastructure usage is included in PPE pricing rather than billed as a separate Actor fee.

Scheduling reputation monitoring

Create an Apify schedule with newest-first sorting and a rolling fromDate.

A common workflow is:

  1. run daily or weekly;
  2. export reviewId as the deduplication key;
  3. upsert unseen reviews into a database;
  4. compare merchantRating and merchantReviewCount with the prior capture;
  5. alert on new low ratings or unanswered complaints.

The Actor does not maintain cross-run state or send alerts itself. Apify schedules, webhooks, integrations, and your destination system handle those steps.

Sentiment and complaint analysis

For complaint discovery, select ratings 1 and 2 and use surveyType: "all".

Useful downstream fields include:

  • reviewText for sentiment and topic extraction;
  • customAnswers for merchant-specific reasons and product choice;
  • aspectRatings for service, price, delivery, and product comparisons;
  • merchantResponse for response-rate and response-content analysis;
  • reviewDate for trend windows.

Remember that checkout records may contain ratings without long written feedback.

Export and integration options

Apify datasets support:

  • JSON and JSONL for applications and warehouses;
  • CSV and Excel for analysts;
  • XML and RSS for compatible automation tools;
  • direct API reads;
  • webhooks after successful runs;
  • Make, Zapier, Google Sheets, Slack, and other Apify integrations.

For incremental loads, deduplicate using merchantDomain plus reviewId.

Run with the Apify API

Replace <APIFY_TOKEN> with your token.

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~shopper-approved-merchant-reviews-scraper/runs?token=<APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{
"merchantDomains": ["supplementwarehouse.com"],
"maxReviewsPerMerchant": 10,
"sortBy": "newest"
}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const actor = client.actor('automation-lab/shopper-approved-merchant-reviews-scraper');
const run = await actor.call({
merchantDomains: ['supplementwarehouse.com'],
maxReviewsPerMerchant: 10,
sortBy: 'newest',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("automation-lab/shopper-approved-merchant-reviews-scraper").call(
run_input={
"merchantDomains": ["supplementwarehouse.com"],
"maxReviewsPerMerchant": 10,
"sortBy": "newest",
}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Use with MCP and AI agents

Add this Actor to Claude Code through Apify MCP:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/shopper-approved-merchant-reviews-scraper"

Claude Desktop, Cursor, and VS Code setup

Use the same HTTP server configuration in Claude Desktop, Cursor, or VS Code:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/shopper-approved-merchant-reviews-scraper"
}
}
}

Example prompts:

  • “Collect the 20 newest post-fulfillment reviews for supplementwarehouse.com.”
  • “Export one- and two-star BulbAmerica reviews and summarize recurring complaint topics.”
  • “Collect reviews since 2026-08-01 for these two Shopper Approved merchant domains.”

Reliability, retries, and failure behavior

The Actor makes lightweight direct requests to the current public merchant profile and structured review endpoints.

Transient network failures, HTTP 408, HTTP 429, and server errors are retried up to three times with bounded backoff. Invalid URLs, missing public merchant profiles, and unexpected response shapes fail closed instead of returning misleading empty data.

If multiple merchants are supplied, a failed merchant is logged while other merchants continue. The run fails only when every merchant fails. A valid filter or future monitoring window with no matching reviews succeeds with an empty dataset.

Limits and important behavior

  • Only public HTTPS Shopper Approved merchant profiles are supported.
  • A run accepts at most 100 merchant inputs.
  • The maximum is 10,000 reviews per merchant.
  • Shopper Approved controls source availability, fields, and sort behavior.
  • Profile totals can include checkout ratings that do not contain written comments.
  • post_fulfillment is the default because these records usually contain richer feedback.
  • Source timestamps do not expose a timezone; reviewDate preserves the public source value.
  • Media is not downloaded. Public URLs are exported when exposed in review metadata.
  • The Actor does not bypass login pages, CAPTCHAs, or private data controls.

Troubleshooting

“Invalid merchant domain”

Use a bare domain such as bulbamerica.com, or the exact public profile form:

https://www.shopperapproved.com/reviews/bulbamerica.com

Do not submit a merchant's own website URL in merchantUrls; use merchantDomains for bare domains.

“No public Shopper Approved merchant profile was found”

Open the supplied profile URL in a browser. The merchant may not have a public Shopper Approved certificate, or the profile path may have changed.

My dataset is empty

Check fromDate, selected ratings, and surveyType. An empty successful run means the profile was valid but no records matched the requested window and filters.

Checkout reviews have no text

Checkout surveys can be rating-only. Choose post_fulfillment when written customer feedback is the main goal.

The run fails after retries

Inspect the run log for the merchant and HTTP status. Retry later if Shopper Approved is temporarily unavailable. Reduce merchant count for diagnosis rather than repeating a large run.

Responsible use and legality

This Actor extracts information displayed on public Shopper Approved merchant profiles. Public availability does not remove your legal responsibilities.

Use the data only for lawful purposes. Follow applicable privacy, database, copyright, and consumer-protection rules, Shopper Approved's terms, and the terms of your destination systems. Avoid redistributing personal data unnecessarily. Apply suitable retention, access control, and deletion policies.

Do not use the Actor to harass reviewers, infer sensitive attributes, build invasive profiles, or automate decisions with material effects on individuals without appropriate review and legal basis.

For broader source-specific reputation research, consider:

These Actors target different public sources. They do not expand the scope of this Shopper Approved Actor.

FAQ

Does it require a Shopper Approved account or API key?

No. It reads the public merchant profile and the structured requests used by that profile.

Does it use a browser or residential proxy?

No. The current implementation uses lightweight direct HTTP. This keeps runs fast and avoids browser/proxy overhead.

Can I collect several merchants in one run?

Yes. Supply up to 100 profile URLs and domains. The review limit applies separately to each normalized merchant.

Can I collect only verified reviews?

The output always exposes verifiedReview, but the public endpoint does not provide a dedicated verified-only control in this Actor. Filter the dataset downstream if required.

How do I monitor only new reviews?

Run on a schedule with newest-first sorting and a suitable fromDate, then upsert using merchantDomain plus reviewId.

Are merchant responses included?

Yes, when Shopper Approved exposes a public response. Markup is removed and normalized into merchantResponse.

Can I scrape product reviews?

This Actor focuses on merchant/company review records and their embedded public survey context. It does not crawl Shopper Approved's separate product-review catalog.

Will it download photos or videos?

No. It exports public media URLs when present, which avoids unnecessary transfer and storage costs.

What happens when no review matches?

The run succeeds with an empty dataset if the merchant profiles were valid. This is useful for scheduled monitoring windows with no new records.