Shopify Product Reviews Scraper | Multiple Sources avatar

Shopify Product Reviews Scraper | Multiple Sources

Pricing

from $0.76 / 1,000 exported reviews

Go to Apify Store
Shopify Product Reviews Scraper | Multiple Sources

Shopify Product Reviews Scraper | Multiple Sources

Shopify reviews from Judge.me and Okendo: text, ratings, replies and public media links, with filters and coverage reports. Base rate: $0.95 per 1,000 reviews. Maintained by CleanScrape.

Pricing

from $0.76 / 1,000 exported reviews

Rating

0.0

(0)

Developer

CleanScrape

CleanScrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

21 hours ago

Last modified

Share

Shopify Product Reviews Scraper

Export Shopify product reviews from Judge.me and Okendo into one consistent dataset. Paste product links from different stores, choose the ratings you need, and download the results as JSON, CSV or Excel. The price is $0.95 per 1,000 exported reviews, with no rating-filter add-on fee.

Use the results to compare customer feedback, investigate recurring product complaints, or feed an existing research workflow. Provider detection is automatic: you do not need to identify the review app or find its API keys.

Supported review providers

ProviderCollection and scope
Judge.mePublic product widgets, including supported JSON and HTML formats. Existing Judge.me inputs and output fields are preserved.
OkendoPublic product reviews, with product-group attribution when supplied. Separate aggregate-only ratings are not invented as individual reviews.

Support depends on the storefront exposing a recognizable public integration. An installed app or a provider logo alone does not establish compatibility. The Actor does not use merchant/admin credentials, bypass access restrictions, or collect private customer fields. Loox, Yotpo, Stamped, Junip, Fera, Ali Reviews, Rivyo, Ryviu and other unlisted providers are not supported. This is not a Shopify App Store reviews scraper or a whole-store product-discovery tool.

Make the first export easy to interpret

Paste a product-page URL; you do not need a shop ID, product ID, API token or country code. The Actor checks for a supported public source. If it cannot establish one, inspect the coverage report instead of treating the result as proof of zero reviews. If review widgets conflict and no safe source can be selected, it reports the ambiguity instead of silently combining their reviews. Existing Judge.me widgets retain their original extraction path.

Choose star ratings by their readable labels. Reviews to check per product is the scan budget before filtering. Maximum reviews to export in total is the run-wide result limit. For example, checking 100 reviews with only 1-star and 2-star selected might export 8 reviews, or none; it does not mean the tool searches the entire history until it finds 100 low-rated reviews.

Review essentials and attribution places the provider and review content beside the source's reviewed-product name and grouping flags. Product reviews and Product attribution retain the original views. A review in a product widget can be shared from another product or a bundle; it is not necessarily feedback on the exact requested variant. A null grouping flag means unknown, not false.

Open Run summary and field guide for plain-language stopping reasons, then Coverage report for full machine-readable details. Empty titles and ratings-only reviews can be legitimate source data. Missing dates, titles, verification badges and product attribution remain unknown rather than guessed. Raw output fields, existing limits, billing and API inputs are unchanged.

Start with one product

Paste a product URL, choose how many reviews to scan, and run the Actor. Open Exported reviews to download JSON, CSV or Excel through Apify. Open Coverage report to see what was actually retrieved.

{
"productUrls": ["https://owalalife.com/products/freesip"],
"maxReviewsPerProduct": 100,
"maxTotalReviews": 100,
"ratings": ["1", "2", "3", "4", "5"]
}

The example is a public third-party product page, not an affiliation or a guarantee that its layout will remain supported.

Pricing

Store discounts

Apify applies your subscription tier automatically: Bronze 10% off, Silver 15% off and Gold 20% off the base event prices. Platinum and Diamond use the Gold rates. These discounts apply to every billable event listed below.

Billable unitBase / Free tierBronze (-10%)Silver (-15%)Gold (-20%)
Exported review (1,000 events)$0.95$0.855$0.8075$0.76

Base-price examples in this README are before discounts. Discounts do not change what is billable or any startup memory multiplier. See the Pricing tab for the rate applicable to your account.

All prices and examples below use the base rate before subscription discounts.

The price is $0.95 per 1,000 exported reviews ($0.00095 per review). There are no separate rating-filter or media-link events. Filtered-out records, duplicate records skipped within a run, and coverage reports do not incur a review event. Repeated runs export and charge for reviews again. This is not a changes-only monitor.

At that rate, 100 exported reviews cost $0.095; 1,000 cost $0.95. Set both an export limit and an Apify spending limit. Your own runs can still consume platform credit. Apify's displayed charges and account terms apply.

What each row contains

FieldMeaning
reviewId, recordKeyProvider ID and a stable shop/provider/review key for joining exports.
productUrl, productId, productNameProduct page context. Missing names or IDs are null.
rating, title, bodyThe public rating and review text. Ratings-only reviews are retained.
publishedAt, publishedAtRawSource date normalized to UTC where parseable, plus the original value.
observedAtWhen this run observed the review, not when it was published.
reviewerNamePublic display name, not a verified identity.
verifiedPurchaseSource-provided true/false where available; true for an HTML buyer badge; otherwise null.
merchantReply, mediaUrlsPublic reply text and exposed linked media, where available. No media files are downloaded.
contentHashComparison hash of rating, title, body, reply and media links. Not a change notification.
reviewedProductUrl, reviewedProductNameThe reviewed product identified by the source, if supplied. It may differ from the requested page.
isGroupedReview, isBundleReviewJudge.me source flags; for Okendo, group attribution established from its product IDs and grouping response. Null means not established, not false.
provider, shopDomain, schemaVersion, reviewScopeSource and output format context.

Some merchants share reviews across variants or grouped products. reviewScope: "product_widget" means the review belongs to that product's public widget feed; it does not prove a purchase of that exact variant. Some sources expose original-product attribution and others do not. Duplicate IDs within the same provider and shop are exported once per run, under the first product processed. Provider values are judge.me and okendo.

Why the product distinction matters

In a validation export, a clothing product's widget contained 675 reviews, of which 619 were flagged by the source as shared from its product group. Treating all 675 as feedback about that exact product would be misleading. Use isGroupedReview, isBundleReview and the reviewed-product fields to keep that distinction in your analysis. A null flag means the source did not establish it.

Read the coverage report

A green Apify run status does not mean every historical review was available. SUMMARY records each product's scanned count, export count, source-reported total where available, and stopping reason.

  • source_count_matched: observed unique IDs matched the source count, with no reported next page or invalid records. This is a bounded observation, not an atomic snapshot of a changing store.
  • scan_limit or page_limit: the configured scan budget ended before full coverage could be established.
  • embedded_only: this storefront exposed reviews in its HTML, but neither supported public pagination route could be established. Only those embedded reviews were read.
  • no_next_page or no_new_reviews: pagination ended without confirmed complete coverage.
  • output_or_spending_limit: no further paid output was allowed.
  • source_or_output_error: a request, layout or output operation failed. Already stored results remain accessible.

The Actor does not translate, invent missing values, infer deleted reviews, or retry a failed provider by silently switching to another. Unsupported and blocked sources are reported explicitly rather than presented as confirmed zero-review products. Public media links do not guarantee every attachment is available.

Source-side limits still apply. In validation, one public widget route stopped at 990 unique reviews while reporting a much larger total. Increasing an input limit does not remove such a source ceiling; the export remains marked partial.

Filters and limits

ratings filters the scanned reviews locally. For example, ["1", "2"] exports low-rated reviews found within the scan window, not necessarily every low-rated review on the product. Provider ordering is preserved; newest-first ordering is not promised.

You can submit up to 20 product URLs, scan up to 2,000 unique reviews per product, and export up to 5,000 reviews per run. Requests are bounded to 100 review pages per product, plus product metadata and count checks. Homepages and private URLs are not accepted. Some storefronts need a browser or restrict access; this version does not bypass those restrictions or use paid proxies.

Scheduling and integrations

Use Apify schedules or its API to repeat an export. Download the dataset in your preferred format or send it to your existing n8n workflow. Compare recordKey and contentHash downstream if you need to identify observed differences. Persistent history and change alerts are not included in this version.

Interrupted runs

Reviews are stored as extraction progresses. Coverage checkpoints are saved during scanning, so a forced stop can leave a report that lags behind the final dataset. Treat the actual dataset and Apify run status as authoritative; a checkpoint still marked running is not proof that an aborted run finished.

Resurrecting or restarting a run whose dataset already contains results is deliberately blocked to avoid exporting and charging for the same reviews again into that dataset. Existing results and the previous coverage report are preserved. A fresh run creates a new export and may include reviews you have already paid for in earlier runs.

Maintenance and ongoing use

CleanScrape maintains this Actor for both one-off exports and recurring workflows. We investigate reported errors, update supported integrations when source websites change, and test changes with existing inputs and output formats in mind.

If something stops working, open an issue or email contact.cleanscrape@gmail.com with the Actor name, run ID, public source URL and expected result. Never include API tokens or private customer data.

Source availability can change. Check the run report for errors and coverage limits before relying on an export as complete.

If the export was useful, an honest review helps other users decide whether it fits their workflow. Critical feedback is welcome too.

Use public review data responsibly and in accordance with applicable terms and privacy requirements.

Disclaimer

This Actor is an independent tool developed by CleanScrape. It is not affiliated with, endorsed by, or sponsored by Shopify, Judge.me, Okendo, or the merchants referenced in its examples or output. All trademarks are the property of their respective owners. Brand names are used only to identify sources and illustrate usage.