# Coupang Review Scraper (`parsebird/coupang-review-scraper`) Actor

Scrape customer reviews from Coupang.com Korea product pages by URL or product ID. Get review text, rating, title, helpful counts, reviewer photos and videos, purchase details, and Coupang's rating summary. Filter by star rating, keyword, or photos/videos only, and sort by newest or most helpful.

- **URL**: https://apify.com/parsebird/coupang-review-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Features:** Limited permissions
- **Stats:** 19 total users, 3 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.39 / 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

### Coupang Review Scraper (쿠팡) - Ratings, Text & Photos

Scrape customer reviews from [Coupang.com](https://www.coupang.com/) Korea product pages by URL or bare product ID. Get review text, star rating, title, helpful counts, reviewer photos and videos, and Coupang's own rating breakdown — filterable by star rating, keyword, or photos/videos only.

<table><tr>
<td style="border-left:4px solid #AE1D2A;padding:12px 16px;font-weight:600">
Paste a Coupang product URL or bare product ID and get its reviews back: text, rating, helpful count, reviewer photos/videos, and a rating-distribution summary — one row per review.
</td>
</tr></table>

<br>

<table>
<tr>
<td colspan="2" style="padding:10px 14px;background:#AE1D2A;border:none;border-radius:4px 4px 0 0">
<span style="color:#FFFFFF;font-size:14px;font-weight:700;letter-spacing:0.5px">ParseBird Coupang Suite</span>
<span style="color:#FBD8DC;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Korea's largest marketplace</span>
</td>
</tr>
<tr>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-right:none;border-top:none;vertical-align:top;width:50%;background:#FFFFFF">
<a href="https://apify.com/parsebird/coupang-detail-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Coupang Product Detail Scraper</a><br>
<span style="color:#78716C;font-size:11px">Full pages by URL/ID: option matrix, specs</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-top:none;vertical-align:top;width:50%;background:#FFFFFF">
<a href="https://apify.com/parsebird/coupang-search-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Coupang Search Scraper</a><br>
<span style="color:#78716C;font-size:11px">Keyword search + optional detail</span>
</td>
</tr>
<tr>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-radius:0 0 0 4px;border-right:none;border-top:none;vertical-align:top;width:50%;background:#FFFFFF">
<a href="https://apify.com/parsebird/coupang-scraper" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Coupang Korea Product Scraper</a><br>
<span style="color:#78716C;font-size:11px">Search + category + product URLs, monitoring</span>
</td>
<td style="padding:10px 14px;border:1px solid #E7E5E4;border-radius:0 0 4px 0;border-top:none;vertical-align:top;width:50%;background:#FBEEEF">
<a href="https://apify.com/parsebird/coupang-review-scraper" style="color:#AE1D2A;text-decoration:none;font-weight:700;font-size:13px">Coupang Review Scraper</a><br>
<span style="color:#AE1D2A;font-size:11px;font-weight:600">You are here</span>
</td>
</tr>
</table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
parsebird/coupang-review-scraper on Apify. Scrapes customer reviews from Coupang.com (Korea) product pages by URL or ID. Call: ApifyClient("TOKEN").actor("parsebird/coupang-review-scraper").call(run_input={...}), then client.dataset(run["defaultDatasetId"]).list_items().items. Inputs: productUrls (array, required — Coupang product URLs like https://www.coupang.com/vp/products/6135671310, or bare numeric product IDs), maxReviewsPerProduct (int, optional, default 1 — capped at 3,000/product), sort ("newest"|"best", default "newest"), starRatings (array of "1".."5", optional — ignored when keyword is set), keyword (string, optional — text match on review title/content, takes precedence over starRatings), photosVideosOnly (bool, default false), sameOptionOnly (bool, default false — keep only reviews for the itemId/vendorItemId in the input URL). Output: one summary row per product (productId, url, reviewTotalCount, ratingSummary{ratingCount,ratingAverage,ratingSummaries[{rating,count,percentage}]}, attachedImageSummary{count}, attachedVideoSummary{count}) followed by one row per review (reviewId, rating, title, content, reviewedAt, createdAt, helpfulCount/helpfulTrueCount/helpfulFalseCount, commentCount, itemName, itemImagePath, vendorName, reviewerName, reviewerEmail (masked by Coupang), displayWriter, displayName, isMyReview, isAdventurerReview, reviewerRank, reviewerBadges, vine, incentive, surveyAnswers, attachments, videoAttachments, hasPhoto, hasVideo, reviewerDisplayImage, url). Requires Apify Proxy "Unblocker" group (default). Full spec: GET https://api.apify.com/v2/acts/parsebird~coupang-review-scraper (Bearer TOKEN). Token: https://console.apify.com/account/integrations
```

### What is Coupang Review Scraper?

**Coupang Review Scraper** turns a list of [Coupang.com](https://www.coupang.com/) product URLs or IDs into structured customer review data. Coupang has no public review API, so this Actor is the practical **Coupang review API alternative** for pulling review text, ratings, and reviewer photos/videos into JSON, CSV, or Excel.

Give it **product URLs** (`https://www.coupang.com/vp/products/6135671310`) or **bare product IDs** (`6135671310`) and get every review back: star rating, title and text, helpful vote counts, reviewer photos/videos, and Coupang's own rating-distribution summary. No coding required, or drive it through the [Apify API](https://docs.apify.com/api/v2) for ongoing review monitoring.

### What can Coupang Review Scraper do?

- 🔗 **URL or ID input** — mix full product URLs and bare numeric IDs in one list
- ⭐ **Full rating breakdown** — Coupang's own 1–5 star distribution (count and percentage per star) as a summary row
- 📝 **Review text & metadata** — title, content, star rating, helpful counts, purchased item name/image, and the seller name
- 📸 **Photo/video filter** — pull only reviews that include reviewer photos or videos, or just tag them via `hasPhoto`/`hasVideo`
- 🔍 **Keyword & star filters** — narrow to reviews mentioning a term, or to specific star ratings
- 🔃 **Sort by newest or best** — Coupang's own newest-first or best (default) ranking
- 🎯 **Exact option filter** — keep only reviews for the colour/size/seller option in your URL (`itemId`/`vendorItemId`)
- 🔄 **Scheduling & integrations** — run on a schedule and push to Google Sheets, Zapier, Make, or webhooks

### What data can you extract from Coupang reviews?

**Summary row** (one per product, not charged)

| Field | Description |
|-------|-------------|
| `productId` / `url` | Product identifier and canonical URL |
| `reviewTotalCount` | Total number of reviews Coupang reports for the product |
| `ratingSummary` | `{ratingCount, ratingAverage, ratingSummaries: [{rating, count, percentage}]}` — the full 1–5 star breakdown |
| `attachedImageSummary` / `attachedVideoSummary` | `{count}` — total reviewer photos / videos Coupang reports for the product |

**Review row** (one per review, charged)

| Field | Description |
|-------|-------------|
| `reviewId` | Coupang's review identifier |
| `rating` | Star rating, 1–5 |
| `title` / `content` | Review title and body text |
| `reviewedAt` / `createdAt` | ISO timestamps |
| `helpfulCount` / `helpfulTrueCount` / `helpfulFalseCount` | Helpful-vote counts |
| `itemName` / `itemImagePath` | The specific item/variant the review was left on |
| `vendorName` | Seller name |
| `reviewerName` / `reviewerEmail` | Masked reviewer identity, as Coupang displays it (e.g. `김*민`, `kjm****@nate.com`) |
| `attachments` / `videoAttachments` | Reviewer-uploaded photo/video URLs |
| `hasPhoto` / `hasVideo` | Convenience booleans derived from the above |
| `surveyAnswers` | Coupang's short post-purchase survey answers (e.g. taste satisfaction, sweetness), when present |
| `reviewerBadges` / `reviewerRank` / `isAdventurerReview` / `vine` / `incentive` | Reviewer badges/program flags Coupang attaches to some reviews |
| `url` | Canonical product URL |

> Fields are passed through as Coupang's own API returns them: `reviewerEmail` and `reviewerName` are already masked by Coupang, not by this Actor, and a field a review doesn't have (e.g. `surveyAnswers`) comes back empty rather than omitted.

### How to scrape Coupang reviews

1. On [Coupang.com](https://www.coupang.com/), open the product you want and copy the URL — or note the numeric product ID from it
2. Open the [Coupang Review Scraper](https://apify.com/parsebird/coupang-review-scraper) on Apify and click **Try for free**
3. Paste your URLs or IDs into **Product URLs or IDs**, one per line
4. Optionally set **Max reviews per product**, **Sort by**, **Star ratings**, **Keyword**, or **Photos/videos only**
5. Click **Start**, then download the data as **JSON, CSV, Excel**, or read it via the **Apify API**

#### Python API example

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("parsebird/coupang-review-scraper").call(run_input={
    "productUrls": ["https://www.coupang.com/vp/products/6135671310"],
    "maxReviewsPerProduct": 100,
    "sort": "newest",
    "photosVideosOnly": False,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    if "reviewTotalCount" in item:
        print(f'{item["productId"]}: {item["reviewTotalCount"]} reviews, avg {item["ratingSummary"]["ratingAverage"]}')
        continue
    print(f'{item["rating"]}★ {item["title"]}: {item["content"][:60]}')
```

#### JavaScript API example

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

const client = new ApifyClient({ token: "YOUR_API_TOKEN" });

const run = await client.actor("parsebird/coupang-review-scraper").call({
    productUrls: ["https://www.coupang.com/vp/products/6135671310"],
    starRatings: ["4", "5"],
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((i) => console.log(i.rating, i.title));
```

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `productUrls` | array | **Yes** | — | Coupang product URLs or bare product IDs, up to 1,000, deduped |
| `maxReviewsPerProduct` | integer | No | 1 | Stop after this many reviews per product (hard-capped at 3,000/product) |
| `sort` | string | No | `newest` | `newest` or `best` (most-helpful/relevance) |
| `starRatings` | array | No | all | Only these star ratings (`"1"`–`"5"`); ignored when `keyword` is set |
| `keyword` | string | No | — | Only reviews whose title/content contain this text; takes precedence over `starRatings` |
| `photosVideosOnly` | boolean | No | `false` | Only reviews with reviewer photos or videos |
| `sameOptionOnly` | boolean | No | `false` | Only reviews for the exact option (`vendorItemId`, or `itemId`) in the product URL |
| `proxy` | object | No | Unblocker | Proxy configuration — the Apify Proxy "Unblocker" group is required |

### Output example

```json
{
  "productId": "9652682545",
  "reviewId": "1001481506",
  "rating": 5,
  "title": "한번쯤 경험해볼만한 정도?",
  "content": "",
  "reviewedAt": "2026-08-07T14:22:51.000Z",
  "helpfulCount": 0,
  "itemName": "포스트 오레오 오즈바 4p, 96g, 1개",
  "vendorName": "판매자: 쿠팡(주)",
  "reviewerName": "김*린",
  "reviewerEmail": "wkd*******@naver.com",
  "attachments": [],
  "videoAttachments": [],
  "hasPhoto": false,
  "hasVideo": false,
  "surveyAnswers": [
    { "question": "맛 만족도", "answer": "맛있어요" },
    { "question": "당도", "answer": "적당해요" }
  ],
  "url": "https://www.coupang.com/vp/products/9652682545"
}
```

Download results in JSON, HTML, CSV, or Excel.

### Use cases

- 📣 **Complaint / defect audits** — filter by low star ratings or a defect keyword to find recurring product issues
- 🔍 **Keyword research** — mine review text for the words real buyers use about a product
- 📸 **Most-helpful & photo mining** — pull the most-helpful or photo/video reviews for merchandising or social proof
- 📊 **Rating trend tracking** — re-run on a schedule and track `ratingSummary` drift over time
- 🗂️ **Bulk multi-product audits** — one run across many product IDs for a full catalog review sweep

### How it works

1. Normalizes each entry in `productUrls` into a product target — a full URL, a bare ID, or a placeholder-ID URL carrying a `vendorItemId`
2. Loads the product page once through the Apify Unblocker to pick up a working session, then reuses that session to call Coupang's `next-api/review` and `next-api/review/batch` endpoints — retrying on the same session first and re-warming a fresh one only if it stops answering
3. Paginates `next-api/review` in Coupang's own sort order (10 reviews/page, Coupang's fixed page size), a few pages at a time, only until enough matching reviews are collected (3,000-review safety ceiling per product)
4. Applies star-rating / keyword / photos-video / same-option filters and truncates to `maxReviewsPerProduct`
5. Emits one summary row per product, then one row per review, charging a `review` event for every review row

### How much does it cost to scrape Coupang reviews?

| Event | Free | Bronze | Silver | Gold |
|-------|------|--------|--------|------|
| `review` (per 1,000) | **$2.99** | $2.79 | $2.59 | $2.39 |

A `review` event is charged once per review row returned. The per-product summary row is never charged. A product whose reviews could not be retrieved at all (`incomplete: ["reviews"]`) is **not** charged — re-run that ID. Your Apify plan's free monthly usage covers the platform compute and proxy.

### FAQ

**What can I paste into Product URLs or IDs?**
A full Coupang product URL (`https://www.coupang.com/vp/products/{id}`, with or without `itemId`/`vendorItemId`), a bare numeric product ID, or a URL whose product ID is a placeholder (e.g. `0`) as long as it carries a `vendorItemId`.

**Why does it need the Unblocker proxy?**
Coupang serves Korean shoppers and its Akamai edge refuses almost all datacenter and non-Korean residential traffic. The Apify Proxy "Unblocker" group is the transport that gets through and is the default.

**Does "Sort by: Newest" call Coupang's own newest sort?**
Yes — "Newest" uses Coupang's own newest-first (최신순) ordering and "Best" uses Coupang's default best (베스트순) ranking, the same two orders you see on the product page.

**Why do I get reviews for other colours or sellers than the one in my URL?**
Coupang shows one shared review list for every option of a product (each colour, size and seller listing), even when your URL points at one option. Each review row carries the `itemId`/`vendorItemId` and `itemName` it was written for. Turn on **Only reviews for the option in the URL** (`sameOptionOnly`) to keep just the option identified by the `vendorItemId` (or `itemId`) in your URL — the Actor then scans more pages to find enough matching reviews, so runs take longer.

**Can it scrape age-restricted products (e.g. e-cigarettes, alcohol)?**
Yes. Coupang asks anonymous visitors to log in before showing these product pages, but their reviews are still public and the Actor retrieves them without an account.

**Why is there a 3,000-review cap per product?**
It's a safety ceiling so a single very-high-review product can't run away with proxy bandwidth. Set `maxReviewsPerProduct` for anything below that; contact support if you need the cap raised for a specific use case.

**What does the `incomplete` field mean?**
`incomplete: ["reviews"]` means the product's reviews could not be retrieved at all this run — only its ID is returned, and it is not charged; re-run that ID.

**Can I schedule it?**
Yes. Use [Apify scheduling](https://docs.apify.com/platform/schedules) to re-run the same product IDs on any interval and connect the output to Google Sheets, Zapier, Make, or webhooks. Found a bug? Open an issue on the **Issues** tab.

### Is it legal to scrape Coupang?

This Actor extracts publicly available data from Coupang.com. Scraping public data is generally considered legal based on recent court rulings, including the US Ninth Circuit's decision in *hiQ Labs v. LinkedIn*. Users are responsible for ensuring their use of the scraped data complies with applicable laws, Coupang's Terms of Service, and data-protection regulations. For more, read Apify's post on [web scraping legality](https://blog.apify.com/is-web-scraping-legal/).

### Other ParseBird scrapers

| Actor | Target site | Data |
|-------|------------|------|
| [Coupang Review Scraper](https://apify.com/parsebird/coupang-review-scraper) | Coupang.com | Customer reviews by URL/ID |
| [Coupang Product Detail Scraper](https://apify.com/parsebird/coupang-detail-scraper) | Coupang.com | Full product pages: option matrix, prices, specs |
| [Coupang Search Scraper](https://apify.com/parsebird/coupang-search-scraper) | Coupang.com | Keyword search results + optional detail |
| [Coupang Korea Product Scraper](https://apify.com/parsebird/coupang-scraper) | Coupang.com | Search / category / product URLs, monitoring |
| [Naver Map Scraper](https://apify.com/parsebird/naver-map-scraper) | Naver Map | Korean business listings |

Browse all ParseBird actors on the [Apify Store](https://apify.com/parsebird).

# Changelog

This Actor's version history is a separate document: https://apify.com/parsebird/coupang-review-scraper/changelog.md

# Actor input Schema

## `productUrls` (type: `array`):

Coupang product page URLs (e.g. https://www.coupang.com/vp/products/6135671310) or bare numeric product IDs (e.g. 6135671310). Max 1,000 per run — longer lists are truncated (split into more runs). Duplicates are removed automatically. A URL also works when the product ID in it is a placeholder (e.g. 0) as long as it carries a vendorItemId — the product is resolved from that vendor item ID.

## `maxReviewsPerProduct` (type: `integer`):

Stop after this many reviews per product (hard-capped at 3,000/product).

## `sort` (type: `string`):

Order reviews by newest first or by best (most-helpful) ranking.

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

Only return reviews with these star ratings. Leave empty for all ratings. Ignored when a keyword is set.

## `keyword` (type: `string`):

Only return reviews whose text mentions this keyword. Works best in Korean. Takes precedence over Star ratings.

## `photosVideosOnly` (type: `boolean`):

Only return reviews that include reviewer photos or videos.

## `sameOptionOnly` (type: `boolean`):

Coupang shows one shared review list for all options of a product (every colour, size and seller listing). Turn this on to keep only reviews written for the exact option in your URL, identified by its vendorItemId (or itemId) parameter, e.g. ...?itemId=22848403863\&vendorItemId=89883090620. Scans more review pages, so runs take longer.

## `proxy` (type: `object`):

Coupang's edge blocks datacenter and non-Korean residential IPs, so the Apify Proxy "Unblocker" group is required and is the default.

## Actor input object example

```json
{
  "productUrls": [
    "https://www.coupang.com/vp/products/6135671310"
  ],
  "maxReviewsPerProduct": 1,
  "sort": "newest",
  "starRatings": [],
  "keyword": "",
  "photosVideosOnly": false,
  "sameOptionOnly": false,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ]
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

No description

# 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 = {
    "productUrls": [
        "https://www.coupang.com/vp/products/6135671310"
    ],
    "maxReviewsPerProduct": 1,
    "starRatings": [],
    "keyword": "",
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "UNBLOCKER"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/coupang-review-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 = {
    "productUrls": ["https://www.coupang.com/vp/products/6135671310"],
    "maxReviewsPerProduct": 1,
    "starRatings": [],
    "keyword": "",
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["UNBLOCKER"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/coupang-review-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 '{
  "productUrls": [
    "https://www.coupang.com/vp/products/6135671310"
  ],
  "maxReviewsPerProduct": 1,
  "starRatings": [],
  "keyword": "",
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "UNBLOCKER"
    ]
  }
}' |
apify call parsebird/coupang-review-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parsebird/coupang-review-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/PW9aFIKq8gsV9JrVs/builds/2VpazMwkadhgByhM5/openapi.json
