ZOZOTOWN - Japan Fashion Products, Variants & Reviews
Pricing
from $1.50 / 1,000 product results
ZOZOTOWN - Japan Fashion Products, Variants & Reviews
Scrape ZOZOTOWN (zozo.jp), Japan's largest fashion marketplace: name, brand, JPY price with was-price and discount, per-size and per-colour stock, materials, size charts, shipping, images and reviews with star breakdown. Search by keyword, brand, shop or category, or paste product and listing links.
Pricing
from $1.50 / 1,000 product results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
What does ZOZOTOWN Scraper do?
Scrape product data from ZOZOTOWN (zozo.jp), Japan's largest fashion marketplace, with 1,500+ shops and 8,000+ brands. Search by keyword in Japanese or English, browse a whole brand, shop or category, or paste product and listing links.
Every product comes back as one structured record: name, brand (English and Japanese), shop, JPY price with the struck-through was-price and discount percent, colour variants, per-size and per-colour stock, materials, country of origin, size chart, shipping fee, images, and customer reviews with the full star breakdown and size/fit feedback.
Run it on Apify and you get scheduling, API access, webhooks, integrations (Zapier, Make, Google Sheets), automatic proxy rotation, and run monitoring out of the box.
Features
- Two ways in. Keyword search (Japanese or English), brand, shop or category browsing, or paste links you already have.
- The site's own filters, applied by the site itself so they narrow results before they are fetched: sort, department, colour, on-sale vs full-price, new vs pre-owned, pre-order, gift-wrappable, coupon-eligible, and include-sold-out. Plus a price range applied to the results.
- Discounts, properly separated.
priceis what you pay now,originalPriceis the struck-through price,discountPercentis the site's own figure, andisOnSale/isTimeSaletell you which kind of deal it is. - Per-size and per-colour stock, not just a single in-stock flag: every size on the shelf with its availability, back-order status and colour.
- Customer reviews, with per-review rows plus the aggregate: star rating, title, review text, date, the exact colour and size the reviewer bought, their size and fit answer, and the reaction count, together with the average rating and the 1-to-5 star breakdown.
- Incremental mode and Resume, so a daily or weekly run returns only what changed instead of re-collecting and re-billing the whole catalogue.
- Export straight into your apps through MCP connectors (Notion, Linear, Airtable, Apify).
How to use it
- Pick Mode:
Searchto look products up, orURLto scrape links you paste. - In search mode, enter Keywords (
ワンピース,nike) and/or a Brand, Shop or Category. In URL mode, paste product or listing links. - Set any Filters you want. They apply in both modes.
- Turn on Fetch product details for descriptions, materials, size charts and per-size stock, and Fetch customer reviews for review rows and the rating breakdown. Each adds a per-product charge, see Pricing.
- Set Max products to cap the run and your spend.
- Run it. Results stream into the dataset as they are scraped, and export as JSON, CSV, Excel or HTML.
Minimal input:
{"mode": "search","queries": ["ワンピース"],"maxItems": 200}
Everything on, on one brand:
{"mode": "search","brandSlug": "nike","sort": "priceAsc","priceType": "sale","color": "black","gender": "men","fetchDetails": true,"fetchReviews": true,"maxReviewsPerProduct": 20,"maxItems": 500}
Input
| Field | Type | Description |
|---|---|---|
mode | enum | search or url. |
queries | string[] | Keywords, Japanese or English. Each is searched separately. |
brandSlug / shopSlug | string | Browse one brand or shop, named as in the site's own links (nike). |
categoryPath | string | Browse one category, as in the site's own category path (shoes/sneakers). |
urls | array | Product links, or brand, shop, category and search result links. |
sort | enum | popular, newest, priceAsc, priceDesc. |
gender | enum | any, men, women, kids. |
color | enum | One of the site's 14 colour families. |
priceType | enum | any, sale (discounted only), proper (full price only). |
condition | enum | any, new, used (the site's pre-owned range). |
sellType | enum | any, normal, preorder. |
includeOutOfStock | boolean | Off by default, matching the site. |
giftWrappingOnly / couponOnly | boolean | Keep only gift-wrappable / coupon-eligible products. |
minPrice / maxPrice | integer | Price range in JPY, applied to results. |
fetchDetails | boolean | Read each product's page. Adds one request per product. Default false. |
fetchReviews | boolean | Also collect reviews and the rating breakdown. Requires fetchDetails. Default false. |
maxReviewsPerProduct | integer | Cap per product. 0 for all. Default 20. |
maxItems | integer | The run's cap. Default 20. 0 for no limit. |
maxPages | integer | Leave empty for unlimited. Does not cap the run; the run stops at Max products. |
resumeFromRunId | string | Continue one interrupted run and return only the delta. |
incrementalMode | boolean | Recurring monitoring: return only what changed. Default false. |
stateKey | string | Name a monitoring campaign to keep its state stable. |
emitUnchanged / emitExpired | boolean | Also return, and bill, unchanged / disappeared products. Default false. |
proxy | object | Japanese residential connection. Keep the default. |
One cap, not two
Only Max products carries a number by default. Max pages per search is unlimited and defers to it, so there is never a question of which limit stops your run. Set Max pages only if you specifically want each search to stop after N result pages.
Output
One record per product.
{"productId": "104503785","goodsId": 104503785,"goodsCode": "105503785","name": "ナイキ スポーツウェア クラシック ウィメンズ オーバーサイズド Tシャツ / Nike Sportswear Classic Women's Oversized T-Shirt IH7605-100 White","url": "https://zozo.jp/shop/nike/goods/104503785/","brand": "NIKE","brandNameJp": "ナイキ","brandSlug": "nike","shopName": "NIKE","shopSlug": "nike","category": "Tシャツ/カットソー","categoryPath": "tops","subCategoryName": "Tシャツ/カットソー","breadcrumb": [{ "label": "ZOZOTOWN", "url": "https://zozo.jp/" },{ "label": "NIKE", "url": "https://zozo.jp/shop/nike/" },{ "label": "トップス", "url": "https://zozo.jp/shop/nike/tops/" }],"price": 3575,"originalPrice": 5500,"discountPercent": 35,"currency": "JPY","isOnSale": true,"isTimeSale": false,"saleType": "SALE","saleEndsAt": null,"isSoldOut": false,"availabilityStatus": "IN_STOCK_NORMAL","colorName": "ホワイト","colorCount": 1,"colorVariants": [],"image": "https://c.imgz.jp/785/105503785/105503785b_b_06_500.jpg","images": ["https://c.imgz.jp/785/105503785/105503785b_1_d_500.jpg"],"videos": [{ "videoId": 70025, "fileName": "105503785_a69rscf3.mp4" }],"productCode": "IH7605-100","description": "クラシックなスタイルで、柔らかくてややしっかりとした肌触りの...","material": "本体:綿 100%","madeIn": "中国","targetGenders": ["women"],"tags": ["半袖", "ミドル丈", "クルーネック(丸首)"],"condition": "brand_new","isPreOrder": false,"sizes": [{ "size": "S", "color": "ホワイト", "availability": "NORMAL", "inStock": true, "stockQuantity": 12, "isBackOrder": false },{ "size": "XS", "color": "ホワイト", "availability": "OUT_OF_STOCK", "inStock": false, "stockQuantity": 0, "isBackOrder": false }],"sizeChart": [{ "sizeId": 2126, "women": ["S"] }],"shippingFee": 330,"shippingType": "ZOZOTOWN","rewardPoints": 162,"rating": 4.79,"reviewCount": 233,"reviewSummary": {"averageRating": 4.79,"totalReviews": 233,"ratingBreakdown": {"1": { "count": 1, "percent": 0 },"4": { "count": 27, "percent": 11 },"5": { "count": 198, "percent": 87 }}},"reviews": [{"reviewId": 1830347,"rating": 5,"title": "ZOZOマットのおかげです!","body": "サイズがぴったりで、履きごごち抜群です。","postedAt": "2026-08-26T20:07:00+09:00","purchasedVariant": "グリーン系 / 24.5","sizeFitQuestion": "サイズ感","sizeFitAnswer": "ちょうどいい","reviewerProfile": "性別(女性) | 45〜49歳 | 普段履いているサイズ(24.0cm)","helpfulCount": 0}]}
Fields from productCode down (description, materials, sizes, size chart, shipping, images, video) appear when Fetch product details is on, or when you paste a product link. reviews, reviewSummary and the review-derived rating / reviewCount appear when Fetch customer reviews is on.
About reviews
Reviews are proven present and are extracted in full: a representative item returned 233 reviews with an average of 4.79 and a complete 1-to-5 star breakdown.
ZOZOTOWN reviews are anonymous. The site publishes no author name, handle or avatar, so this scraper does not emit an author field rather than filling one with a placeholder. The only person-level content the site publishes is the coarse self-reported line the reviewer chose to show (age band, gender, usual size), passed through verbatim as reviewerProfile. What the site does expose, and this scraper captures, is the star rating, title, body, date, the exact colour and size purchased, the size and fit answer, and the reaction count.
A product with no reviews returns reviews: [] with reviewCount left at the site's own value and no invented rating.
Incremental mode and Resume
- Resume from a previous run continues one interrupted crawl: paste that run's id and this run skips everything already collected, returning only the delta.
- Incremental mode is for recurring monitoring. The first run marks everything
NEW; later runs return onlyNEW,UPDATEDandREAPPEARED, withchangedFieldsnaming exactly what moved. Turn on Emit unchanged or Emit expired only if you also want those rows, which are billed like any other.
State is kept per search and filter setup, so two different searches never mix. EXPIRED rows are produced only after a run has genuinely scanned the whole tracked search: a run stopped by a cap, by a connection problem, or by Resume never marks anything expired.
New reviews arriving do not mark a product UPDATED, and a run whose detail or review fetch failed never reports the product as having lost that data.
Send results into your apps (MCP connectors)
Optionally pipe results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape — the Apify dataset is never changed, and leaving it empty skips it entirely.
Each connector receives a condensed, human-readable summary per product (its title plus the key fields as plain text); the complete record always stays in the Apify dataset.
- Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the
mcpConnectorsinput field. (If the picker is empty, you have not authorized a connector yet.) - For Notion, also set
notionParentPageUrlto the page the item pages should be created under. It is ignored by every other connector. - Use
maxNotifyListingsto cap how many products are written to each connector per run. It does not affect the dataset.
| Parameter | Type | Default | Description |
|---|---|---|---|
mcpConnectors | array | (empty) | Which authorized MCP connectors to send results to. Empty means skip. |
notionParentPageUrl | string | (empty) | Notion connector only. URL or id of the page under which item pages are created. |
maxNotifyListings | integer | 50 | Cap on products written to each connector per run. Does not affect the dataset. |
The connection is mediated by Apify's MCP proxy, so this Actor never sees your third-party credentials.
Scope: zozo.jp only
ZOZOTOWN is operated by ZOZO, Inc. (株式会社ZOZO, Chiba, Japan) at zozo.jp, and is a Japan-domestic marketplace. This scraper targets zozo.jp exclusively, and that is a deliberate, verified decision rather than an omission:
- The
zozo.comdomain is registered to the same company but is not a storefront. Its apex has no address record andwww.zozo.comis a dangling alias to a decommissioned distribution, so neither answers at all. It briefly hosted ZOZO's international made-to-measure clothing line (2018 to 2019), a separate own-label product that was never the ZOZOTOWN catalogue; that service closed in May 2019 and the domain's last live page read "This service is no longer available outside of Japan." Today only the company's own corporate and trade-facing hosts remain there. There is no product catalogue on zozo.com to reconcile with zozo.jp's, and no product id is shared. - ZOZO's specialty malls, ZOZOUSED, ZOZOVILLA, ZOZOCOSME and ZOZOSHOES, are sub-paths of zozo.jp sharing its product-id namespace, so they are already in scope here. Pre-owned items are reachable through the
condition: usedfilter. - ZOZO's other consumer properties are separate sites with separate catalogues and are out of scope for this scraper.
ZOZOTOWN itself has no English checkout and no international shipping, which is why a Japanese connection is required below.
Connection
ZOZOTOWN serves visitors in Japan only and turns other connections away before any page loads, so a Japanese residential connection is required. Keep the default proxy setting unless you have your own Japan-based pool.
Access is also granted per connection rather than per account, and not every connection is accepted. The actor establishes a working one at startup and retries with a different connection for every page it fetches, so one connection being turned away slows a run slightly instead of cutting it short.
The site answers a given connection in one of three ways: it serves the page, it turns the connection away, or it asks the connection to verify itself. The actor uses a fast, lightweight method by default and switches to a slower one only for that third case, and only for as long as the site keeps asking. Most runs never need it. This is automatic and changes neither your results nor your charges — you may just see the run take longer, and the log will say so.
If no connection can be established at all, the run fails with a clear message rather than finishing successfully with an empty dataset, so you can always tell a connection problem apart from a search that genuinely had no matches.
If you change the proxy setting away from the default, the actor says so in the log and the run will most likely come back empty.
Pricing
You pay for products successfully returned, plus only the extras you switch on.
| Event | When it fires |
|---|---|
| Actor start | Once per run. |
| Product result | Once per product returned in the dataset. |
| Detail enrichment | Once per product returned, only when Fetch product details is on. |
| Review enrichment | Once per product returned with reviews, only when Fetch customer reviews is on. Not per review. |
Both per-product extras are charged once per product actually returned, never per request. A product whose detail page or reviews could not be read is not charged for that extra, and in incremental mode a product that is suppressed because nothing changed is not charged at all.
Use Max products to cap your spend per run, or set a Max charge per run in the Apify Console.
Tips
- Japanese keywords match better than English ones for generic items (
ワンピースreturns 80,000+ dresses), while brand names likenikework fine either way. - Browse a brand or category for full-catalogue monitoring: set
brandSlugorcategoryPathand leavemaxPagesempty. - For sale tracking, set
priceType: "sale"and readoriginalPriceanddiscountPercent, then schedule it withincrementalModeon to get only the price moves. - Reviews are the slowest part. Leave
fetchReviewsoff unless you need it, and usemaxReviewsPerProductto keep deep-reviewed products bounded.
FAQ and support
Is it legal to scrape ZOZOTOWN? This scraper collects publicly available product information only, and does not collect personal information. Reviews on ZOZOTOWN are published anonymously and no author identity is available or extracted. Make sure your use of the data complies with ZOZOTOWN's Terms of Service and the laws that apply to you; this Actor and its output are intended for lawful purposes such as market research and price monitoring.
Why did my run return nothing? Almost always the connection: the site accepts Japanese connections only. Check that residential proxy is enabled. If no connection could be established at all, the run fails with a message saying so rather than reporting an empty search.
Why are some retries in the log? Not every connection is accepted, so the actor tries a different one. This is normal, is handled automatically for every page, and costs you nothing extra — you are billed for products returned, not for requests made.
Found a bug or a missing field? Open an issue on the Actor's Issues tab.