Musinsa API & Scraper
Musinsa (무신사) is South Korea's largest fashion store: brand stores, outlet, boutique, beauty, kids and a second-hand (USED) section, all priced in won.
🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.
This API reads it as JSON. `search`, `brand` and `category` return product rows with four separately named prices (normal, sale, coupon, final), discount, review count and score, sold-out flag and brand, with Musinsa's own filters (gender, category, brand, price range, on sale, minimum discount, colour, size, exclusives, coupon, outlet or boutique, used) and ten sort orders. `product` returns one product in full: Korean and English title, style number, category path, the four prices, every size and colour variant with its own in-stock flag and price difference, the measured size chart in cm, the product facts table, rating, review count, likes, page views and purchases, delivery date and the seller's published business details. `reviews` returns 20 reviews per page with the bought size, the reviewer's height, weight and gender when shared, and the fit survey. `ranking` returns Musinsa's ranking tab: 100 products per answer with rank, prices, rising label and the sales count Musinsa prints.
What a Musinsa field actually contains
Fields that read differently from how they look. Every row was measured against live Musinsa answers on 2026-10-14.
| Field | What it holds |
|---|---|
| normal_price, sale_price, coupon_price, final_price | Four prices in won. normal_price is the struck-through price, sale_price the selling price, coupon_price the price after the product coupon any visitor can apply (null when no coupon lowers it), final_price the price Musinsa shows, after the coupon and any extra discount. One product: 72,900 / 61,000 / 51,850 / 51,850. On 16 of 16 products the search row and the product page agreed. |
| min_price, max_price, min_discount, price sorts | Musinsa applies its price range, minimum-discount filter and price sorts to final_price and final_discount_rate, not to the sale price. A row with sale price 32,900 and final price 26,370 is inside a 0 to 30,000 range. |
| review_score_pct vs rating | Listing rows carry review_score_pct on a 0 to 100 scale; product carries rating out of 5. 98 in a row is 4.9 on the product: 11 of 11 matched. Both are null when there are no reviews. |
| sales_text, sales_count_approx | The ranking card prints rounded Korean counts: 판매 4.6천개 means about 4,600 sold, 1.3만개 about 13,000. sales_count_approx is that number; the product's purchase_total had 4,631 and 13,025 for the same products. |
| options.variants[].in_stock | One row per size or colour variant with its own in-stock flag. remain_quantity stays null unless Musinsa shows a low-stock count. A sold-out variant is listed as in_stock false; a sold-out product is still returned, with is_sold_out true. |
| size_chart | Measurements in cm per size, as the brand entered them. Points the brand did not measure are null, not 0. Clothing only: shoes, bags and cosmetics have none (6 of 16 sampled products had a chart). |
| product_id | Musinsa's product number, the one in musinsa.com/products/<id>, as an integer. Every search, brand, category and ranking row carries it and product accepts it unchanged: 16 of 16 round trips matched. |
Prices are Musinsa Korea's prices in won and do not change with where the request comes from. Member prices and card-conditional '최대혜택가' prices are only shown to logged-in buyers and are not returned.
Real request and response JSON
Captured from the indexed primary action, search, on .
{
"method": "POST",
"url": "https://api.reefapi.com/musinsa/v1/search",
"headers": {
"x-api-key": "$REEF_KEY",
"content-type": "application/json"
},
"body": {
"query": "맨투맨"
}
}{
"ok": true,
"meta": {
"api": "musinsa",
"endpoint": "search",
"mode": "live",
"latency_ms": 1492.7,
"record_count": 60,
"bytes": 56893,
"cache_hit": false,
"total": 49097,
"ads_count": 0,
"pagination": {
"page": 1,
"page_size": 60,
"total_pages": 819,
"has_more": true,
"past_last_page": false
},
"price_basis": "KRW, Musinsa's displayed prices (VAT included)",
"upstream_requests": 1,
"charged_credits": 2,
"version": "0.1.0",
"request_id": "cb503bf455084407",
"queue_ms": 1.4,
"fetched_at": "2026-10-14T18:57:28.814Z"
},
"data": {
"query": "맨투맨",
"gender": "all",
"sort": "popular",
"page": 1,
"page_size": 60,
"total": 49097,
"total_pages": 819,
"has_more": true,
"results": [
{
"product_id": 7444092,
"title": "썸홀 래글런 스웨트셔츠 [블루그레이]",
"url": "https://www.musinsa.com/products/7444092",
"image": "https://image.msscdn.net/images/goods_img/20261002/7444092/7444092_17909067659051_500.jpg",
"brand": "moderment",
"brand_name": "모더먼트",
"gender": "공용",
"normal_price": 58000,
"sale_price": 40600,
"coupon_price": null,
"final_price": 40600,
"currency": "KRW",
"discount_rate": 30,
"final_discount_rate": 30,
"coupon_discount_rate": null,
"extra_discount_amount": null,
"option_price_varies": false,
"is_sold_out": false,
"review_count": 0,
"review_score_pct": null,
"is_lowest_price": false,
"plus_delivery": false,
"used_condition": null,
"is_ad": false,
"labels": []
},
{
"product_id": 6276978,
"title": "[굿펠로우] 라이트 테크그리드 하프집 풀오버 (3color)",
"url": "https://www.musinsa.com/products/6276978",
"image": "https://image.msscdn.net/images/goods_img/20260408/6276978/6276978_17901475723357_500.jpg",
"brand": "musinsastandardsp",
"brand_name": "무신사 스탠다드 스포츠",
"gender": "남성",
"normal_price": 89900,
"sale_price": 89900,
"coupon_price": null,
"final_price": 89900,
"currency": "KRW",
"discount_rate": 0,
"final_discount_rate": 0,
"coupon_discount_rate": null,
"extra_discount_amount": null,
"option_price_varies": false,
"is_sold_out": false,
"review_count": 3,
"review_score_pct": 100,
"is_lowest_price": false,
"plus_delivery": false,
"used_condition": null,
"is_ad": false,
"labels": []
},
{
"product_id": 7332146,
"title": "NBNCG15213 / UNI PF 올데이 맨투맨 (M/GRAY)",
"url": "https://www.musinsa.com/products/7332146",
"image": "https://image.msscdn.net/images/goods_img/20260915/7332146/7332146_17894525844388_500.jpg",
"brand": "newbalance",
"brand_name": "뉴발란스",
"gender": "공용",
"normal_price": 89900,
"sale_price": 89900,
"coupon_price": null,
"final_price": 89900,
"currency": "KRW",
"discount_rate": 0,
"final_discount_rate": 0,
"coupon_discount_rate": null,
"extra_discount_amount": null,
"option_price_varies": false,
"is_sold_out": false,
"review_count": 1,
"review_score_pct": 100,
"is_lowest_price": false,
"plus_delivery": false,
"used_condition": null,
"is_ad": false,
"labels": []
}
],
"ads": []
}
}What the Musinsa API does
| Action | Description | Concrete use case | Key params |
|---|---|---|---|
| search | Keyword search on musinsa.com (무신사 스토어). Each row carries four named prices (normal, sale, coupon, final), the discount, review count and score, sold-out flag and brand. Filters: gender, category, brand, price range, on-sale, minimum discount, colour, size, sold-out inclusion, exclusives, coupon, outlet/boutique store, used listings; ten sort orders. Every filter was measured against the unfiltered total; filters the site silently ignores are not offered. | Pricing teams call search to get keyword search on musinsa.com (무신사 스토어). | query, category, brand, min_price, max_price, ... |
| brand | Every product of one brand on Musinsa (the brand store grid), with the same row shape, filters and sorts as `search`. | Marketplace operators call brand to get every product of one brand on Musinsa (the brand store grid), with the same row shape, filter…. | brand, category, min_price, max_price, on_sale, ... |
| category | Every product of one Musinsa category (e.g. `001005` 맨투맨/스웨트셔츠, `002` outerwear), with the same row shape, filters and sorts as `search`. | Catalog enrichment teams call category to get every product of one Musinsa category (e.g. | category, brand, min_price, max_price, on_sale, ... |
| product | One Musinsa product in full: title (Korean and English), brand, style number, season, gender, category path, images; the four prices (normal / sale / coupon / final) and discount; every size/colour variant with its own in-stock flag, price delta and expected delivery date; the measured size chart (cm per size); the product facts table (material, colour, maker, country of manufacture, care); rating out of 5, review count, like count, page views and purchases; delivery and return fee; ranking badges; the seller's published business details. | Retail analysts call product to get one Musinsa product in full. | product_id, url |
| reviews | Reviews (후기) of one Musinsa product, 20 per page: rating 1-5, text, date, the size or option the reviewer bought, their height / weight / gender when they shared it, the fit survey answers (size, colour, quality …), photos, likes and comments. | Pricing teams call reviews to get reviews (후기) of one Musinsa product, 20 per page. | product_id, url, sort, photo_only, page, ... |
| ranking | Musinsa's live sales ranking (랭킹), the list the site's ranking tab shows: rank, product, brand, price shown and normal price, discount, sold-out flag, the rising (급상승) label, the source's sales count ('판매 3.2천개' → ~3,200), how many people are viewing / buying now, review count and score. 100 products per answer (the `used` section returns 300). Choose the section, category, period, gender and age band. | Marketplace operators call ranking to get musinsa's live sales ranking (랭킹), the list the site's ranking tab shows. | section, category, period, gender, age_band |
Call search from your stack
curl -X POST https://api.reefapi.com/musinsa/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"맨투맨"}'import requests
r = requests.post(
"https://api.reefapi.com/musinsa/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "맨투맨"
},
)
print(r.json()["data"])const res = await fetch("https://api.reefapi.com/musinsa/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.REEF_KEY,
"content-type": "application/json",
},
body: JSON.stringify({
"query": "맨투맨"
}),
});
const { ok, data, meta, error } = await res.json();Ask your MCP-connected assistant: call reefapi.musinsa.search with {"query":"맨투맨"}.Who uses this API and why
- Track the Musinsa ranking daily per category, gender and age band to spot rising Korean fashion brands.
- Monitor a brand's full Musinsa catalogue with sale, coupon and final prices and the discount.
- Check size-level stock on products you sell or watch before they sell out.
- Build size and fit datasets from size charts and reviews that carry the reviewer's height, weight and bought size.
- Compare a product's sales count, likes and review score against similar items in the same category.
Questions developers ask before integrating
Do I need a Musinsa account?
No. Everything is read logged out, and you call reefapi.com from anywhere.
Can I get the 무신사 랭킹 (ranking)?
Yes. ranking takes section (overall, new, rising, offline, used, boutique, outlet, kids and nine style lists), category, period (real time, last day, last week, last month), gender and age band, and returns 100 ranked products; the used list returns 300.
Which search filters work?
Gender, category, brand, price range, on sale, minimum discount, colour, size, include sold out, exclusives, coupon, outlet or boutique, and used. Each was checked against the unfiltered count in the same run: 맨투맨 49,101 → men 35,599, women 31,046, brand musinsastandard 218, 0 to 30,000 won 7,484, 50 % off or more 6,775, black 13,475, XL 15,494, outlet 15,463, used 12,382.
Is stock per size available?
Yes, from product: every variant has its own in_stock flag. On one shirt 4 of 5 sizes were in stock and S was sold out.
What is in a review?
Rating 1 to 5, text, date, the size or option bought, photos, likes, comments, the fit survey answers (size, colour, quality) and the reviewer's height, weight and gender when they shared them. 20 per page; filter to photo reviews and sort by helpful, newest, rating or comments.
How deep can I page a search?
Musinsa stops at its own last page and never past page 1000; up to 100 rows per page. A page past the end answers NOT_FOUND instead of repeating rows.
Do you return second-hand (USED) listings?
Yes. search with used=true returns Musinsa's USED listings with their condition grade, and ranking section used returns the second-hand ranking.
Is this the same as the KREAM API?
No. KREAM is a sneaker resale market with bids and asks. Musinsa is a retail store selling new goods from brand stores, plus its own second-hand section.
What is the Musinsa API?
Musinsa API is a ReefAPI endpoint group for korea's #1 fashion store: search, brand and category listings, full products with per-size stock, reviews and the live sales ranking. It returns live JSON through POST requests under /musinsa/v1.
Is the Musinsa API free to try?
Yes. ReefAPI starts with 1,000 free credits, no card required. Musinsa calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Musinsa login or account?
No login to Musinsa is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Musinsa data?
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Musinsa API use?
Musinsa actions currently cost 2-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Musinsa from an AI assistant or MCP client?
Yes. Connect ReefAPI once through MCP and your assistant can call musinsa actions with the same key, credit pool and JSON envelope used by normal REST requests.