# W Concept Scraper — Korean Designer Fashion & USD Prices (`kdatafactory/wconcept-scraper`) Actor

Scrape W Concept, Korea's designer-fashion marketplace (3,000+ labels). Browse any category and get clean JSON: English product names, brands, USD retail & sale prices, discount rate, category, image and product URL. For fashion market research, price monitoring, dropshipping & AI agents.

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

## W Concept Designer Fashion Scraper 🧥

Scrape **designer-fashion product listings** from
[W Concept](https://www.wconcept.com) — Korea's leading curated marketplace for
3,000+ homegrown designer labels, on its **global English storefront**. Get clean,
structured product data (name, brand, **USD** retail & sale price, discount rate,
category, image, product URL) as JSON, CSV, or Excel.

Built for **global fashion buyers, dropshippers, and market researchers** who want to
track Korean designer brands — priced in USD and named in English, ready to use.

> **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

Give it a **mode** and it returns a structured product feed straight from W Concept's
own public product-listing API (the same endpoint the storefront's discovery widget
calls) — so it's fast and reliable, no brittle HTML scraping.

| Mode | What you get | Example input |
|------|--------------|---------------|
| `category` | Every product in a chosen **category**, paginated | `{ "mode": "category", "category": "wdress" }` |
| `browse` | The **whole global catalog**, paginated (all departments) | `{ "mode": "browse", "maxItems": 500 }` |

**Categories** (`category` mode):

| Code | Category | Code | Category |
|------|----------|------|----------|
| `wtop` | Women — Tops | `wbag` | Women — Bags |
| `wknit` | Women — Knitwear | `wshoes` | Women — Shoes |
| `wouter` | Women — Outerwear | `mknit` | Men — Knitwear |
| `wdress` | Women — Dresses & Jumpsuits | `mouter` | Men — Outerwear |
| `wskirt` | Women — Skirts | `mpants` | Men — Pants & Denim |
| `wpants` | Women — Pants & Denim | `mbag` | Men — Bags |
| | | `mshoes` | Men — Shoes |

***

### 📥 Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `mode` | string | `category` | `category` or `browse`. |
| `category` | string | `wdress` | Category code (see table). Used in `category` mode only. |
| `maxItems` | integer | `100` | Max products to return. The API is paginated 80 per page. |
| `proxyConfiguration` | object | RESIDENTIAL | Apify proxy. Recommended for large pulls; the actor falls back to a direct connection when absent. |

**Input example — scrape Women's dresses:**

```json
{
  "mode": "category",
  "category": "wdress",
  "maxItems": 200
}
```

***

### 📤 Output

Each product is one dataset record in this shape (real sample from a live run):

```json
{
  "source": "wconcept",
  "product_id": "720762412",
  "name": "Banding Spangle Skirt (MU2599SK905M)",
  "brand": "muemuer",
  "price_usd": 211,
  "sale_price_usd": 202,
  "currency": "USD",
  "discount_rate": 4.27,
  "rating": null,
  "review_count": null,
  "category": "women/dresses",
  "rank": 1,
  "is_sold_out": false,
  "url": "https://www.wconcept.com/product/banding-spangle-skirt-mu2599sk905m-/720762412.html",
  "image_url": "https://cdn.wconcept.com/products/7207624/12/720762412_1.jpg",
  "scraped_at": "2026-07-15T09:22:16.790+09:00"
}
```

**Field notes**

- `price_usd` / `sale_price_usd` — displayed in **USD** (the global storefront returns
  post-margin USD prices). When a product is not discounted, `sale_price_usd` is `null`
  and `discount_rate` is `0`.
- `discount_rate` — percent off, as reported by the storefront (e.g. `8.33`).
- `rank` — 1-based position within the returned list. It reflects the storefront's
  default listing order for that category/run, **not** a persistent best-seller ranking.
- `image_url` — the product's primary CDN image (derived deterministically from the
  product id; verified to resolve).
- `rating` / `review_count` — **usually `null`.** W Concept does not expose per-product
  review aggregates in this listing feed for the large majority of items, so these
  fields are emitted as `null` when absent. Do **not** rely on this actor for review
  data (see *Known limitations*).
- A full 25-record sample lives in [`samples/sample-output.json`](samples/sample-output.json).

***

### 💡 Use cases

- **Price monitoring** — track USD prices and discounts on designer SKUs across time.
- **Fashion market research** — see what Korean designer brands are listing by category.
- **Dropshipping / sourcing** — pull high-quality products with brand, image, and URL
  ready to import into Shopify/marketplace listings.
- **AI agents & LLM pipelines** — feed a clean JSON fashion catalog into RAG or a
  shopping assistant.
- **Brand & assortment analysis** — count SKUs per brand and category, monitor new drops.

***

### ⚠️ Known limitations (read before buying)

- **No keyword search.** The public listing endpoint does not honour a free-text query
  parameter (it returns the full catalog regardless of keyword), so this actor scrapes
  by **category** and **catalog browse** only — the two modes that filter reliably.
- **No review data.** `rating` and `review_count` are `null` for the vast majority of
  products; the listing feed does not carry review aggregates. This actor is **not**
  priced or sold on review data.
- `rank` is positional within the run, not a stable sales ranking.

The actor is priced only on the data that reliably populates: product identity, brand,
USD pricing, discount, category, availability, image, and URL.

***

### 🌐 Data source & proxy

This actor targets the **W Concept global English storefront** (`www.wconcept.com` with
`lang=eng&currency=USD`) — chosen deliberately because it serves **English product names
and USD prices**, which is what global fashion buyers need. Data is read from the
storefront's **public** product-listing JSON API.

> **Proxy.** For small pulls the actor runs fine on a direct connection. For large jobs,
> enable Apify **RESIDENTIAL** proxy (the default input keeps it on) to avoid CDN
> rate-limiting. If the CDN returns `HTTP 403/429/503` or a challenge page, the run
> fails with a clear "Blocked by W Concept CDN" error and a proxy recommendation.

***

### ⚖️ Rate & legality note

- Only **public, non-personal** catalog data is collected — product listings anyone can
  see without logging in. **No customer, seller, or reviewer personal data** (no
  nicknames, profiles, or IDs) is ever scraped.
- Requests are **rate-limited** (sequential pages, ≥500 ms delay) to stay light on the site.
- You are responsible for complying with W Concept's Terms of Service and applicable law
  in your jurisdiction. Use the data for research, monitoring, and analytics — not to
  replicate the storefront.

***

### ❓ FAQ

**Is it legal to scrape this data?**
This actor collects only public, non-personal catalog data — the same product listings any visitor to the W Concept global storefront sees 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?**
$2.50 per 1,000 results (launch pricing) + a few cents of platform usage. Example: a 500-result daily pull costs about $1.25/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. For large pulls, keeping the default Apify RESIDENTIAL proxy enabled is recommended to avoid CDN rate-limiting.

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

**What is NOT included?**
No keyword search (the actor filters by category or full-catalog browse only), and no review data — `rating` / `review_count` are `null` for the vast majority of products. `rank` is positional within the run, not a stable sales ranking.

***

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

Your agent can then pull W Concept designer fashion with USD prices 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) — product data from 29CM, Korea's lifestyle select shop.
- [musinsa-scraper](https://apify.com/kdatafactory/musinsa-scraper) — product listings from Musinsa, Korea's largest fashion platform.
- [zigzag-scraper](https://apify.com/kdatafactory/zigzag-scraper) — product data from Zigzag, Korea's top women's fashion app.

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/wconcept-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. 'category' = products in one W Concept category (recommended, precise filtering). 'browse' = walk the full global catalog (all departments, newest-first pagination).

## `category` (type: `string`):

The category to scrape in 'category' mode. Women: wtop, wknit, wouter, wdress, wskirt, wpants, wbag, wshoes. Men: mknit, mouter, mpants, mbag, mshoes. Ignored in 'browse' mode.

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

Maximum number of products to return. The actor paginates the storefront API in pages of 80.

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

Apify proxy settings. The storefront's product API is served through a CDN; RESIDENTIAL is recommended for large pulls but the actor falls back to a direct connection when no proxy is configured.

## Actor input object example

```json
{
  "mode": "category",
  "category": "wdress",
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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/wconcept-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/wconcept-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/wconcept-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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