# Shopee Reviews Scraper · Shop & Product Reviews · 8 Markets (`memo23/shopee-reviews-scraper`) Actor

Scrape Shopee reviews from any shop or product URL: star rating, text, product and variation, quality, service and delivery sub-ratings, buyer photos and video, seller replies. Filter by star, text or media. Incremental mode returns only new reviews. SG, MY, PH, TH, VN, BR, TW, MX.

- **URL**: https://apify.com/memo23/shopee-reviews-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** E-commerce
- **Stats:** 35 total users, 24 monthly users, 98.5% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 reviews

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Shopee Reviews Scraper

Scrape Shopee reviews from any shop or product URL. Every review comes back as its own row with the star rating, the written text, the product and variation the buyer bought, three sub-ratings (product quality, seller service, delivery), buyer photos and video, and the seller's reply.

Works on **Singapore, Malaysia, Philippines, Thailand, Vietnam, Brazil, Taiwan and Mexico**. No login, no cookies, no browser.

### Why use it

- **It returns reviews.** Since September 2026 Shopee refuses outside requests to its per-product review feed, which is why many Shopee review scrapers now finish with empty datasets. This actor reads the shop review feed, which still answers.
- **Negative reviews in full.** Shopee keeps each star rating in its own list. Pick 1 and 2 stars and you reach a shop's complaints far further back than a mixed sweep would.
- **Incremental mode.** Set *Only reviews newer than* to `7 days` and schedule the actor: each run reads only until it reaches reviews it has already seen, so a daily monitor stays small.
- **Honest coverage.** A free summary row per URL tells you how many reviews were collected per star and whether Shopee's own limit was reached.

### Use cases

- Complaint mining: what buyers of a competitor's products complain about, by product and variation
- Review monitoring for your own Shopee shop, with seller-reply tracking
- Sentiment and voice-of-customer analysis across Southeast Asian and Latin American markets
- Product research: how a product holds up, which variations get returned
- Buyer photo and video collection for quality checks

### Input

| Field | What it does |
| --- | --- |
| **Shopee shop or product URLs** | `https://shopee.sg/shop/442800909`, `https://shopee.co.th/bissiq` or a product link such as `https://shopee.com.br/Produto-i.1206343082.58254224177`. Keep the market's domain: shop ids exist on one market only. |
| **Max reviews per URL** | Default 100. `0` returns everything Shopee serves. |
| **Star ratings** | Any of 5, 4, 3, 2, 1. A capped run spreads its budget evenly across the ratings you pick. |
| **Only reviews with written text** | Drops stars-only ratings. |
| **Only reviews with photos or video** | Keeps reviews with buyer media. |
| **Only reviews newer than** | A date (`2026-09-01`) or a span (`30 days`). |
| **Add a shop summary row** | One free row per URL. On by default. |

#### Example input

```json
{
    "startUrls": ["https://shopee.sg/shop/442800909"],
    "maxReviewsPerShop": 200,
    "starRatings": ["1", "2"],
    "onlyWithText": true,
    "reviewsSince": "90 days"
}
```

### Output

One row per review:

```json
{
    "type": "review",
    "reviewId": "112922444669",
    "country": "SG",
    "shopId": "442800909",
    "shopUrl": "https://shopee.sg/shop/442800909",
    "productId": "40818293338",
    "productName": "Apple AirPods Pro 3",
    "productUrl": "https://shopee.sg/product/442800909/40818293338",
    "variation": "Pro 3",
    "rating": 4,
    "text": "Works great, fast delivery",
    "hasText": true,
    "productQuality": 5,
    "sellerService": 4,
    "deliveryService": 5,
    "imageUrls": ["https://down-sg.img.susercontent.com/file/sg-11134103-825b2-mtyn6c3hwjk77c"],
    "videoUrls": [],
    "reviewerName": "l*****4",
    "isAnonymous": true,
    "createdAt": "2026-10-07T08:38:41.000Z",
    "sellerReply": null,
    "sellerReplyAt": null,
    "buyerRegion": "SG",
    "isOverseas": false,
    "orderId": "244994736250507",
    "currency": "SGD"
}
```

And one free summary row per URL:

```json
{
    "type": "shop-summary",
    "country": "SG",
    "shopId": "442800909",
    "shopName": "Apple Flagship Store",
    "shopRating": 4.93,
    "shopRatingCount": 304943,
    "reviewsCollected": 20,
    "reviewsByStar": { "1": 3, "2": 3, "3": 4, "4": 5, "5": 5 },
    "coverage": "Stopped at maxReviewsPerShop."
}
```

#### Key fields

| Field | Meaning |
| --- | --- |
| `rating` | 1 to 5 stars |
| `text` | The buyer's comment, or `null` for a stars-only rating |
| `variation` | The model, size or colour bought |
| `productQuality`, `sellerService`, `deliveryService` | Shopee's three sub-ratings, 1 to 5 |
| `imageUrls`, `videoUrls` | Buyer media, full URLs |
| `reviewerName` | As Shopee shows it; anonymous buyers are masked (`l*****4`) |
| `sellerReply` | The shop's public reply, if any |
| `reviewId` | Stable id, safe for de-duplication across runs |

### Limits to know

- **Shopee serves about 1,000 reviews per star rating per shop**, so up to roughly 5,000 per shop. No client can read further back. The summary row says when a bucket hit that limit.
- **Product URLs** return that product's reviews from the shop feed. Shopee publishes no per-product feed, so for one product in a very large shop the result is the part of its history that falls inside the shop's latest reviews.
- **Indonesia (shopee.co.id)** refuses outside requests to its review feed right now. Such URLs return a row that says so and are not billed.

### FAQ

**Do I need a proxy?** No. The review feed answers without one. The proxy field is there if your runs ever get refused.

**How do I monitor new reviews?** Save a task with *Only reviews newer than* set to the schedule interval (for example `1 day` for a daily schedule) and turn on a schedule. De-duplicate on `reviewId` if the windows overlap.

**Why are some rows stars-only?** Many Shopee buyers rate without writing. Turn on *Only reviews with written text* to skip them.

**What am I billed for?** Review rows only. Summary rows and error rows are free.

### Support

Found a URL that should work and does not? Open an issue on the actor's Issues tab with the URL and the run link.

### For AI agents and LLM apps

Call the actor with `startUrls` (Shopee shop or product URLs) and read the default dataset. Filter `type == "review"` for review rows; `type == "shop-summary"` rows describe coverage. Use `starRatings: ["1","2"]` with `onlyWithText: true` to get complaint text for summarisation.

### Disclaimer

This actor reads publicly visible review data. You are responsible for complying with Shopee's terms and with data-protection law in your jurisdiction when you store or process reviewer data.

### Keywords

shopee reviews scraper, shopee review scraper, shopee ratings, shopee shop reviews, shopee product reviews, shopee comments, shopee feedback, shopee seller ratings, scrape shopee reviews, shopee sentiment analysis, shopee singapore, shopee philippines, shopee thailand, shopee malaysia, shopee vietnam, shopee brasil, shopee taiwan, shopee mexico

# Actor input Schema

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

Shop URLs (https://shopee.sg/shop/123456 or https://shopee.sg/shopname) return that shop's reviews. Product URLs (…-i.<shop>.<item> or /product/<shop>/<item>) return the reviews of that product found in its shop's review feed: Shopee publishes no per-product feed, so for a product in a very large shop this is a subset. Keep the market's domain in the URL, since shop ids only exist on one market.

## `maxReviewsPerShop` (type: `integer`):

How many reviews to return for each URL. 0 = everything Shopee serves: about 1,000 per star rating, so up to ~5,000 per shop.

## `starRatings` (type: `array`):

Which star ratings to collect. Shopee keeps each star rating in its own list, so picking only 1 and 2 stars reaches far older complaints than a mixed sweep. A capped run spreads its budget evenly across the ratings you pick.

## `onlyWithText` (type: `boolean`):

Many Shopee ratings are stars only. Turn on to keep only reviews with a comment.

## `onlyWithMedia` (type: `boolean`):

Keep only reviews that include buyer photos or video.

## `reviewsSince` (type: `string`):

Incremental mode for daily or weekly monitoring: a date (2026-09-01) or a span (30 days). Shopee serves reviews newest first, so the run stops reading as soon as it reaches older ones and you pay only for the new reviews.

## `includeShopSummary` (type: `boolean`):

One extra row per URL with the shop's name, overall rating and rating count, plus how many reviews were collected per star and whether Shopee's per-star limit was reached. Not billed.

## `maxConcurrency` (type: `integer`):

How many URLs to work on at once.

## `proxyConfiguration` (type: `object`):

Optional. The review feed answers without a proxy; add one only if your runs get refused.

## Actor input object example

```json
{
  "startUrls": [
    "https://shopee.sg/shop/442800909"
  ],
  "maxReviewsPerShop": 20,
  "starRatings": [
    "5",
    "4",
    "3",
    "2",
    "1"
  ],
  "onlyWithText": false,
  "onlyWithMedia": false,
  "includeShopSummary": true,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `reviews` (type: `string`):

Every review: star rating, text, product and variation, sub-ratings, photos, video, seller reply.

# 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": [
        "https://shopee.sg/shop/442800909"
    ],
    "maxReviewsPerShop": 20,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/shopee-reviews-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": ["https://shopee.sg/shop/442800909"],
    "maxReviewsPerShop": 20,
    "proxyConfiguration": { "useApifyProxy": False },
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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": [
    "https://shopee.sg/shop/442800909"
  ],
  "maxReviewsPerShop": 20,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call memo23/shopee-reviews-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/shopee-reviews-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/cUCFeQBSNd5kQQBza/builds/jBqaigaIF2eZJ8KMC/openapi.json
