MUJI Scraper - Products, Prices, Stock & Reviews avatar

MUJI Scraper - Products, Prices, Stock & Reviews

Pricing

from $1.50 / 1,000 product results

Go to Apify Store
MUJI Scraper - Products, Prices, Stock & Reviews

MUJI Scraper - Products, Prices, Stock & Reviews

Scrape MUJI products from the United States, Canada and Australia storefronts. Search by keyword or paste product, category and search links. Returns price, was-price and discount, per-variant stock, sizes, colours, media, materials and customer reviews, plus Incremental mode for change monitoring.

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

7 days ago

Last modified

Categories

Share

MUJI Product Scraper

Pull structured product data from MUJI's international storefronts: the United States (muji.us), Canada (muji.ca) and Australia (muji.com.au). Search by keyword, or paste product, category and search links and scrape them directly. Every product comes back as one flat record with its identity, price and discount, per-variant stock, sizes and colours, images and videos, the full description with materials, measurements and country of origin, and its customer rating and reviews.

Built for catalogue monitoring, price and discount tracking, assortment comparison across countries, and product research.

What you can do

  • Search MUJI by keyword, or paste any mix of product, category and search links.
  • Pick a country storefront and get that country's own catalogue, prices, currency and stock.
  • Mix links from different MUJI countries in one run; each link keeps its own country.
  • Narrow by category, colour, size, price range and availability, using the storefront's own filter values.
  • Order by relevance, price, name, newest or best selling.
  • Capture the was-price, the discount amount and the discount percentage on sale items.
  • Collect individual customer reviews with rating, title, text, author, date, verified-buyer flag, helpful votes, review photos and the per-star breakdown.
  • Take every result page, or stop at a page or product cap you set.
  • Re-run the same search on a schedule and get only what changed, with Incremental mode.

Country coverage

StorefrontCurrencyCovered
United States (muji.us)USDyes
Canada (muji.ca)CADyes
Australia (muji.com.au)AUDyes
Japan (muji.com)JPYno, see below
Europe and United Kingdom (muji.eu)EUR, GBPno, see below

MUJI Japan and MUJI Europe are not country variants of the same storefront; they are separate platforms with a different catalogue contract, so nothing in this actor applies to them. They need their own actor rather than an option here. This is a documented limitation, not a gap that a setting can open.

Input

ParameterTypeDefaultDescription
modestringsearchsearch for keywords, url for pasted links.
queriesarray["aroma diffuser"]Search keywords. Search mode only.
urlsarraytwo examplesProduct, category or search links. URL mode only.
countrystringusus, ca or au. In URL mode a link's own address wins.
categorystringemptyKeep only this catalogue category, for example T-Shirts.
colorstringemptyKeep only products offered in this colour.
sizestringemptyKeep only products offered in this size.
minPriceintegeremptyLowest current price to keep, in the storefront's currency.
maxPriceintegeremptyHighest current price to keep, in the storefront's currency.
inStockOnlybooleanfalseDrop sold-out products.
sortBystringrelevancerelevance, price_asc, price_desc, title_asc, newest, best_selling.
fetchDetailsbooleantrueAdd description, breadcrumb, extra media, materials, measurements, care and origin.
fetchReviewsbooleanfalseAdd individual customer reviews and the per-star breakdown.
maxReviewsPerProductinteger20Cap on reviews collected per product.
maxItemsinteger20Products returned across the run. 0 for unlimited.
maxPagesinteger0Result pages per keyword or link. 0 for unlimited.
resumeFromRunIdstringemptyContinue one interrupted run without repeating its products.
incrementalModebooleanfalseReturn only what changed since the last run of the same search.
stateKeystringemptyName a monitoring campaign, or share state deliberately.
emitUnchangedbooleanfalseAlso return, and bill, unchanged products.
emitExpiredbooleanfalseAlso return, and bill, products that have disappeared.
proxyobjectApify ProxyConnection used for every request.
mcpConnectorsarrayemptySend results into your apps as well as the dataset.
notionParentPageUrlstringemptyParent page for the Notion connector.
maxNotifyListingsinteger50Cap on products written to each connector.

maxItems is the run's only cap by default. maxPages is unlimited unless you set it, so it never caps the run below maxItems.

Examples

Keyword search on the Canadian storefront:

{
"mode": "search",
"queries": ["aroma diffuser", "essential oil"],
"country": "ca",
"maxItems": 40
}

Discounted products with the was-price and discount, ordered cheapest first:

{
"mode": "url",
"urls": ["https://www.muji.us/collections/sale"],
"sortBy": "price_asc",
"maxItems": 100,
"maxPages": 0
}

Filtered search with reviews:

{
"mode": "search",
"queries": ["shirt"],
"country": "us",
"category": "T-Shirts",
"color": "Black",
"minPrice": 20,
"maxPrice": 60,
"inStockOnly": true,
"fetchDetails": true,
"fetchReviews": true,
"maxReviewsPerProduct": 25
}

Links from three countries in one run:

{
"mode": "url",
"urls": [
"https://www.muji.us/products/ultrasonic-aroma-diffuser",
"https://muji.ca/collections/sale",
"https://muji.com.au/search?q=oxford+shirt"
],
"maxItems": 60
}

A category or search link that already carries page=3 starts at page 3 rather than at page 1.

Output

One record per product. Fields marked with a dot are filled when fetchDetails is on; fields marked with a star are filled when fetchReviews is on.

FieldExample
productId"0000000000001"
handle"sample-product-handle"
title"Sample Product Name"
url"https://www.muji.us/products/sample-product-handle"
country / countryName"us" / "United States"
currency"USD"
brand"MUJI"
category"Aroma Diffusers"
productCategory"Diffusers"
breadcrumb .["Home", "Health & Beauty", "Aroma & Fragrances"]
collections .[{"handle": "aroma-fragrances", "title": "Aroma & Fragrances"}]
tags["Aroma Diffuser", "Best Seller Home"]
price / priceMax74.99 / 74.99
originalPrice89.90
discountAmount / discountPercent14.91 / 16.6
onSaletrue
inStock / availableForSaletrue
variantCount / inStockVariantCount4 / 3
sizes / colors["S", "M", "L"] / ["Black", "White"]
options[{"name": "Size", "values": ["S", "M", "L"]}]
variantssee below
sku"0000000000000"
featuredImage / images / thumbnailsimage URLs
videos .[{"url": "https://example.com/v/00000", "mimeType": null}]
requiresShipping / shippingWeight / shippingWeightUnittrue / 650.0 / "GRAMS"
rating / reviewCount4.5 / 244
ratingBreakdown *{"1": 12, "2": 5, "3": 6, "4": 24, "5": 168}
reviews *see below
reviewsAvailable *true
description . / descriptionHtml .full product copy
materials ."Cotton"
measurements . / dimensions ."Approx. dia. 8 cm x H14 cm"
careInstructions ."Machine washable"
countryOfOrigin ."Japan"
features . / scents . / productSeries .["Long Sleeve"]
attributesevery extra attribute the storefront carries, verbatim
seoTitle . / seoDescription .page metadata
createdAt / updatedAt / publishedAtISO timestamps
source / sourceRef"search" / "aroma diffuser"
scrapedAt"2026-01-01T00:00:00Z"
changeType / changedFields / firstSeenAt / lastSeenAtincremental mode only

Sample shape, values are illustrative placeholders, not from a live product.

{
"productId": "0000000000001",
"title": "Sample Product Name",
"url": "https://www.muji.us/products/sample-product-handle",
"country": "us",
"countryName": "United States",
"currency": "USD",
"brand": "MUJI",
"category": "Aroma Diffusers",
"productCategory": "Diffusers",
"breadcrumb": ["Home", "Health & Beauty", "Aroma & Fragrances"],
"price": 74.99,
"originalPrice": 89.9,
"discountAmount": 14.91,
"discountPercent": 16.6,
"onSale": true,
"inStock": true,
"variantCount": 2,
"inStockVariantCount": 1,
"sizes": ["S", "L"],
"colors": ["Black", "White"],
"variants": [
{
"variantId": "0000000000002",
"sku": "0000000000000",
"title": "S / Black",
"price": 74.99,
"originalPrice": 89.9,
"currency": "USD",
"available": true,
"backorder": false,
"requiresShipping": true,
"weight": 650.0,
"weightUnit": "GRAMS",
"options": { "Size": "S", "Colour": "Black" },
"image": null
}
],
"featuredImage": "https://example.com/images/00000000.jpg",
"images": ["https://example.com/images/00000000.jpg"],
"thumbnails": ["https://example.com/images/00000000.jpg?width=300"],
"videos": [],
"rating": 4.5,
"reviewCount": 244,
"ratingBreakdown": { "1": 12, "2": 5, "3": 6, "4": 24, "5": 168 },
"reviews": [
{
"reviewId": "000000001",
"rating": 5.0,
"title": "Sample review title",
"body": "Sample review text appears here.",
"author": "Reviewer Name",
"date": "2026-01-01T00:00:00.000Z",
"verifiedBuyer": true,
"helpfulVotes": 0,
"unhelpfulVotes": 0,
"language": "en",
"images": []
}
],
"reviewsAvailable": true,
"description": "Full product description appears here when fetchDetails is on.",
"materials": "Cotton",
"measurements": "Approx. dia. 8 cm x H14 cm",
"careInstructions": "Machine washable",
"countryOfOrigin": "Japan",
"attributes": { "custom.purposes": ["Long Sleeve"] },
"source": "search",
"sourceRef": "aroma diffuser",
"scrapedAt": "2026-01-01T00:00:00Z"
}

Reviews

The average rating and the review count come from the product record itself, so they are returned on every storefront, with or without fetchReviews.

Individual reviews and the per-star breakdown are only returned where the storefront publishes them. On the United States and Canada storefronts they are, and fetchReviews returns them. The Australian storefront publishes no individual reviews, so a product there comes back with reviews: [] and reviewsAvailable: false, keeping its rating and review count. No review rows are ever invented for a product that has none: an unreviewed product returns an empty list with rating and reviewCount left as the storefront reports them.

Resume and recurring updates

Two separate features, for two separate jobs.

Resume from a previous run continues ONE interrupted crawl. Paste that run's ID (or its dataset ID) into resumeFromRunId and the new run skips every product the old one already returned, so nothing is collected or billed twice.

Incremental mode is for running the same search again and again, for example on a daily schedule. Turn on incrementalMode and the actor remembers the previous run of that same search itself. The first run returns everything as NEW. After that it returns only what changed:

changeTypeMeaning
NEWFirst time this product has been seen for this search.
UPDATEDSomething changed. changedFields names exactly what.
REAPPEAREDBack after having disappeared.
UNCHANGEDNothing changed. Suppressed unless emitUnchanged is on.
EXPIREDNo longer found. Only with emitExpired on.

emitUnchanged and emitExpired are off by default because both return, and bill, extra rows. EXPIRED is only produced when the run fully scanned the tracked search: a run stopped by maxItems, a resumed run, or a run that could not read every page never marks anything expired.

State is kept per search: the storefront, the keywords or links and every filter go into the key, so two different searches never mix. Set stateKey to name a campaign or to deliberately share state between runs.

Billing

Charged per product returned, plus one detail-enrichment event per product for which details or reviews were collected. A run with fetchDetails and fetchReviews both off is charged per result only. Suppressed rows in incremental mode are not charged, even though their details were read to work out that nothing changed.

Connection

Apify Proxy is used by default and the default setting works on every plan, so there is no reason to change it for MUJI. If no Apify Proxy connection is available at all, the run continues on its own address and says so in the log.

Send results into your apps (MCP connectors)

Optionally pipe results into the apps you already use. Authorize a connector under Apify, Settings, API & Integrations, then select it in mcpConnectors. For Notion, also set notionParentPageUrl and each product becomes a page under it. Other connectors get a best-effort write or a digest.

Each connector receives a condensed, human-readable summary per product: a title plus the key fields flattened to plain text, with nested objects collapsed to their main value and long lists trimmed. The complete record always stays in the Apify dataset. maxNotifyListings caps how many products are written per connector and never affects the dataset.

Notes

  • A run that could not read any results ends as a failure with a connection message, never as a silent empty result. A search that genuinely matches nothing succeeds with zero rows and says so instead.
  • Colour, size and category values differ between country storefronts. The storefront's own filter values are read at run time, so capitalisation and spelling are matched for you, and a value a storefront does not offer simply returns nothing rather than everything.
  • Name and newest ordering are applied by MUJI itself on a category or search link. On a keyword search MUJI offers only relevance and price ordering, so name and newest are applied over the products the run collects, and best selling falls back to relevance and says so in the log.