# OliveYoung Bestseller Ranking Scraper — K-Beauty Trends (`yohan.kim/oliveyoung-ranking-scraper`) Actor

Daily bestseller rankings from OliveYoung, Korea's #1 beauty retailer. Track K-beauty trends: rank, brand, product, prices, discounts and promo flags per category. The only actor covering OliveYoung rankings.

- **URL**: https://apify.com/yohan.kim/oliveyoung-ranking-scraper.md
- **Developed by:** [요한 김](https://apify.com/yohan.kim) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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

## OliveYoung Bestseller Ranking Scraper — K-Beauty Trend Data

Get the **Top 100 bestselling products** from [OliveYoung](https://www.oliveyoung.co.kr), Korea's #1 health & beauty retailer — the store where K-beauty trends are born before they go global.

If a product ranks on OliveYoung today, it shows up on TikTok, Amazon and Sephora months later. This actor gives you that early signal as clean, structured data.

### What you get

For every ranked product:

| Field | Example |
|---|---|
| `rank` | 1 |
| `brand` | 메디힐 (Mediheal) |
| `name` | 에센셜 마스크팩 10매 기획 |
| `productCategory` | 01 > 마스크팩 > 시트팩 |
| `originalPrice` / `salePrice` | 20000 / 10000 (KRW) |
| `discountPercent` | 50 |
| `flags` | 세일, 쿠폰, 1+1, 증정, 오늘드림 |
| `onSale` / `hasCoupon` / `isOnePlusOne` / `hasGift` | true/false |
| `goodsNo` / `productUrl` / `imageUrl` | direct product links |
| `scrapedAt` | ISO timestamp |

### 21 ranking categories

Overall Top 100, Skincare, Mask Pack, Cleansing, Sun Care, Makeup, Nail, Beauty Tools, Dermo Cosmetics, Men's, Fragrance, Hair Care, Body Care, Health Supplements, Food, Oral Care, Health/Fitness, Hygiene, Fashion, Home/Living, Hobby — select any combination in one run.

### Who uses this

- **Beauty brands & product teams** — track which formulas, ingredients and price points are winning in the world's most competitive beauty market.
- **Amazon / e-commerce sellers** — spot K-beauty products trending in Korea before they saturate Western marketplaces.
- **Market researchers & analysts** — daily ranking snapshots build a time series of the K-beauty market.
- **Retail buyers & importers** — source what's actually selling, not what's advertised.
- **Data & AI teams** — feed trend data into recommendation engines, agents and dashboards.

### Why this data matters

- The Korean beauty market is the global trend leader; OliveYoung is its main battleground with 1,300+ stores and dominant online share.
- Rankings update continuously — schedule this actor daily and you own a **K-beauty trend time series** nobody else has.
- Promo flags (`1+1`, coupon, gift) reveal the real promotional playbook behind each bestseller.

### Usage

Default input scrapes the overall Top 100. Typical run: ~1–3 seconds per category, 100 items each.

```json
{
    "categories": ["ALL", "10000010001", "10000010009"],
    "maxItems": 0
}
````

**Tip:** schedule a daily run and connect the dataset to Google Sheets, or query it through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) so your AI agent can answer "what's trending in K-beauty today?"

### Notes

- Data comes from OliveYoung's public bestseller pages. Only publicly visible information is collected.
- Prices are in KRW. Product names are Korean (UTF-8); pipe them through a translation step if needed.
- Layout changes on the source site are monitored and fixed promptly — report issues in the Issues tab.

# Actor input Schema

## `categories` (type: `array`):

Which bestseller rankings to scrape. Each returns the Top 100 for that category.

## `customRankingUrls` (type: `array`):

Advanced: paste any getBestList.do URL (e.g. with your own filters). Scraped in addition to the categories above.

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

Maximum number of ranked products to return per ranking (0 = all, usually 100).

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

Proxy settings. Default Apify datacenter proxies work fine for OliveYoung.

## Actor input object example

```json
{
  "categories": [
    "ALL"
  ],
  "customRankingUrls": [],
  "maxItems": 0,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("yohan.kim/oliveyoung-ranking-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 = { "proxyConfiguration": { "useApifyProxy": True } }

# Run the Actor and wait for it to finish
run = client.actor("yohan.kim/oliveyoung-ranking-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 '{
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call yohan.kim/oliveyoung-ranking-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "OliveYoung Bestseller Ranking Scraper — K-Beauty Trends",
        "description": "Daily bestseller rankings from OliveYoung, Korea's #1 beauty retailer. Track K-beauty trends: rank, brand, product, prices, discounts and promo flags per category. The only actor covering OliveYoung rankings.",
        "version": "0.1",
        "x-build-id": "1Q5STbFrS7cV3mwqf"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/yohan.kim~oliveyoung-ranking-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-yohan.kim-oliveyoung-ranking-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/yohan.kim~oliveyoung-ranking-scraper/runs": {
            "post": {
                "operationId": "runs-sync-yohan.kim-oliveyoung-ranking-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/yohan.kim~oliveyoung-ranking-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-yohan.kim-oliveyoung-ranking-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "categories": {
                        "title": "Ranking categories",
                        "type": "array",
                        "description": "Which bestseller rankings to scrape. Each returns the Top 100 for that category.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "ALL",
                                "10000010001",
                                "10000010009",
                                "10000010010",
                                "10000010011",
                                "10000010002",
                                "10000010012",
                                "10000010006",
                                "10000010008",
                                "10000010007",
                                "10000010005",
                                "10000010004",
                                "10000010003",
                                "10000020001",
                                "10000020002",
                                "10000020003",
                                "10000020005",
                                "10000020004",
                                "10000030007",
                                "10000030005",
                                "10000030006"
                            ],
                            "enumTitles": [
                                "Overall Top 100",
                                "Skincare",
                                "Mask Pack",
                                "Cleansing",
                                "Sun Care",
                                "Makeup",
                                "Nail",
                                "Beauty Tools",
                                "Dermo Cosmetics",
                                "Men's",
                                "Fragrance/Diffuser",
                                "Hair Care",
                                "Body Care",
                                "Health Supplements",
                                "Food",
                                "Oral Care",
                                "Health/Fitness Goods",
                                "Hygiene Products",
                                "Fashion",
                                "Home/Living/Appliances",
                                "Hobby/Fancy"
                            ]
                        },
                        "default": [
                            "ALL"
                        ]
                    },
                    "customRankingUrls": {
                        "title": "Custom ranking URLs (optional)",
                        "type": "array",
                        "description": "Advanced: paste any getBestList.do URL (e.g. with your own filters). Scraped in addition to the categories above.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxItems": {
                        "title": "Max items per ranking",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of ranked products to return per ranking (0 = all, usually 100).",
                        "default": 0
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy settings. Default Apify datacenter proxies work fine for OliveYoung."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
