Shopper Approved Merchant Reviews Scraper
Pricing
from $3.12 / 1,000 item extracteds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
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
fromDatewindow 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
fromDatefor 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?
| Field | Description |
|---|---|
reviewId | Stable Shopper Approved feedback identifier |
reviewUrl | Public profile URL linked to the review ID |
merchantDomain | Normalized merchant domain |
merchantName | Public merchant display name |
merchantWebsite | Merchant website linked from the profile |
merchantSiteId | Shopper Approved site identifier |
merchantRating | Aggregate merchant rating at capture time |
merchantReviewCount | Aggregate public review count |
merchantRatingDistribution | One-through-five-star aggregate counts |
rating | Overall rating for the individual review |
reviewText | Written review feedback when present |
reviewerName | Public reviewer display name |
reviewerLocation | Public location label when present |
reviewDate | Source review timestamp |
verifiedReview | Shopper Approved verification flag |
surveyType | Checkout, full/post-fulfillment, or imported source version |
merchantResponse | Public merchant response when present |
aspectRatings | Recommendation, service, delivery, price, product, and buy-again scores |
customAnswers | Merchant-specific survey questions and public answers |
mediaUrls | Public media URLs discovered on the review |
sourcePage | Source pagination page |
scrapedAt | ISO 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
- Open the Actor input page.
- Add a public URL such as
https://www.shopperapproved.com/reviews/supplementwarehouse.com. - Set Maximum reviews per merchant. Start with 10 for a quick test.
- Keep Post-fulfillment reviews to prioritize richer written feedback, or choose checkout/all.
- Optionally select star ratings or add a
fromDate. - Click Start.
- Open the Shopper Approved reviews dataset view.
- Export the results or connect the dataset to your workflow.
Input parameters
| Input | Type | Default | Purpose |
|---|---|---|---|
merchantUrls | array | profile prefill | Public Shopper Approved merchant profile URLs |
merchantDomains | array | none | Bare domains, useful in API/bulk jobs |
maxReviewsPerMerchant | integer | 50 | Maximum unique records saved for each merchant |
sortBy | string | newest | newest, oldest, highest_rating, or lowest_rating |
ratings | string array | all ratings | Any selection of 1 through 5 |
surveyType | string | post_fulfillment | post_fulfillment, checkout, or all |
fromDate | string | none | Inclusive 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
startevent is charged once per run; - one
itemevent 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:
| Tier | Price 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 reviews | Bronze-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:
- run daily or weekly;
- export
reviewIdas the deduplication key; - upsert unseen reviews into a database;
- compare
merchantRatingandmerchantReviewCountwith the prior capture; - 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:
reviewTextfor sentiment and topic extraction;customAnswersfor merchant-specific reasons and product choice;aspectRatingsfor service, price, delivery, and product comparisons;merchantResponsefor response-rate and response-content analysis;reviewDatefor 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 ApifyClientclient = 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().itemsprint(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_fulfillmentis the default because these records usually contain richer feedback.- Source timestamps do not expose a timezone;
reviewDatepreserves 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.
Related Automation Lab Actors
For broader source-specific reputation research, consider:
- Yelp Business Reviews Scraper
- OMR Reviews Scraper
- PissedConsumer Company Reviews Scraper
- Naver Place Business Reviews Scraper
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.