# Musinsa Product Scraper (`kdatafactory/musinsa-scraper`) Actor

Scrape ranked and searched fashion products from Musinsa (musinsa.com), Korea's #1 fashion marketplace. JSON API first, HTML fallback.

- **URL**: https://apify.com/kdatafactory/musinsa-scraper.md
- **Developed by:** [Seok June Park](https://apify.com/kdatafactory) (community)
- **Categories:** E-commerce, Automation, Other
- **Stats:** 1 total users, 1 monthly users, 100.0% 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.

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

## Musinsa Product Scraper 🛍️

Scrape **ranked** and **searched** fashion products from [Musinsa](https://www.musinsa.com) — Korea's #1 online fashion marketplace — as clean, structured JSON. Get product names, brands, prices, discounts, ratings, review counts, and images in one call.

Built for **K-fashion trend research**, **dropshipping product sourcing**, and **price monitoring**. Runs out of the box with default settings — no proxy setup or configuration needed to get started.

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

***

### What it does

This actor pulls product data directly from Musinsa's public product-list JSON API (the same one that powers musinsa.com), so results are fast and complete — no fragile HTML scraping in the happy path. Two modes:

- **Ranking** — the popularity-ranked products for a Musinsa category (e.g. Tops, Outerwear, Shoes). Each item includes its `rank`.
- **Search** — every product matching a keyword (e.g. `nike`, `맨투맨`, `cardigan`).

If the JSON API is ever unavailable, the actor automatically falls back to extracting the product list from the page's embedded `__NEXT_DATA__` payload.

***

### Input

| Field | Type | Description |
|-------|------|-------------|
| `mode` | string | `"ranking"` or `"search"`. |
| `query` | string | **Search mode:** a keyword. **Ranking mode:** a Musinsa category code (see below). Defaults to `001` (Tops) in ranking mode. |
| `gender` | string | `"A"` (all), `"M"` (men), or `"F"` (women). Default `A`. |
| `maxItems` | integer | Max products to collect. Default `100`. |

#### Common category codes (ranking mode)

| Code | Category |
|------|----------|
| `001` | Tops |
| `002` | Outerwear |
| `003` | Pants |
| `100` | Bags |
| `104` | Shoes |

You can also use full 6-digit leaf codes (e.g. `001001` = short-sleeve tees) taken from the category menu on musinsa.com.

#### Input example

```json
{
  "mode": "ranking",
  "query": "001",
  "gender": "A",
  "maxItems": 100
}
```

```json
{
  "mode": "search",
  "query": "nike",
  "gender": "M",
  "maxItems": 200
}
```

***

### Output

Each product is one dataset record. Prices are in KRW (Korean won). `rating` is normalized to a 0–5 scale. `rank` and `category` are only populated in ranking mode.

```json
{
  "source": "musinsa",
  "product_id": "6543427",
  "name": "워셔블 헨리넥 크롭 반팔 쿨 니트 ( 5Color )",
  "brand": "브렌슨",
  "price_krw": 47400,
  "sale_price_krw": 37900,
  "rating": 4.9,
  "review_count": 31,
  "category": "001",
  "rank": 1,
  "url": "https://www.musinsa.com/products/6543427",
  "image_url": "https://image.msscdn.net/images/goods_img/20260526/6543427/6543427_17811581686328_500.jpg",
  "scraped_at": "2026-07-07T09:21:25+09:00"
}
```

A full 40-item sample from a real run is in [`samples/sample-output.json`](samples/sample-output.json).

| Field | Meaning |
|-------|---------|
| `source` | Always `"musinsa"`. |
| `product_id` | Musinsa goods number. |
| `name` | Product name. |
| `brand` | Brand display name. |
| `price_krw` | Original/list price (KRW). |
| `sale_price_krw` | Discounted price if on sale, else `null`. |
| `rating` | Review score, 0–5. |
| `review_count` | Number of reviews. |
| `category` | Category code (ranking mode only). |
| `rank` | Popularity rank (ranking mode only). |
| `url` | Product page URL. |
| `image_url` | Thumbnail image URL. |
| `scraped_at` | ISO-8601 timestamp (KST, UTC+9). |

***

### Use cases

- **K-fashion trend research** — track which brands, silhouettes, and price points are climbing the Musinsa popularity rankings week over week.
- **Dropshipping / product sourcing** — build a catalog of trending Korean fashion products with images, brands, and prices to source or resell.
- **Price & discount monitoring** — watch `price_krw` vs `sale_price_krw` over time to catch drops and benchmark competitor pricing.
- **AI agents & datasets** — feed structured fashion data into recommendation models, market dashboards, or LLM agents.

***

### ❓ FAQ

**Is it legal to scrape this data?**
This actor collects only public, non-personal catalog data — the same product listings any Musinsa visitor sees without logging in. No personal data is collected. You are responsible for how you use the data; see the legality note below.

**What does it cost in practice?**
$2.00 per 1,000 results (launch pricing) + a few cents of platform usage. Example: a 500-result daily pull costs about $1.00/day. Apify's free $5 monthly credit covers ~2,500 results.

**Do I need to configure proxies?**
No — the default settings work out of the box. For heavy pulls (high `maxItems` or frequent runs), enabling Apify Proxy with the `RESIDENTIAL` group is optional scaling advice that makes runs more reliable; see Troubleshooting below.

**How fresh is the data?**
Every run scrapes the live site at run time. Schedule the actor for recurring snapshots.

**What is NOT included?**
No personal data — no reviewer names, profiles, or IDs, and individual review text is not scraped. `rank` and `category` are only populated in ranking mode, and `sale_price_krw` is `null` when a product is not on sale.

***

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

Your agent can then pull Musinsa's live product rankings 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:

- [29cm-scraper](https://apify.com/kdatafactory/29cm-scraper) — curated Korean designer fashion and lifestyle products
- [wconcept-scraper](https://apify.com/kdatafactory/wconcept-scraper) — premium Korean contemporary fashion catalog data
- [zigzag-scraper](https://apify.com/kdatafactory/zigzag-scraper) — trending women's fashion from Korea's Zigzag app
- [oliveyoung-scraper](https://apify.com/kdatafactory/oliveyoung-scraper) — K-beauty bestsellers from Korea's #1 beauty retailer

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

***

### Rate limiting & legality

- The actor collects **only public, non-authenticated data**. It never logs in and never touches private endpoints.
- **No personal data** is collected — no reviewer names, profiles, or IDs. (Individual review text is not scraped by this actor.)
- Requests are rate-limited: one page at a time with a ≥ 500 ms delay between requests, to stay gentle on Musinsa's servers.
- You are responsible for using the data in line with Musinsa's terms of service and applicable law.

#### 🔧 Troubleshooting

The actor runs direct (no proxy) by default and works out of the box. That said, Musinsa may block datacenter IPs or high request volumes. If you see repeated `API HTTP 403/429` errors in the log — most likely at higher `maxItems` — enable **Apify Proxy with the `RESIDENTIAL` group**. The actor automatically uses the proxy configuration you provide (via `proxyConfiguration` in input).

***

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

# Actor input Schema

## `mode` (type: `string`):

What to scrape. 'ranking' returns the popularity-ranked products for a category. 'search' returns products matching a keyword.

## `query` (type: `string`):

For 'search' mode: a keyword (e.g. 'nike', '맨투맨'). For 'ranking' mode: a Musinsa category code (e.g. '001' Tops, '002' Outer, '003' Pants, '100' Bags, '104' Shoes). Leave blank in ranking mode to default to '001' (Tops).

## `gender` (type: `string`):

Gender filter for the product feed.

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

Maximum number of products to collect.

## Actor input object example

```json
{
  "mode": "ranking",
  "query": "001",
  "gender": "A",
  "maxItems": 100
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("kdatafactory/musinsa-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("kdatafactory/musinsa-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 '{}' |
apify call kdatafactory/musinsa-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/klpC7EBHMaTS90wUp/builds/ETBOvxyPGfbQdi0ls/openapi.json
