# Korea Trend Feed — Fashion, Crowdfunding & Beauty Rankings (`kdatafactory/korea-trend-feed`) Actor

One run = a snapshot of what is trending in Korea: Musinsa best-sellers, 29CM's official Top-100, an unranked W Concept catalog sample, a Zigzag keyword feed, Tumblbug/Wadiz crowdfunding and OLIVE YOUNG bestsellers. Every row states its own ranking basis.

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

## Pricing

from $6.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?

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

## Korea Trend Feed 📈

**One run = one cross-platform snapshot of what's trending in Korea right now.**
This actor pulls the live trending feeds of **seven major Korean platforms** across three
verticals — **fashion** ([Musinsa](https://www.musinsa.com), [29CM](https://www.29cm.co.kr),
[W Concept](https://www.wconcept.co.kr), [Zigzag](https://zigzag.kr)), **crowdfunding**
([Tumblbug](https://tumblbug.com), [Wadiz](https://www.wadiz.kr)) and **beauty**
([OLIVE YOUNG Global](https://global.oliveyoung.com), USD) — and returns them as one
normalized JSON feed with `vertical`, `source`, `rank` and `ranking_basis` on every
record.

Instead of running (and paying for) seven scrapers and gluing seven schemas together,
you get a single scheduled-run-friendly trend feed: what Koreans are buying, backing
and putting in their carts **today**.

> **Try it free.** Apify's free plan includes $5 of monthly platform credit — roughly **833 results** from this actor (about nine full default snapshots), no credit card required. Set your input, click Start, and export JSON/CSV/Excel.

***

### 🚀 What it does

Pick your **verticals** and how many top items to take per source (`topN`, default 25):

| Vertical | Sources | What you get |
|----------|---------|--------------|
| `fashion` | Musinsa, 29CM, W Concept, Zigzag | Top-ranked products with brand and current KRW price (Zigzag is a keyword search — see below) |
| `crowdfunding` | Tumblbug, Wadiz | Most-popular **ongoing** campaigns with maker/brand and KRW amount raised |
| `beauty` | OLIVE YOUNG Global | Best-seller ranking with brand and USD price |

A full default run returns **~175 records** (7 sources × top 25) in one normalized
schema — every record carries its `vertical`, `source` platform, 1-based `rank`, and a
`ranking_basis` string naming the exact on-site list that `rank` is a position in.

**Partial-failure tolerant:** if one platform is down or blocks a request, the run
logs a warning, records it in the `SOURCE_FAILURES` key-value record, and continues
with the remaining sources — you still get the rest of the snapshot.

***

### 📥 Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `verticals` | array | all three | Any of `fashion`, `crowdfunding`, `beauty`. |
| `topN` | integer | `25` | Top items per source platform (1–50). |
| `zigzagKeyword` | string | `원피스` | Search keyword for the Zigzag source only (Zigzag has no public overall ranking). |
| `proxyConfiguration` | object | off | Optional Apify proxy. Not required — enable for IP diversity on frequent schedules. |

**Input example — full daily snapshot:**

```json
{
  "verticals": ["fashion", "crowdfunding", "beauty"],
  "topN": 25
}
```

***

### 📤 Output

Every record has the same shape (real samples from a live run):

```json
{
  "source": "29cm",
  "vertical": "fashion",
  "rank": 1,
  "ranking_basis": "29CM 여성의류 (Women's Clothing) daily BEST ranking",
  "name": "PWC EVERYDAY BALLOON JOGGER PANTS_18COLOR",
  "brand": "파르티멘토 우먼",
  "price_krw": 34070,
  "price_usd": null,
  "amount_raised_krw": null,
  "currency": "KRW",
  "url": "https://www.29cm.co.kr/products/3334217",
  "image_url": "https://img.29cm.co.kr/item/202602/11f1065e8d9969e2a540b78b5577ef66.jpg",
  "scraped_at": "2026-08-12T10:21:07.918+09:00"
}
```

```json
{
  "source": "wadiz",
  "vertical": "crowdfunding",
  "rank": 1,
  "ranking_basis": "Wadiz most-popular ongoing reward campaigns",
  "name": "캔음료 혁신ㅣ톡ㅡ올려서 샥ㅡ돌리면 풀개방, 드래프트 탑 한국 공식 론칭!",
  "brand": "어라운드엑스",
  "price_krw": null,
  "price_usd": null,
  "amount_raised_krw": 175230000,
  "currency": "KRW",
  "url": "https://www.wadiz.kr/web/campaign/detail/402615",
  "image_url": "https://cdn3.wadiz.kr/studio/images/2026/05/22/73c3b585-2590-4a7c-aa94-3df4146b34ba.jpeg",
  "scraped_at": "2026-07-10T15:19:33.652+09:00"
}
```

**Field notes**

- `vertical` — `fashion`, `crowdfunding` or `beauty`.
- `source` — the origin platform: `musinsa`, `29cm`, `wconcept`, `zigzag`, `tumblbug`, `wadiz`, `oliveyoung`.
- `rank` — 1-based position within the list named by `ranking_basis`, at scrape time.
- `ranking_basis` — **the exact on-site list `rank` counts within**, e.g.
  `29CM 여성의류 (Women's Clothing) daily BEST ranking`. Read this before comparing ranks
  across sources: six sources are genuine platform rankings, and the Zigzag one is a
  keyword search in relevance order (`Zigzag search results for "원피스" …`), because
  Zigzag publishes no overall ranking.
- `price_krw` / `price_usd` — the **current effective (post-discount) price the listing
  shows**; KRW for Musinsa/29CM/W Concept/Zigzag, USD for OLIVE YOUNG Global.
  `null` on crowdfunding records.
- `amount_raised_krw` — total pledged KRW; populated only on crowdfunding records.
- `brand` — the **public commercial brand / shop / maker / team name** (like a shop sign).
  No personal contact details, profiles, or IDs are collected.
- `currency` — the currency of the populated money field (`KRW` or `USD`).
- Fields that don't apply to a vertical are present but `null`, so the schema is
  stable for CSV/Excel export and downstream pipelines.
- A 35-record real sample lives in [`samples/sample-output.json`](samples/sample-output.json).

***

### 💡 Use cases

- **Daily Korea trend brief** — schedule one run per day and diff snapshots to see
  movers across fashion, crowdfunding and beauty at once.
- **Pre-retail trend spotting** — crowdfunding is where Korean products launch *before*
  they hit retail; see the funding leaders next to what's already ranking on Musinsa
  and OLIVE YOUNG.
- **K-culture market research** — one normalized feed instead of seven schemas for
  reports, dashboards and newsletters.
- **AI agents & LLM pipelines** — a compact, stable-schema "what's trending in Korea"
  context document for RAG or a trend-analysis assistant.
- **Sourcing / dropshipping radar** — top-ranked items with brand, price, image and URL,
  refreshed on your schedule.

***

### 🌐 Data source

This actor reads the **public** JSON feeds that each platform's own website uses to
render its ranking/best-seller/popular pages — no login, no private API. It is an
aggregate of the same verified endpoints behind this maintainer's dedicated
per-platform scrapers, fetched **directly** in one run (it does not call other actors,
so you are never double-billed). Sources are fetched sequentially with ≥500 ms
politeness delays; a full default snapshot completes in about a minute or two. No
proxy is required; you can enable an Apify proxy for IP diversity on frequent schedules.

***

### ⚠️ Known limitations (honest notes)

- **One flagship slice per platform, not the whole catalog.** Trending means:
  Musinsa = the Tops-category popularity ranking (the platform exposes no all-category
  ranking on this API); 29CM = the Women's Clothing daily BEST ranking; W Concept = the
  site-wide daily 랭킹. Each row states its own slice in `ranking_basis`. For other
  categories or keyword-level pulls, use the dedicated per-platform actors below.
- **Zigzag is a keyword search, not a ranking.** Zigzag publishes no public overall or
  category ranking, so that source returns the platform's own relevance order for one
  keyword (default `원피스`, set `zigzagKeyword` to change it). Its `rank` is a search
  position and is **not** comparable to the other six sources' platform ranks — the
  `ranking_basis` field says so on every Zigzag row.
- **Compact trend records only.** This feed carries name / brand / price / amount
  raised / rank — it deliberately does **not** include ratings, review counts, funding
  rates or backer counts. Those live in the dedicated per-platform actors.
- **Mixed currencies by design.** Fashion is KRW throughout; beauty is USD (OLIVE YOUNG
  **Global** storefront prices). Use the `currency` field when aggregating.
- **Sponsored cards are removed** from the Wadiz feed and each source is de-duplicated,
  so `topN` real items per source is the target, not a guarantee to the exact item.
- **A failed source shrinks the snapshot.** Rarely a platform errors; the run continues
  and the failure is logged in `SOURCE_FAILURES` instead of failing your whole schedule.

***

### ⚖️ Rate & legality note

- Only **public, non-personal** data is collected — the same rankings any visitor sees
  without logging in. **No personal data** (no seller, reviewer or backer names,
  nicknames, profiles, or contact details). `brand` is a public commercial brand/shop/
  maker name, like a shop sign; Wadiz's `userId`/nickname fields are deliberately dropped.
- Requests are **rate-limited** (sequential sources and pages, ≥500 ms delay) — one
  snapshot costs each platform only one or two light JSON requests.
- 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 ranking data — the same lists any visitor sees on each site without logging in. No personal data is collected. You are responsible for how you use the data; see the rate & legality note above.

**What does it cost in practice?**
$6.00 per 1,000 results + a few cents of platform usage. Example: a full default snapshot (7 sources × top 25 ≈ 175 records) costs about $0.53 — roughly $16/month as a daily schedule. Apify's free $5 monthly credit covers ~833 results, about nine full snapshots.

**Do I need to configure proxies?**
No — the default settings work out of the box. Optionally, enable an Apify proxy for IP diversity on frequent scheduled runs.

**How fresh is the data?**
Every run hits the platforms' live ranking feeds at run time. Schedule the actor daily (or hourly) for recurring snapshots — the stable schema makes snapshots directly diffable.

**How is this different from running the seven scrapers separately?**
Same verified endpoints, one run, one normalized schema, one invoice line. The dedicated actors return richer per-platform fields (ratings, review counts, funding rates, category filters, keyword search); this feed is the cheap cross-platform pulse.

**What is NOT included?**
Ratings, review counts, funding/backer details, category or keyword filtering, and any personal data. Sponsored cards are filtered out. See Known limitations above.

***

### 🤖 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/korea-trend-feed",
      "headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }
    }
  }
}
```

Your agent can then pull a cross-platform snapshot of what's trending in Korea 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 — use
them when you need the full per-platform depth behind this feed:

- [musinsa-scraper](https://apify.com/kdatafactory/musinsa-scraper) — Korea's #1 fashion e-commerce: full rankings, categories & keyword search.
- [wadiz-scraper](https://apify.com/kdatafactory/wadiz-scraper) — Korea's largest reward crowdfunding platform, with funding rates & backer counts.
- [oliveyoung-scraper](https://apify.com/kdatafactory/oliveyoung-scraper) — OLIVE YOUNG Global K-beauty best sellers, search, ratings & review counts.

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/korea-trend-feed) helps a solo maintainer a lot. Found an issue? Open it in the Issues tab — I respond fast.*

# Actor input Schema

## `verticals` (type: `array`):

Which trend verticals to include in the snapshot. 'fashion' = Musinsa + 29CM + W Concept rankings plus a Zigzag keyword search (Zigzag publishes no overall ranking), 'crowdfunding' = Tumblbug + Wadiz most-popular ongoing campaigns, 'beauty' = OLIVE YOUNG Global best sellers (USD). Every record names the exact list its rank belongs to in the 'ranking_basis' field.

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

How many top-ranked items to take from each source platform (a full default run = 7 sources x 25 = ~175 records).

## `zigzagKeyword` (type: `string`):

Zigzag has no public overall ranking, so its slice of the fashion vertical is a keyword search in the platform's own relevance order. Change this to follow a different Zigzag category (e.g. 가디건, 티셔츠, 청바지). Only affects the 'zigzag' source.

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

Optional Apify proxy. The sources' public JSON feeds work without a proxy; enable one for IP diversity on frequent scheduled runs.

## Actor input object example

```json
{
  "verticals": [
    "fashion",
    "crowdfunding",
    "beauty"
  ],
  "topN": 25,
  "zigzagKeyword": "원피스",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

Every record collected in this run.

# 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 = {
    "verticals": [
        "fashion",
        "crowdfunding",
        "beauty"
    ],
    "topN": 25,
    "zigzagKeyword": "원피스"
};

// Run the Actor and wait for it to finish
const run = await client.actor("kdatafactory/korea-trend-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 = {
    "verticals": [
        "fashion",
        "crowdfunding",
        "beauty",
    ],
    "topN": 25,
    "zigzagKeyword": "원피스",
}

# Run the Actor and wait for it to finish
run = client.actor("kdatafactory/korea-trend-feed").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 '{
  "verticals": [
    "fashion",
    "crowdfunding",
    "beauty"
  ],
  "topN": 25,
  "zigzagKeyword": "원피스"
}' |
apify call kdatafactory/korea-trend-feed --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,kdatafactory/korea-trend-feed"
        }
    }
}
```

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/Y1qeIsIKs0ygrIrdp/builds/yNfRRI7R4SzwmIxet/openapi.json
