# Olive Young Reviews Scraper — K-Beauty Product Reviews (`cocomoon/oliveyoung-review-scraper`) Actor

Scrape customer reviews from Olive Young (oliveyoung.co.kr), Korea's #1 beauty retailer. Review text, star rating, date, photos, repurchase & 1-month-use flags, reviewer skin type/tone/concerns, helpful votes. Sort by newest, rating or helpfulness; filter photo/repurchase reviews.

- **URL**: https://apify.com/cocomoon/oliveyoung-review-scraper.md
- **Developed by:** [PARK MOONNAM](https://apify.com/cocomoon) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

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

## Olive Young Reviews Scraper — K-Beauty Customer Reviews with Skin Profiles

Scrape customer reviews from **Olive Young (oliveyoung.co.kr)** — Korea's #1 health & beauty retailer, with 1,300+ stores and the dominant K-beauty online mall. Give it any product number or product URL and get clean, structured JSON: **review text, star rating, date, review photos, repurchase and one-month-use flags, helpful votes, and the reviewer's skin type, skin tone and skin concerns**.

Olive Young reviews are where Korean consumers tell the truth about skincare and makeup — tens of thousands of reviews per hit product, written by people who actually bought it, tagged with their skin profile. That is the richest K-beauty consumer feedback available anywhere, and this Actor makes it usable without Korean language skills, a Korean IP, or manual copy-pasting.

### What you can do with it

- 🧴 **Product & formulation research** — what Korean users love or hate about a product, per skin type (dry / oily / sensitive…) and concern (pores, acne, wrinkles…)
- 🏷 **Brand & competitor monitoring** — track ratings, review velocity and complaints for your products and competitors, on a schedule
- 📈 **Trend detection** — newest-first sorting shows what Koreans are buying and saying *this week*, months before it reaches TikTok or Amazon
- 🤖 **LLM / sentiment pipelines** — thousands of real Korean reviews, ready for translation, summarisation, RAG or model training
- 🛍 **Sourcing & retail buying** — repurchase rate and one-month-use reviews are strong signals of true product quality, not launch hype

### Input

| Field | Description |
| --- | --- |
| `products` | Olive Young product numbers (`A000000262413`) or product URLs. Product numbers are in every product URL (`goodsNo=...`) and in the `goodsNo` field of my [Olive Young Scraper](https://apify.com/cocomoon/oliveyoung-scraper) — search a keyword there, then feed the product numbers here. |
| `sortBy` | `DATETIME_DESC` newest first (default) · `USEFUL_SCORE_DESC` most useful · `RECOMMENDED_DESC` most helpful votes · `RATING_DESC` / `RATING_ASC` highest / lowest rating first |
| `reviewType` | `ALL` (default) · `PHOTO` photo reviews only · `MONTHLY` one-month-use reviews · `REPURCHASE` repurchase reviews |
| `maxReviewsPerProduct` | Cap per product (default 100) |
| `maxItems` | Cap across all products (default 1000) |
| `includeProductStats` | Adds total review count, average rating and 1–5 star distribution to every review (default on) |

```json
{
    "products": ["A000000262413", "https://www.oliveyoung.co.kr/store/goods/getGoodsDetail.do?goodsNo=A000000263055"],
    "sortBy": "DATETIME_DESC",
    "reviewType": "ALL",
    "maxReviewsPerProduct": 500
}
```

Tip: to get the *lowest-rated* reviews for complaint mining, set `sortBy` to `RATING_ASC`.

### Example output

```json
{
    "source": "oliveyoung.co.kr",
    "productNo": "A000000262413",
    "productName": "[산리오캐릭터즈 에디션] 메디힐 더마 토너패드 100+100매 7종 골라담기",
    "productUrl": "https://www.oliveyoung.co.kr/store/goods/getGoodsDetail.do?goodsNo=A000000262413",
    "productImage": "https://image.oliveyoung.co.kr/cfimages/cf-goods/uploads/images/thumbnails/10/0000/0026/A000000262413237ko.png",
    "totalReviews": 81704,
    "averageRating": 4.8,
    "ratingDistribution": { "5": 86, "4": 10, "3": 3, "2": 1, "1": 1 },
    "reviewId": 64547333,
    "rating": 5,
    "text": "대용량이라 아낌없이 사용할 수 있다는 점이 가장 마음에 들었어요. 패드 한 장으로 피부결을 가볍게 정돈하거나...",
    "date": "2026-08-22",
    "reviewedOption": "콜라겐 탄력채움 패드 100매",
    "reviewedItemNo": "010",
    "barcode": "8809936746578",
    "hasPhoto": true,
    "images": ["https://image.oliveyoung.co.kr/uploads/images/gdasEditor/2026/08/22/aa165474d50e499b94972eb8c83468611787358564701.png"],
    "isRepurchase": false,
    "isOneMonthUse": true,
    "reviewSource": "online purchase",
    "helpfulCount": 85,
    "usefulScore": 44550,
    "reviewer": {
        "nickname": "올리뷰과몰입",
        "isTopReviewer": true,
        "reviewerRank": 42,
        "skinType": "oily",
        "skinTone": "cool",
        "skinConcerns": ["wrinkles", "flakiness"]
    },
    "scrapedAt": "2026-09-03T06:12:41.000Z"
}
```

Skin codes are translated for you: skin type (oily / dry / combination / sensitive / slightly dry / acne-prone / normal), personal-colour tone (cool / warm / spring warm / summer cool / autumn warm / winter cool) and concerns (dark spots, brightening, wrinkles, flakiness, breakouts, blackheads, excess sebum, sensitivity, pores, elasticity, redness, itchiness, dark circles). `reviewSource` tells you whether the review came from an online purchase, an in-store purchase, an Olive Young pick or a gifted product.

### Why this Actor

- **Built by a Korean marketing practitioner** — I work with Olive Young and K-beauty brands daily, so the fields reflect how the platform really works (options/기획 bundles, 올영픽, one-month-use and repurchase badges, reviewer skin profiles)
- **Fast and affordable** — uses Olive Young's own review API over plain HTTP, no headless browser: hundreds of reviews per minute at a fraction of the cost of browser-based scrapers
- **Complete data, cleanly typed** — dates normalised to ISO, codes translated to English, image URLs resolved, duplicates removed, per-product and total caps

### FAQ

**Where do I get product numbers?** From any Olive Young product URL (`goodsNo=A000000262413`), or run my [Olive Young Scraper](https://apify.com/cocomoon/oliveyoung-scraper) with a keyword or brand name and use its `goodsNo` field. You can chain the two Actors in an Apify workflow.

**Do I need a Korean IP or account?** No login is used. Olive Young's review API blocks most datacenter IPs, so the Actor defaults to Apify residential proxies located in Korea — leave the proxy setting as it is and it just works. Responses are small (about 1 MB per 1,000 reviews), so proxy traffic costs are negligible.

**Can I get all reviews of a product?** Yes — raise `maxReviewsPerProduct` and `maxItems`. Popular products have 10,000–80,000+ reviews; the Actor pages through them with cursor pagination and de-duplicates.

**Can I schedule it?** Yes — use Apify Schedules for daily/weekly monitoring and send the dataset anywhere (Google Sheets, S3, webhook, MCP/AI agent).

**Is this legal?** The Actor collects only publicly visible review data. Reviewer nicknames are the public display names shown on the site; no accounts, emails or private data are accessed. You are responsible for using the data in compliance with applicable laws and the target site's terms.

**Something broken or missing?** Open an issue on this Actor — I respond quickly. See also my [Olive Young Scraper](https://apify.com/cocomoon/oliveyoung-scraper) (product search, prices, ratings) and [Daiso Korea Scraper](https://apify.com/cocomoon/daiso-scraper); more Korean-platform Actors are on the way.

***

*Keywords: Olive Young reviews scraper, oliveyoung.co.kr reviews, K-beauty reviews data, Korean cosmetics reviews API, Korean skincare customer feedback, Olive Young review export, 올리브영 리뷰 스크레이퍼, 올리브영 리뷰 크롤링, K-beauty sentiment analysis*

# Actor input Schema

## `products` (type: `array`):

Olive Young product numbers (e.g. <code>A000000262413</code>) or product page URLs. Product numbers are in every product URL (<code>goodsNo=...</code>) and in the <code>goodsNo</code> field of my <a href='https://apify.com/cocomoon/oliveyoung-scraper' target='_blank'>Olive Young Scraper</a> output.

## `sortBy` (type: `string`):

Order in which reviews are collected (same options as the Olive Young site).

## `reviewType` (type: `string`):

Collect all reviews, or only photo reviews, one-month-use reviews, or repurchase reviews.

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

Cap the number of reviews collected for each product.

## `maxItems` (type: `integer`):

Maximum number of reviews to scrape across all products.

## `includeProductStats` (type: `boolean`):

Add the product's total review count, average rating and 1–5 star distribution to every review (one extra request per product).

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

Olive Young's review API blocks most datacenter IPs after a few requests, so the default is Apify <b>residential proxy located in Korea</b> — tested to pass reliably. Keep it unless you have your own Korean proxies.

## Actor input object example

```json
{
  "products": [
    "A000000262413"
  ],
  "sortBy": "DATETIME_DESC",
  "reviewType": "ALL",
  "maxReviewsPerProduct": 100,
  "maxItems": 1000,
  "includeProductStats": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "KR"
  }
}
```

# Actor output Schema

## `results` (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 = {
    "products": [
        "A000000262413"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "KR"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("cocomoon/oliveyoung-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 = {
    "products": ["A000000262413"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "KR",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("cocomoon/oliveyoung-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 '{
  "products": [
    "A000000262413"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "KR"
  }
}' |
apify call cocomoon/oliveyoung-review-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,cocomoon/oliveyoung-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/n6RkcP14E9Ocnog2z/builds/eQR0ClibKRYUtmcT6/openapi.json
