MUJI Scraper - Products, Prices, Stock & Reviews
Pricing
from $1.50 / 1,000 product results
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
Maintained by CommunityActor stats
1
Bookmarked
1
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
MUJI Scraper: Prices, Stock, Discounts and Reviews
MUJI Scraper turns MUJI's United States, Canada and Australia storefronts into structured product data. Every product comes back as one flat record with its identity, price and discount, per-variant stock, sizes and colours, images, the full description with materials and country of origin, and its customer rating and reviews. Search by keyword or paste product, category and search links, then export to JSON, CSV or Excel, or pull the results straight into your app through the API.
Why This Scraper?
- Three country storefronts, one actor. Search by keyword or paste links for the United States, Canada or Australia; each keeps its own country, currency, prices and stock, and links from different countries can be mixed in one run.
- A full pricing picture. Current price, was-price, discount amount and discount percentage, plus per-variant stock and backorder status.
- Deep detail on demand. Full description, breadcrumb, extra media, materials, measurements, care notes and country of origin, toggled per run so you only pay for what you use.
- Customer voice. Individual reviews with rating, title, text, author, date, verified-buyer flag, helpful votes and photos, plus the per-star breakdown, where the storefront publishes them.
- The storefront's own filters. Category, colour, size, price range and availability, matched to each storefront's own values so spelling and capitalisation are handled for you.
- Five ways to order results. Relevance, price, name, newest or best selling.
- Built for schedules. Incremental mode returns only new and changed products on recurring runs, and a refused run fails loudly instead of returning an empty dataset.
Use Cases
- Price and discount tracking: monitor was-price, discount percentage and stock across a catalogue on a recurring schedule.
- Assortment comparison: compare category, pricing and stock across the US, Canada and Australia storefronts.
- Product research and cataloguing: pull full descriptions, materials, measurements and media for a product line.
- Review analysis: collect individual customer reviews and ratings to track sentiment on top sellers.
- Competitive and catalogue monitoring: watch a category or search result for new arrivals and price changes.
Data You Get
Sample shape: values are illustrative placeholders, not from a live product.
| Field | Example |
|---|---|
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" |
category / productCategory | "Aroma Diffusers" / "Diffusers" |
tags | ["Aroma Diffuser", "Best Seller Home"] |
price / originalPrice | 42.50 / 55.00 |
discountAmount / discountPercent | 12.50 / 22.7 |
onSale | true |
inStock / variantCount / inStockVariantCount | true / 4 / 3 |
sizes / colors | ["S", "M", "L"] / ["Black", "White"] |
variants | per-variant sku, price, stock and options |
sku | "0000000000000" |
featuredImage / images | image addresses |
rating / reviewCount | 4.3 / 128 |
reviews / reviewsAvailable | individual reviews, where the storefront publishes them |
description | full product copy (when Fetch product details is on) |
materials / countryOfOrigin | "Cotton" / "Japan" (when Fetch product details is on) |
attributes | every extra storefront attribute, verbatim |
changeType / changedFields | incremental mode only |
Product records also carry the brand, breadcrumb and collections, measurements, care instructions, features and page metadata, and the shipping weight per variant.
How to Use
- Pick a mode:
search(by keyword) orurl(paste MUJI links). - Pick a country storefront (
us,caorau) and any filters: category, colour, size, price range or in-stock only. - Turn on Fetch product details and Fetch customer reviews for the deeper fields, or leave both off for a lighter, listing-only run.
- Set Max products and Max pages to control run size and cost, then click Start.
Keyword search on the Canadian storefront:
{"mode": "search","queries": ["aroma diffuser", "essential oil"],"country": "ca","maxItems": 40}
Discounted products from a category link, 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}
Run it from your code
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("abotapi/muji-scraper").call(run_input={"mode": "search", "queries": ["aroma diffuser"], "country": "us"})for product in client.dataset(run["defaultDatasetId"]).iterate_items():print(product["title"], product["price"])
JavaScript:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('abotapi/muji-scraper').call({ mode: 'search', queries: ['aroma diffuser'], country: 'us' });const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
How Max products and Max pages cap a run
maxItems is the run's only cap by default (0 for unlimited). With several keywords or links it is split evenly between them, so one busy search cannot crowd out the rest. maxPages limits result pages per keyword or link and is unlimited unless you set it, so it never caps a run below maxItems. A category or search link that already carries page=3 starts at page 3 rather than page 1.
Resume and recurring updates
Two separate features, for two separate jobs.
- Resume (
resumeFromRunId) continues one interrupted run: paste its run or dataset ID and the actor skips every product it already collected there, so nothing is collected or billed twice. - Incremental mode (
incrementalMode) is for running the same search again and again, for example on a daily schedule. The first run returns every matching product asNEW. Later runs return only what changed:UPDATED(withchangedFields),REAPPEARED,UNCHANGED(suppressed and not billed unlessemitUnchangedis on) orEXPIRED(only after a run that scanned the whole tracked search, and only withemitExpired).stateKeynames or shares the stored state; leave it empty to derive one automatically from the storefront, search and filters, so two different searches never mix.
Send results into your apps (MCP connectors)
Optionally pipe the scraped 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.
What gets written to the connector: a condensed, human-readable summary of each product, not the full record. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify, Settings, API and Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. If the picker is empty, you have not authorized a connector yet.
- For Notion, also set
notionParentPageUrlto the page where product pages should be created.
The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. maxNotifyListings caps how many products are written per connector and never affects the dataset. Leave the field empty to skip.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search | search for keywords, url for pasted links. |
queries | array | ["aroma diffuser"] | Search keywords. Search mode only. |
urls | array | sample links | Product, category or search links. URL mode only. |
country | string | us | us, ca or au. In URL mode a link's own address wins. |
category | string | empty | Keep only this catalogue category, for example T-Shirts. |
color | string | empty | Keep only products offered in this colour. |
size | string | empty | Keep only products offered in this size. |
minPrice | integer | empty | Lowest current price to keep, in the storefront's currency. |
maxPrice | integer | empty | Highest current price to keep, in the storefront's currency. |
inStockOnly | boolean | false | Drop sold-out products. |
sortBy | string | relevance | relevance, price_asc, price_desc, title_asc, newest, or best_selling. Keyword search has no best-selling order and returns relevance order instead; use a category link for it. |
fetchDetails | boolean | true | Add description, breadcrumb, extra media, materials, measurements, care and origin. A pasted product link always returns full detail. |
fetchReviews | boolean | false | Add individual customer reviews and the per-star breakdown. |
maxReviewsPerProduct | integer | 20 | Cap on reviews collected per product. |
maxItems | integer | 20 | Products returned across the run. 0 for unlimited. |
maxPages | integer | 0 | Result pages per keyword or link. 0 for unlimited. |
resumeFromRunId | string | empty | Continue one interrupted run without repeating its products. |
incrementalMode | boolean | false | Return only what changed since the last run of the same search. |
stateKey | string | empty | Name a monitoring campaign, or share state deliberately. |
emitUnchanged | boolean | false | Also return, and bill, unchanged products. |
emitExpired | boolean | false | Also return, and bill, products that have disappeared. |
proxy | object | Apify Proxy | Connection used for every request. |
mcpConnectors | array | empty | Send a summary of each product into apps you authorized under Integrations. |
notionParentPageUrl | string | empty | Notion connector only: page under which products are created. |
maxNotifyListings | integer | 50 | Cap on products written to each connector per run. |
Output Example
Sample shape: values are illustrative placeholders, not from a live product.
{"productId": "0000000000001","handle": "sample-product-handle","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","tags": ["Aroma Diffuser", "Best Seller Home"],"price": 42.50,"originalPrice": 55.00,"discountAmount": 12.50,"discountPercent": 22.7,"onSale": true,"inStock": true,"variantCount": 2,"inStockVariantCount": 1,"sizes": ["S", "L"],"colors": ["Black", "White"],"variants": [{"variantId": "0000000000002","sku": "0000000000000","title": "S / Black","price": 42.50,"originalPrice": 55.00,"available": true,"backorder": false}],"featuredImage": "https://example.com/images/00000000.jpg","images": ["https://example.com/images/00000000.jpg"],"rating": 4.3,"reviewCount": 128,"reviewsAvailable": true,"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}],"description": "Full product description appears here when Fetch product details is on.","materials": "Cotton","countryOfOrigin": "Japan","attributes": { "custom.purposes": ["Long Sleeve"] },"source": "search","sourceRef": "aroma diffuser","scrapedAt": "2026-01-01T00:00:00Z"}
Plan Requirement
Apify Proxy is used by default and the default setting works out of the box on every plan, so there is no reason to change it for MUJI. If no proxy connection is available at all, the run continues on its own address and says so in the log.
FAQ
How much does it cost?
You pay per product returned, plus one detail-enrichment charge per product for which details or reviews were collected. A pasted product link always returns full detail, so it carries that charge even with both toggles off; any other run with both off is charged per result only. The Pricing tab shows the current rates, and Max products caps the cost of any run.
Is it legal to scrape MUJI?
This actor collects only publicly available product data. You are responsible for how you use it: follow MUJI's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Product descriptions, prices and stock are generally facts, but photos and some copy may be subject to third-party rights.
Can I get only new or changed products on a schedule?
Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new and updated products, and unchanged ones are not billed. stateKey lets you name a monitoring campaign so its state stays stable across runs.
Why does a category or search link sometimes return fewer products than expected?
The run stops at Max products, or at Max pages if that is set lower. Raise either one, or set it to 0, to collect more of a large category.
Why did my run fail instead of returning an empty dataset?
If the storefront refuses every request, the run stops with a clear message so "no matching products" is never confused with "nothing could be read". Run it again in a few minutes. If only some links or pages could not be read, you still get what was found.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.
π Want more e-commerce data?
Pair this actor with these related scrapers from the same team:
| π UNIQLO Scraper Scrape UNIQLO products across 21 country storefronts in local currency. Price with pre... | π Target AU Scraper Scrape products and customer reviews from Target.com.au. Search by keyword or use... |
| π Mango Scraper Scrape Mango (shop.mango.com) fashion products: current price plus strike-through Rebajas... | π IKEA Scraper Scrape IKEA products across 50+ markets. Extract names, prices, currencies, ratings, full... |
| π Amazon Australia Product & Reviews Scraper Scrape Amazon Australia (amazon.com.au) products and customer reviews. Search by keyword... | π Etsy Scraper Scrape Etsy listings by keyword, category, or URL. Extract titles, shops, prices... |
π Browse all abotapi scrapers
π¬ Support
- π Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
- π οΈ Need another site, extra fields or a private build? Email contact@abotapi.com.
- β Enjoying it? A quick review on the actor page helps other users find it.