# Oliveyoung Reviews Scraper (`stealth_mode/oliveyoung-reviews-scraper`) Actor

Scrape detailed product reviews from Oliveyoung.co.kr with precision. Collect ratings, user photos, repurchase status, and 16+ fields per review — perfect for e-commerce analysts, beauty market researchers, and product sentiment analysis projects.

- **URL**: https://apify.com/stealth_mode/oliveyoung-reviews-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 15 total users, 4 monthly users, 87.1% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.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.
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

## Oliveyoung.co.kr Reviews Scraper: Extract Beauty Product Reviews at Scale

***

### What Is Oliveyoung.co.kr?

Oliveyoung.co.kr is South Korea's leading online beauty and skincare retailer, featuring millions of products across skincare, makeup, wellness, and personal care categories. With a highly engaged user base, the platform hosts hundreds of thousands of detailed product reviews — a goldmine of consumer sentiment and product insights. Manually collecting and analyzing this review data is impractical at scale. The **Oliveyoung Reviews Scraper** automates this process, delivering structured review records that unlock market insights in minutes.

***

### Overview

The **Oliveyoung Reviews Scraper** extracts product reviews directly from Oliveyoung detail pages, transforming unstructured feedback into clean, analyzable datasets. It is ideal for:

- **E-commerce analysts** tracking product sentiment and consumer trends
- **Market researchers** studying the Korean beauty market
- **Competitive intelligence teams** monitoring competitor products
- **Data scientists** building sentiment analysis or recommendation models
- **Brand managers** collecting customer feedback for product improvement

Key features include flexible sorting (by usefulness, date, rating), review-type filtering (photo reviews, monthly assessments, repurchases), and robust error handling for bulk operations.

***

### Input Format

The scraper accepts a JSON configuration object with the following parameters:

```json
{
  "urls": [
    "https://www.oliveyoung.co.kr/store/goods/getGoodsDetail.do?goodsNo=A000000255328&dispCatNo=100000100010013&tab=review"
  ],
  "sort_by": "USEFUL_SCORE_DESC",
  "review_type": "ALL",
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
```

| Parameter | Type | Description | Options |
|---|---|---|---|
| `urls` | Array | Direct links to Oliveyoung product detail pages with review tabs | Any valid product URL |
| `sort_by` | String | How to order reviews in results | `USEFUL_SCORE_DESC` (most useful), `DATETIME_DESC` (newest), `RECOMMENDED_DESC` (most recommended), `RATING_DESC` (highest rating), `RATING_ASC` (lowest rating) |
| `review_type` | String | Filter reviews by category | `ALL` (all reviews), `PHOTO` (reviews with images), `MONTHLY` (1-month reviews), `REPURCHASE` (repurchase reviews) |
| `max_items_per_url` | Integer | Maximum reviews per URL (1–200) | Default: `20` |
| `ignore_url_failures` | Boolean | Continue scraping if a URL fails | `true` or `false` |

> **Tip:** Use `USEFUL_SCORE_DESC` for actionable feedback, `DATETIME_DESC` for recent sentiment, and `PHOTO` filter for detailed product assessments.

***

### Output Format

#### Example Output Record

```json
{
  "review_id": 60249268,
  "content": "✅️ 실사용후기\r\n\r\n만족하며 잘 사용한 제품이라 재구매했어요.\r\n\r\n순하고 용량도 넉넉한 편이여서\r\n민감한 피부에도 부담없이 막 사용하기 좋아요.\r\n\r\n가벼운, 거의 물 같은 제형인데도 꽤 촉촉해요.\r\n세안 후 두어번 레이어링해서 발라주는데\r\n끈적임 없고 속당김도 없고 피부가 편합니다.\r\n\r\n닦토로 사용하면 자극없이 피부결 정리에 좋고\r\n평소보다 피부가 예민해지면 \r\n화장솜에 듬뿍 뭍혀서 팩으로도 쓰는 편!\r\n\r\n여러가지 용도로 사용하기 좋은\r\n아주 잘 만든 육각형 토너 같은 느낌이에요👍🏻",
  "goods_dto": {
    "goods_number": "A000000248498",
    "item_number": "001",
    "legacy_goods_number": "8800307378220",
    "goods_name": "[NEW/리뉴얼] 아누아 어성초 77 히알루론산 수분 진정 토너 350ml 리필 기획세트 (+350ml 리필팩)",
    "option_name": " "
  },
  "review_score": 5,
  "has_photo": true,
  "is_repurchase": false,
  "is_month_use_review": false,
  "is_month_over_review": false,
  "review_type": "NORMAL",
  "useful_point": 2520,
  "photo_review_list": [
    {
      "image_sequence": 1,
      "image_path": "2026/05/27/6fc9fa8d70c847bda992d42abf7336b61779893250927.png"
    },
    {
      "image_sequence": 2,
      "image_path": "2026/05/27/e9c7df8405294dea99ec17298d46996e1779893260490.png"
    },
    {
      "image_sequence": 3,
      "image_path": "2026/05/27/57aafc7493a64e49ae9128b3839d1dad1779893269445.png"
    }
  ],
  "profile_dto": {
    "member_nickname": "뚜토리",
    "profile_image_url": "2022/03/10/1646842514305.png",
    "is_shutterbrity": false,
    "is_top_reviewer": true,
    "reviewer_rank": 865,
    "profile_key": "cGxMTTVNdXI3VDArQStqVWc1UU5Gdz09",
    "skin_type": "A04",
    "skin_tone": "B05",
    "skin_trouble": [
      "C01",
      "C03"
    ],
    "is_skin_type_matched": false,
    "is_skin_tone_matched": false
  },
  "created_date_time": "2026.05.27",
  "recommend_count": 1,
  "is_my_review": false,
  "is_recommended": false,
  "from_url": "https://www.oliveyoung.co.kr/store/goods/getGoodsDetail.do?goodsNo=A000000255328&dispCatNo=100000100010013&t_page=%EC%B9%B4%ED%85%8C%EA%B3%A0%EB%A6%AC%EA%B4%80&t_click=%EC%8A%A4%ED%82%A8%2F%ED%86%A0%EB%84%88_%EC%A0%84%EC%B2%B4__%EC%83%81%ED%92%88%EC%83%81%EC%84%B8&t_number=2&tab=review"
}
```

Each scraped review returns a comprehensive record with 16+ data fields:

#### Review Identification & Content

| Field | Meaning | Example |
|---|---|---|
| `Review ID` | Unique identifier for each review | `12345678` |
| `Content` | Full review text written by the user | `"Great product, very moisturizing..."` |
| `Review Type` | Category of the review | `PHOTO`, `MONTHLY`, `REPURCHASE`, or `NORMAL` |
| `Review Score` | Star rating (typically 1–5) | `5`, `4.5` |

#### Credibility & Usage Signals

| Field | Meaning | Interpretation |
|---|---|---|
| `Has Photo` | Whether the review includes product images | `true`/`false` — Photo reviews tend to be more trusted |
| `Is Repurchase` | Whether the reviewer bought the product again | `true`/`false` — Strong indicator of satisfaction |
| `Is Month Use Review` | Whether review was written exactly after 1 month of use | `true`/`false` — Reflects medium-term performance |
| `Is Month Over Review` | Whether review was written after 1+ month of use | `true`/`false` — Long-term feedback |
| `Useful Point` | Number of upvotes rating the review as helpful | `42`, `107` — Consensus measure of review quality |
| `Recommend Count` | Total recommendations from other users | `15` — Community validation |
| `Is Recommended` | Whether this specific review is marked as recommended | `true`/`false` |

#### User & Product Context

| Field | Meaning | Contains |
|---|---|---|
| `Profile DTO` | Reviewer's anonymized user profile data | Reviewer name, rank, number of reviews |
| `Goods DTO` | Product information object | Product ID, name, category, price |
| `Photo Review List` | Array of images attached to the review | Image URLs, captions, upload dates |
| `Created Date Time` | Timestamp when the review was posted | ISO 8601 format (e.g., `2024-01-15T10:30:00Z`) |
| `Is My Review` | Indicator whether you own this review | `true`/`false` — Useful for personal dashboards |

***

### How to Use

1. **Locate product URLs** — Browse Oliveyoung.co.kr and open any product detail page. Ensure the URL includes the product ID and navigates to the review tab.
2. **Build your configuration** — Add product URLs to the `urls` array. You can paste one URL or paste multiple URLs in bulk.
3. **Set sorting & filters** — Choose `sort_by` (e.g., `USEFUL_SCORE_DESC` for quality feedback) and `review_type` (e.g., `PHOTO` for visual reviews).
4. **Configure limits** — Set `max_items_per_url` to control volume per product (up to 200).
5. **Run the scraper** — Start the run and monitor progress in the logs.
6. **Export data** — Download results as JSON, CSV, or Excel for analysis.

**Best practices:**

- Use `MONTHLY` or `REPURCHASE` filters to prioritize high-intent reviews.
- Set `max_items_per_url` to `200` for comprehensive product coverage, or `50` for faster sampling.
- Sort by `USEFUL_SCORE_DESC` to surface the most actionable feedback.
- Enable `ignore_url_failures: true` when scraping multiple products to prevent interruptions.

***

### Use Cases & Business Value

- **Sentiment analysis:** Aggregate review scores and text to measure product satisfaction trends
- **Competitive benchmarking:** Compare competitor products by review volume, rating, and user feedback
- **Product development:** Identify feature requests, common complaints, and improvement opportunities from user reviews
- **Market research:** Analyze Korean beauty market demand, preferred ingredients, and seasonal trends
- **Influencer & content strategy:** Find highly-rated products and popular user testimonials for marketing campaigns
- **Recommendation systems:** Build personalized product recommendations based on review patterns and user preferences

The Oliveyoung Reviews Scraper transforms thousands of customer insights into machine-readable data, enabling data-driven decisions that improve product strategy, marketing, and customer experience.

***

### Conclusion

The **Oliveyoung.co.kr Reviews Scraper** is the essential tool for anyone leveraging Korean beauty market intelligence. With 16+ fields per review, flexible filtering, and seamless export, it eliminates the tedium of manual review collection and empowers you to extract actionable insights from one of Asia's largest beauty e-commerce platforms. Start scraping today and unlock competitive advantages in the beauty space.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the Products details urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `sort_by` (type: `string`):

Select your option to sort reviews

## `review_type` (type: `string`):

Select your option to filter by review type

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.oliveyoung.co.kr/store/goods/getGoodsDetail.do?goodsNo=A000000255328&dispCatNo=100000100010013&t_page=%EC%B9%B4%ED%85%8C%EA%B3%A0%EB%A6%AC%EA%B4%80&t_click=%EC%8A%A4%ED%82%A8%2F%ED%86%A0%EB%84%88_%EC%A0%84%EC%B2%B4__%EC%83%81%ED%92%88%EC%83%81%EC%84%B8&t_number=2&tab=review"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# 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 = {
    "urls": [
        "https://www.oliveyoung.co.kr/store/goods/getGoodsDetail.do?goodsNo=A000000255328&dispCatNo=100000100010013&t_page=%EC%B9%B4%ED%85%8C%EA%B3%A0%EB%A6%AC%EA%B4%80&t_click=%EC%8A%A4%ED%82%A8%2F%ED%86%A0%EB%84%88_%EC%A0%84%EC%B2%B4__%EC%83%81%ED%92%88%EC%83%81%EC%84%B8&t_number=2&tab=review"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/oliveyoung-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 = {
    "urls": ["https://www.oliveyoung.co.kr/store/goods/getGoodsDetail.do?goodsNo=A000000255328&dispCatNo=100000100010013&t_page=%EC%B9%B4%ED%85%8C%EA%B3%A0%EB%A6%AC%EA%B4%80&t_click=%EC%8A%A4%ED%82%A8%2F%ED%86%A0%EB%84%88_%EC%A0%84%EC%B2%B4__%EC%83%81%ED%92%88%EC%83%81%EC%84%B8&t_number=2&tab=review"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/oliveyoung-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 '{
  "urls": [
    "https://www.oliveyoung.co.kr/store/goods/getGoodsDetail.do?goodsNo=A000000255328&dispCatNo=100000100010013&t_page=%EC%B9%B4%ED%85%8C%EA%B3%A0%EB%A6%AC%EA%B4%80&t_click=%EC%8A%A4%ED%82%A8%2F%ED%86%A0%EB%84%88_%EC%A0%84%EC%B2%B4__%EC%83%81%ED%92%88%EC%83%81%EC%84%B8&t_number=2&tab=review"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/oliveyoung-reviews-scraper --silent --output-dataset

```

## MCP server setup

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