# Yotpo Review Scraper for Shopify stores (`stanvanrooy6/yotpo-scraper`) Actor

Scrape Yotpo reviews from any Shopify store. Get ratings, text, images & videos. Unlimited usage for a $7/month.

- **URL**: https://apify.com/stanvanrooy6/yotpo-scraper.md
- **Developed by:** [Stan Van Rooy](https://apify.com/stanvanrooy6) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 9 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$19.00/month + usage

To use this Actor, you pay a monthly rental fee to the developer. The rent is subtracted from your prepaid usage every month.You also pay for the Apify platform usage, which gets cheaper the higher Apify subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#rental-actors

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Yotpo Reviews Scraper for Shopify stores 🌟

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

**Start URLs** (required)

- Site-wide: `https://store.com` or `store.com`
- Product-specific: `https://store.com/products/product-name`

**Max Reviews** (optional, default: 100)

- How many reviews to scrape per URL

### 📤 Output

Each review contains detailed fields:

```json
{
  "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

- **Smart Mode Detection** - Automatically detects if you want site-wide or product-specific reviews
- **Complete Data** - Gets everything: scores, verified status, images, timestamps, sentiment
- **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, the actor completes successfully with 0 results (won't fail)
- Product ID is automatically extracted from Shopify pages

### 💰 Pricing

**$19/month flat fee** - unlimited runs, unlimited reviews

### 🤝 Feedback & Feature Requests

I'm actively maintaining this actor and happy to add features you need. Just reach out!

📧 **stanvanrooy6@gmail.com**

Whether it's additional data fields, filtering options, or integration with other platforms - let me know and I'll build it.

### 🎯 Example Usage

**Scrape all reviews from a store:**

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

**Scrape reviews for a specific product:**

```json
{
  "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.

#### Can I scrape more than 100 reviews?

Absolutely! Just change the `maxReviews` parameter in your input to whatever number you need.

#### Is this scraper safe to use?

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

### 🔗 Related Scrapers

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

- **[Universal Shopify Review Scraper](https://apify.com/stanvanrooy/shopify-review-scraper)** - Automatically detects platform and extracts all reviews.
- **[Judge.me Reviews Scraper](https://apify.com/stanvanrooy/judge-me-scraper)** - Dedicated scraper for Shopify stores using Judge.me.
- **[Loox Reviews Scraper](https://apify.com/stanvanrooy/loox-scraper)** - Dedicated scraper for Shopify stores using Loox.
- **[Okendo Reviews Scraper](https://apify.com/stanvanrooy6/okendo-scraper)** - Dedicated scraper for Shopify stores using Okendo.

***

Built with ❤️  for the Apify community

# Actor input Schema

## `startUrls` (type: `array`):

List of Shopify store URLs or specific product URLs to scrape reviews from.

## `maxReviews` (type: `integer`):

Maximum number of reviews to scrape per URL.

## `debug` (type: `boolean`):

Enable verbose logging for debugging purposes.

## Actor input object example

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

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.brooklinen.com"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("stanvanrooy6/yotpo-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "startUrls": [{ "url": "https://www.brooklinen.com" }] }

# Run the Actor and wait for it to finish
run = client.actor("stanvanrooy6/yotpo-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.brooklinen.com"
    }
  ]
}' |
apify call stanvanrooy6/yotpo-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=stanvanrooy6/yotpo-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/nGBYPNNqd6vojmjYv/builds/5i5fISYxrdxgcYk7D/openapi.json
