ZOZOTOWN - Japan Fashion Products, Variants & Reviews avatar

ZOZOTOWN - Japan Fashion Products, Variants & Reviews

Pricing

from $1.50 / 1,000 product results

Go to Apify Store
ZOZOTOWN - Japan Fashion Products, Variants & Reviews

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

Abot API

Maintained by Community

Actor 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. price is what you pay now, originalPrice is the struck-through price, discountPercent is the site's own figure, and isOnSale / isTimeSale tell 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

  1. Pick Mode: Search to look products up, or URL to scrape links you paste.
  2. In search mode, enter Keywords (ワンピース, nike) and/or a Brand, Shop or Category. In URL mode, paste product or listing links.
  3. Set any Filters you want. They apply in both modes.
  4. 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.
  5. Set Max products to cap the run and your spend.
  6. 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

FieldTypeDescription
modeenumsearch or url.
queriesstring[]Keywords, Japanese or English. Each is searched separately.
brandSlug / shopSlugstringBrowse one brand or shop, named as in the site's own links (nike).
categoryPathstringBrowse one category, as in the site's own category path (shoes/sneakers).
urlsarrayProduct links, or brand, shop, category and search result links.
sortenumpopular, newest, priceAsc, priceDesc.
genderenumany, men, women, kids.
colorenumOne of the site's 14 colour families.
priceTypeenumany, sale (discounted only), proper (full price only).
conditionenumany, new, used (the site's pre-owned range).
sellTypeenumany, normal, preorder.
includeOutOfStockbooleanOff by default, matching the site.
giftWrappingOnly / couponOnlybooleanKeep only gift-wrappable / coupon-eligible products.
minPrice / maxPriceintegerPrice range in JPY, applied to results.
fetchDetailsbooleanRead each product's page. Adds one request per product. Default false.
fetchReviewsbooleanAlso collect reviews and the rating breakdown. Requires fetchDetails. Default false.
maxReviewsPerProductintegerCap per product. 0 for all. Default 20.
maxItemsintegerThe run's cap. Default 20. 0 for no limit.
maxPagesintegerLeave empty for unlimited. Does not cap the run; the run stops at Max products.
resumeFromRunIdstringContinue one interrupted run and return only the delta.
incrementalModebooleanRecurring monitoring: return only what changed. Default false.
stateKeystringName a monitoring campaign to keep its state stable.
emitUnchanged / emitExpiredbooleanAlso return, and bill, unchanged / disappeared products. Default false.
proxyobjectJapanese 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 only NEW, UPDATED and REAPPEARED, with changedFields naming 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.

  1. Authorize a connector once under Apify → Settings → Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the mcpConnectors input field. (If the picker is empty, you have not authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page the item pages should be created under. It is ignored by every other connector.
  4. Use maxNotifyListings to cap how many products are written to each connector per run. It does not affect the dataset.
ParameterTypeDefaultDescription
mcpConnectorsarray(empty)Which authorized MCP connectors to send results to. Empty means skip.
notionParentPageUrlstring(empty)Notion connector only. URL or id of the page under which item pages are created.
maxNotifyListingsinteger50Cap 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.com domain is registered to the same company but is not a storefront. Its apex has no address record and www.zozo.com is 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: used filter.
  • 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.

EventWhen it fires
Actor startOnce per run.
Product resultOnce per product returned in the dataset.
Detail enrichmentOnce per product returned, only when Fetch product details is on.
Review enrichmentOnce 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 like nike work fine either way.
  • Browse a brand or category for full-catalogue monitoring: set brandSlug or categoryPath and leave maxPages empty.
  • For sale tracking, set priceType: "sale" and read originalPrice and discountPercent, then schedule it with incrementalMode on to get only the price moves.
  • Reviews are the slowest part. Leave fetchReviews off unless you need it, and use maxReviewsPerProduct to 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.