# K-Beauty Rankings Feed — Olive Young x Glowpick x Hwahae (`kdatafactory/kbeauty-rankings-feed`) Actor

Cross-source K-beauty ranking snapshot in one run: OLIVE YOUNG Global best sellers (USD prices), Glowpick category rankings (KRW prices) and Hwahae trending rankings — clean JSON with source, rank, name, brand, price, rating and review count. For market research, trend tracking and AI agents.

- **URL**: https://apify.com/kdatafactory/kbeauty-rankings-feed.md
- **Developed by:** [Seok June Park](https://apify.com/kdatafactory) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 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/platform/actors/running/actors-in-store#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

## K-Beauty Rankings Feed 💄

Snapshot the **top-ranked K-beauty products across three sources in one run**:
[OLIVE YOUNG Global](https://global.oliveyoung.com) **best sellers** (USD prices),
[Glowpick](https://www.glowpick.com) (글로우픽) **category rankings** (KRW prices, ratings,
review counts) and [Hwahae](https://www.hwahae.com/en) (화해) **trending rankings** (USD
prices, ratings, review counts) — as one clean, unified JSON/CSV/Excel dataset.

Instead of running three scrapers and gluing schemas together, you get one call, one
schema: `source`, `rank`, `name`, `brand`, `price_usd` / `price_krw`, `rating`,
`review_count`, `url`, `image_url`, `scraped_at`.

> **Try it free.** Apify's free plan includes $5 of monthly platform credit — roughly **2,000 results** from this actor, no credit card required. Set your input, click Start, and export JSON/CSV/Excel.

***

### 🚀 What it does

One run collects the **top N products from each requested source**:

| Source | List | Prices | Ratings & reviews |
|--------|------|--------|-------------------|
| `oliveyoung` | OLIVE YOUNG Global **best sellers** (what's actually selling to global buyers) | `price_usd` | — (not in the best-seller feed) |
| `glowpick` | Glowpick **category rankings** (consumer-review-driven ranking per beauty category) | `price_krw` | `rating` + `review_count` |
| `hwahae` | Hwahae **trending rankings** (Korea's biggest beauty-review app, English site) | `price_usd` | `rating` + `review_count` |

Cross-referencing the three answers questions a single source can't: *is this product
selling (Olive Young), loved (Glowpick/Hwahae ratings), or both?*

***

### 📥 Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `sources` | array | all three | Any subset of `["oliveyoung", "glowpick", "hwahae"]`. |
| `topN` | integer | `30` | Top-ranked products to collect from **each** source (max 100). |
| `proxyConfiguration` | object | off | Optional Apify proxy. Not required for Glowpick/Hwahae; RESIDENTIAL helps if the OLIVE YOUNG source comes back empty. |

**Input example — top 30 from all three sources:**

```json
{
  "sources": ["oliveyoung", "glowpick", "hwahae"],
  "topN": 30
}
```

***

### 📤 Output

Each ranked product is one dataset record (real samples from a live run):

```json
{
  "source": "oliveyoung",
  "product_id": "GA260741671",
  "rank": 1,
  "name": "MEDI-PEEL Red Lacto Collagen Hand Cream 50ml (UV/Moisture) (2 Options)",
  "brand": "MEDIPEEL",
  "price_usd": 14.4,
  "price_krw": null,
  "rating": null,
  "review_count": null,
  "category": "best-sellers",
  "url": "https://global.oliveyoung.com/product/detail?prdtNo=GA260741671",
  "image_url": "https://cdn-image.oliveyoung.com/prdtImg/1782/18bc40a5-0f29-4499-96ec-01d999926f5b.jpg",
  "scraped_at": "2026-07-10T15:19:13+09:00"
}
```

```json
{
  "source": "hwahae",
  "product_id": "1918760",
  "rank": 1,
  "name": "MUNG BEAN pH-BALANCED CLEANSING FOAM",
  "brand": "beplain",
  "price_usd": 9.96,
  "price_krw": null,
  "rating": 4.63,
  "review_count": 49481,
  "category": "trending",
  "url": "https://www.hwahae.com/en/products/MUNG-BEAN-pH-BALANCED-CLEANSING-FOAM/1918760",
  "image_url": "https://img.hwahae.co.kr/products/1918760/1918760_20230628115919.jpg",
  "scraped_at": "2026-07-10T15:19:15+09:00"
}
```

**Field notes**

- `source` — which platform the record came from: `oliveyoung`, `glowpick` or `hwahae`.
- `rank` — the product's rank **within its source list** (the list is named in
  `category`, e.g. OLIVE YOUNG `best-sellers`, a Glowpick category, a Hwahae ranking).
  Ranks are the platforms' own — never re-numbered across sources.
- `price_usd` — populated for `oliveyoung` (global storefront USD display price; the
  sale price when discounted) and `hwahae` (exchange-rate USD price). `null` for `glowpick`.
- `price_krw` — populated for `glowpick` where the page provides it. `null` for the
  USD sources.
- `rating` / `review_count` — populated for `glowpick` and `hwahae`. `null` for
  `oliveyoung` (see Known limitations).
- `brand` — the **public commercial brand name**, like a shop name. No personal data is
  collected.
- A 39-record real sample (13 per source) lives in
  [`samples/sample-output.json`](samples/sample-output.json).

***

### 💡 Use cases

- **K-beauty market research** — one dataset that shows what's *selling* (Olive Young
  best sellers) next to what consumers *rate highest* (Glowpick, Hwahae).
- **Trend tracking** — schedule daily/weekly runs and diff `rank` by `source` +
  `product_id` to catch risers before they peak.
- **Brand monitoring** — filter by `brand` across all three lists to see where a brand
  ranks, at what price, with what rating.
- **Sourcing / dropshipping** — cross-check a candidate product's USD retail price,
  KRW domestic price and review sentiment volume in one place.
- **AI agents & LLM pipelines** — a compact, unified JSON feed of Korea's beauty
  rankings for RAG or a market-analysis assistant.

***

### 🌐 Data source

This actor reads the same **public** data each platform's own website serves — OLIVE
YOUNG Global's best-seller JSON feed, Glowpick's server-rendered category ranking pages,
and Hwahae's server-rendered trending ranking pages. No login, no private API. It is a
**derivative** of this maintainer's single-source actors
([oliveyoung-scraper](https://apify.com/kdatafactory/oliveyoung-scraper),
[glowpick-scraper](https://apify.com/kdatafactory/glowpick-scraper),
[hwahae-scraper](https://apify.com/kdatafactory/hwahae-scraper)) — same verified client
logic, one unified schema, one bill (the sibling actors are never invoked).

**Partial-failure tolerant:** if one source is temporarily blocked or empty, the run
still returns the other sources' rankings (per-source counts are written to the run's
`SOURCE_REPORT` key-value record). It fails only when *all* sources return nothing.

***

### ⚠️ Known limitations (honest notes)

- **No ratings/review counts for `oliveyoung`.** The best-seller feed does not carry
  them, so those fields are `null` on `oliveyoung` records. Ratings come from the
  `glowpick` and `hwahae` sources (that contrast is the point of the feed). For Olive
  Young review data use the dedicated
  [oliveyoung-scraper](https://apify.com/kdatafactory/oliveyoung-scraper) (search mode).
- **`price_krw` can be `null` on some `glowpick` records** when the page omits the
  price for a product; likewise a Glowpick brand name can occasionally be missing.
- **One currency per source.** The actor reports prices exactly as each platform shows
  them (USD for the global storefronts, KRW for Glowpick) — it does not convert
  currencies.
- **OLIVE YOUNG may filter datacenter IPs.** If the `oliveyoung` source comes back
  empty (other sources unaffected), re-run with an Apify **RESIDENTIAL** proxy.
- **No ingredients / review texts.** This is a rankings feed. For ingredient and
  review-text data use [hwahae-scraper](https://apify.com/kdatafactory/hwahae-scraper).

***

### ⚖️ Rate & legality note

- Only **public, non-personal** catalog data is collected — ranking lists anyone can
  see without logging in. **No personal data** (no reviewer names, nicknames, profiles,
  or review texts). `brand` is a public commercial brand name, like a shop name.
- Requests are **rate-limited** (sequential pages, ≥500 ms delay; a full default run is
  about 5 light requests) to stay light on the sites.
- You are responsible for complying with each platform's Terms of Service and applicable
  law in your jurisdiction. Use the data for research, monitoring, and analytics — not to
  replicate the platforms.

***

### ❓ FAQ

**Is it legal to scrape this data?**
This actor collects only public, non-personal catalog data — the same ranking lists any visitor sees without logging in. No personal data is collected (no reviewer names, nicknames, or profiles). You are responsible for how you use the data; see the rate & legality note above.

**What does it cost in practice?**
$2.50 per 1,000 results (launch pricing) + a few cents of platform usage. Example: a daily all-source snapshot at `topN: 30` (~90 results) costs about $0.23/day. Apify's free $5 monthly credit covers ~2,000 results.

**Do I need to configure proxies?**
No — the default settings work out of the box. If only the `oliveyoung` source comes back empty, enable an Apify RESIDENTIAL proxy and re-run.

**How fresh is the data?**
Every run scrapes the live ranking lists at run time. Schedule the actor for recurring snapshots — rank-over-time is where the value is.

**Why do some fields come back `null`?**
Each platform exposes different fields, and the actor never fakes what a source doesn't provide: `oliveyoung` has USD prices but no ratings; `glowpick` has KRW prices, ratings and review counts; `hwahae` has USD prices, ratings and review counts. See Known limitations.

**Can I run just one source?**
Yes — set `"sources": ["glowpick"]` (or any subset). Note the dedicated single-source actors offer deeper options (search, categories, ingredients).

***

### 🤖 Use with AI agents (MCP)

Call this Actor as a tool from Claude or any MCP-compatible AI agent — no glue code. Point your MCP client at Apify's server, scoped to this Actor:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=kdatafactory/kbeauty-rankings-feed",
      "headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }
    }
  }
}
```

Your agent can then pull K-beauty rankings across Olive Young, Glowpick & Hwahae on demand — no scraping code in your app. Grab a free token from [Apify → Integrations](https://console.apify.com/settings/integrations).

### 🇰🇷 More Korean data actors

This actor is part of a suite of Korean-platform scrapers by the same maintainer:

- [oliveyoung-scraper](https://apify.com/kdatafactory/oliveyoung-scraper) — OLIVE YOUNG Global: best sellers, keyword search and category browse with review counts.
- [glowpick-scraper](https://apify.com/kdatafactory/glowpick-scraper) — Glowpick beauty rankings by category with KRW prices.
- [hwahae-scraper](https://apify.com/kdatafactory/hwahae-scraper) — Hwahae trending rankings with ingredient/review enrichment options.

Browse all: [apify.com/kdatafactory](https://apify.com/kdatafactory)

***

### 🏃 Run it

On Apify: set your input and click **Start**. Locally:

```bash
npm install
## put your input in storage/key_value_stores/default/INPUT.json
npm start
```

Results land in the default dataset (Apify) or `./storage/datasets/default` (local).

***

*If this actor saves you time, a rating on the [Store page](https://apify.com/kdatafactory/kbeauty-rankings-feed) helps a solo maintainer a lot. Found an issue? Open it in the Issues tab — I respond fast.*

# Actor input Schema

## `sources` (type: `array`):

Which K-beauty ranking sources to snapshot in this run. Default: all three. Each source contributes its own top list — OLIVE YOUNG Global best sellers (USD prices), Glowpick category rankings (KRW prices, ratings, review counts) and Hwahae trending rankings (USD prices, ratings, review counts).

## `topN` (type: `integer`):

How many top-ranked products to collect from EACH source (so 3 sources x topN 30 = up to 90 records). Maximum 100 per source.

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

Optional Apify proxy. The Glowpick and Hwahae ranking pages are readable from most IPs; OLIVE YOUNG Global occasionally WAF-filters datacenter IPs — if the oliveyoung source comes back empty, re-run with a RESIDENTIAL proxy. If a proxy tunnel fails, the actor retries the request directly.

## Actor input object example

```json
{
  "sources": [
    "oliveyoung",
    "glowpick",
    "hwahae"
  ],
  "topN": 30,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {
    "sources": [
        "oliveyoung",
        "glowpick",
        "hwahae"
    ],
    "topN": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("kdatafactory/kbeauty-rankings-feed").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 = {
    "sources": [
        "oliveyoung",
        "glowpick",
        "hwahae",
    ],
    "topN": 30,
}

# Run the Actor and wait for it to finish
run = client.actor("kdatafactory/kbeauty-rankings-feed").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 '{
  "sources": [
    "oliveyoung",
    "glowpick",
    "hwahae"
  ],
  "topN": 30
}' |
apify call kdatafactory/kbeauty-rankings-feed --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=kdatafactory/kbeauty-rankings-feed",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/dMFdyVB01ZSUdVKzZ/builds/T22zVI3igyLd9yVkY/openapi.json
