Yotpo Review Scraper for Shopify stores avatar

Yotpo Review Scraper for Shopify stores

Pricing

from $0.64 / 1,000 reviews

Go to Apify Store
Yotpo Review Scraper for Shopify stores

Yotpo Review Scraper for Shopify stores

Scrape Yotpo reviews from any Shopify store: rating, title, text, photos, videos, author, date and product. Store-wide or per product. No login, no API key. JSON, CSV or Excel.

Pricing

from $0.64 / 1,000 reviews

Rating

0.0

(0)

Developer

Stan Van Rooy

Stan Van Rooy

Maintained by Community

Actor stats

0

Bookmarked

15

Total users

4

Monthly active users

9 days ago

Last modified

Share

Yotpo Reviews Scraper for Shopify stores 🌟

Free-plan sample: Apify Free accounts can collect up to 100 result rows total per run, shared across all inputs. Upgrade your Apify plan for larger runs. Normal Actor charges apply. The sample resets each run; it is not a daily or monthly quota.

Extract customer reviews from any Shopify store using Yotpo. Perfect for competitor analysis, product research, or monitoring your own reviews.

🚀 Quick Start

Just provide a store URL and hit run. The scraper automatically detects whether you want:

  • All reviews from the store (site-wide mode)
  • Reviews for a specific product (product-specific mode)

That's it! No configuration needed.

📥 Input

FieldTypeDescription
startUrlsarrayList of store URLs (store.com, https://store.com) or product URLs (https://store.com/products/item) to scrape in batch.
startUrlstringSingle store or product URL (legacy convenience; merged into startUrls).
minRating, maxRatingintegerFilter by star rating (1 to 5). Set minRating: 1, maxRating: 2 for negative reviews.
verifiedOnlybooleanKeep only verified buyer reviews. Default false.
mediaOnlybooleanKeep only reviews with customer photos or videos. Default false.
reviewTextstringKeyword search within review title and body text.
reviewDateFrom, reviewDateTostringInclusive date window (YYYY-MM-DD in UTC).
maxReviewsintegerMaximum reviews to deliver per URL. Default 100, 0 means unlimited.
maxScannedReviewsintegerMaximum source reviews inspected across all URLs in the run when filters are active. Default 10,000. The scan budget can stop collection before maxReviews is reached.
{
"startUrls": [{ "url": "https://www.brooklinen.com" }],
"minRating": 1,
"maxRating": 2,
"verifiedOnly": true,
"maxReviews": 200
}

📤 Output

Each review contains detailed fields:

{
"id": "123456789",
"title": "Great product!",
"content": "Full review text here...",
"score": 5,
"votes_up": 2,
"votes_down": 0,
"created_at": "2023-10-27T10:00:00.000Z",
"date_utc": "2023-10-27T10:00:00.000Z",
"product_id": "987654321",
"source_url": "https://store.com/products/product-name",
"user": {
"display_name": "Customer Name",
"type": "User"
},
"images": ["https://image-url.com/1.jpg"],
"videos": ["https://video-url.com/video.mp4"],
"verified_buyer": true,
"sentiment": 0.98,
"custom_fields": {
"Age": "25-34 years old",
"Height": "5 ft 5 in (165 cm)",
"Weight": "120-129 lbs (55-59 kg)",
"Fit": 2,
"Size Ordered": "Size 4"
},
"product_variants": {
"Size": "US 6",
"Color": "Brown Pinstripe"
},
"country": {
"code": "US",
"label": "🇺🇸 United States"
},
"language": "en",
"is_incentivized": false,
"topics": {
"fit": "I'm usually a 6 and I got an 8 which fits perfectly."
},
"comment": null
}

Field Descriptions

  • id - Unique Yotpo review ID
  • title - Review headline/summary
  • content - Full review text
  • score - Star rating (1-5)
  • votes_up / votes_down - Vote counts from other customers
  • created_at - Review submission timestamp (ISO 8601)
  • product_id - Shopify product ID
  • source_url - URL where the review was found
  • user.display_name - Reviewer's name
  • user.type - User classification (e.g., User)
  • images - Array of customer photo URLs
  • videos - Array of customer video URLs
  • verified_buyer - Boolean: purchased the product
  • sentiment - AI sentiment score (-1 to 1, higher = more positive)
  • custom_fields - Reviewer-provided custom data (e.g., Age, Height, Weight, Fit, Size Ordered)
  • product_variants - Product variant details (e.g., Size, Color)
  • country - Reviewer's country with code and label
  • language - Language of the review (e.g., "en")
  • is_incentivized - Boolean: whether the review was incentivized
  • topics - AI-extracted topics/themes with relevant sentences
  • comment - Store's response to the review (if any)

✨ Features

  • Batch Processing & URL Lists - Scrape multiple stores or product URLs in a single run with startUrls
  • Precision Review Filters - Filter by star rating (minRating/maxRating), verified purchases, media attachments, date ranges, or text keywords
  • Smart Mode Detection - Automatically detects if you want site-wide or product-specific reviews
  • Complete Data - Gets everything: scores, verified status, images, timestamps, sentiment, custom fields, and product variants
  • Reliable - Includes intelligent fallback mechanisms to handle tough sites
  • Fast - Uses Yotpo APIs directly, no browser overhead
  • Pagination - Automatically handles multi-page results

💡 Use Cases

  • Competitor Research - See what customers say about competing products
  • Product Insights - Understand customer sentiment before entering a market
  • Review Monitoring - Track reviews for your own products
  • Data Analysis - Export for sentiment analysis or ML training
  • Market Research - Analyze trends across multiple stores

⚠️ Important Notes

  • Only works for stores using Yotpo as their review platform
  • If a store doesn't use Yotpo, or a product has no reviews yet, the run still succeeds with 0 results and its status message says why (and which scraper fits the store's review app)
  • Product ID is automatically extracted from Shopify pages
  • Yotpo lists up to 10,000 reviews per sort order, so one store or product returns at most about 20,000 reviews (the newest and the oldest 10,000), each review once

Monitor a store for new reviews

Turn on Only new reviews (monitoring) (onlyNewReviews: true) and schedule the run. The scraper remembers the reviews it has seen for each store or product URL, so every scheduled run returns only reviews that are new or were edited since the last run. You pay for those rows and the usual start fee; a run that finds nothing new saves no rows.

  • First run (baseline): works like a normal run and saves up to maxReviews reviews per URL (0 saves the full history once). It then reads the rest of the store without saving it, so every existing review counts as known. On a large store this first run takes longer.
  • Later runs: return new reviews and reviews whose rating, title, text or store reply changed. Each row carries monitor_status: new or changed. Unchanged reviews are skipped and not charged.
  • The memory is kept per URL in a key-value store named yotpo-reviews-monitor in your Apify account. Use monitorName to keep separate lists for the same stores, for example one per client.
  • Filters still apply. Reviews outside your filters are not remembered, so widening the filters later can return older reviews that now match.
  • Deleted reviews are not reported, and a review missing from a shortened run is never treated as deleted.
  • Let a run finish before the next one starts on the same stores, otherwise both runs can return the same new review.

Schedule example:

  1. Save this input as a task:
{
"startUrls": [
{ "url": "https://www.brooklinen.com" }
],
"onlyNewReviews": true,
"maxReviews": 100
}
  1. In Apify Console open Schedules, create a schedule (for example every day at 08:00, cron 0 8 * * *) and add the task.
  2. Connect an integration (Slack, email, Zapier, Make or a webhook) to the task to receive each run's new reviews.

Pricing

Pay per result: $0.80 per 1,000 reviews plus a small Actor start fee ($0.0025 per GB of memory, one event per run). A 5,000-review export costs about $4. Volume users on higher Apify plans pay less per review.

🤝 Feedback & Feature Requests

I actively maintain this actor. Found a bug or need a field? Open an issue on the Issues tab with the store URL.

🎯 Example Usage

Scrape all reviews from a store:

{
"startUrls": [
{ "url": "https://www.brooklinen.com" }
],
"maxReviews": 100
}

Scrape reviews for a specific product:

{
"startUrls": [
{ "url": "https://www.brooklinen.com/products/luxe-core-sheet-set" }
],
"maxReviews": 50
}

❓ FAQ

Does this work with any Shopify store?

Yes, as long as the store uses Yotpo for their reviews! If a store uses a different app (like Judge.me), this scraper won't find any data.

Why did I get 0 results?

This usually means either the store doesn't use Yotpo, or the specific product URL you provided has no reviews yet. The run's status message tells you which, and names the right scraper when the store uses another review app.

Can I scrape more than 100 reviews?

Absolutely! Just change the maxReviews parameter in your input to whatever number you need, or set it to 0 for all available reviews (up to about 20,000 per store or product).

Is this scraper safe to use?

Yes! We use efficient API calls that mimic normal traffic patterns to ensure reliability and safety.

Need another review app? The Shopify review scraper for Stamped.io, REVIEWS.io, Junip, Fera, Opinew and Rivyo auto-detects the review app (Judge.me, Loox, Yotpo, Okendo and the six above) from a store or product URL and returns the same unified output.

Using different review platforms? Check out my other Shopify scrapers:


Built with ❤️ for the Apify community

If this Actor saved you time, a rating on its Apify Store page helps other users find it.