UNIQLO Scraper: 21 Countries, Variants and Reviews
Pricing
from $1.20 / 1,000 product results
UNIQLO Scraper: 21 Countries, Variants and Reviews
Scrape UNIQLO products across 21 country storefronts in local currency. Price with pre discount original price, per size and colour stock, images, fabric and care, breadcrumbs, ratings and full reviews. Search by keyword, category and native filters, or paste product and category links.
Pricing
from $1.20 / 1,000 product results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
UNIQLO Product Scraper
Scrape UNIQLO clothing and accessories from 21 country storefronts, each in its own currency and with its own assortment. Every record carries the identity, price, availability, media, variant and category data the storefront shows, and can be enriched with full product detail and customer reviews.
Search by keyword, category and the storefront's own filters, or paste product, category and search links and let the actor walk them.
What you get
Identity
uniqueKey (country plus product code, unique across a multi-country run),
productId, styleCode, name, url, country, countryName, language,
department (men / women / kids / baby / unisex), genderCategory, sizeGender,
breadcrumbs, categoryPath, communicationCode, priceGroup, kind
Price
price (what the storefront charges now), originalPrice (pre discount),
discountAmount, discountPercent, isOnSale, basePrice, promoPrice,
priceMin / priceMax across variants, currency, currencySymbol, taxPolicy,
isDualPrice, promotionText
Availability
availabilityStatus (IN_STOCK / PARTIAL / OUT_OF_STOCK), variantCount,
inStockVariantCount, availableColors, availableSizes, isPurchasable,
storeStockOnly
Variants (one row per size and colour combination)
variantId, colorCode, colorName, colorGroup, colorHex, sizeCode, sizeName,
lengthCode, price, basePrice, promoPrice, currency, stockStatus,
stockStatusLabel, stockQuantity, inStock, backInStock, transitStatus,
deliveryNote, isReturnable, availableInStores, salesType, flags
Media
images, mainImage, subImages, plus a per colour imageUrl and chipUrl
Labels
flags, flagCodes, isNew, isNewColor, isComingSoon, isPreOrder, isUnisex,
isLimitedOffer, isAppMemberOffer, isRecycledMaterial, isSelectColorsSizesPrice,
isBestSeller
Detail (with fetchDetails)
description, descriptionShort, descriptionLong, composition (fabric),
careInstructions, washingInformation, designDetails, sizeInformation,
sizeChartUrl, countriesOfOrigin, productType, recycledMaterial, tags,
modelSizes
Reviews (with fetchReviews)
rating, reviewCount, ratingBreakdown (one to five star counts), fitRating, and a
reviews array with reviewId, rating, title, text, author, location,
createdAt, helpfulCount, fitFeedback, purchasedSize, purchasedColor,
reviewerGender, reviewerAgeRange, reviewerHeightRange, reviewerWeightRange,
reviewerShoeSize, isIncentivized, isSyndicated, images, tags
Incremental mode
changeType, changedFields, firstSeenAt, lastSeenAt
Countries
Prices, assortment and reviews are per country. The same product can be a different price, carry a different number of colours and sizes, and have a different review pool in each.
| United States (USD) | United Kingdom (GBP) | Canada (CAD) | Australia (AUD) |
| Germany (EUR) | France (EUR) | Spain (EUR) | Italy (EUR) |
| Netherlands (EUR) | Belgium (EUR) | Sweden (SEK) | Denmark (DKK) |
| Japan (JPY) | South Korea (KRW) | Singapore (SGD) | Malaysia (MYR) |
| Thailand (THB) | Philippines (PHP) | India (INR) | Vietnam (VND) |
| Indonesia (IDR) |
Storefronts this actor does not cover. Four UNIQLO markets are not on the same platform as the 21 above and are therefore out of scope rather than silently missing:
| Market | Why |
|---|---|
| Taiwan | Runs a separate catalogue platform that does not answer the shared endpoints. |
| Hong Kong and Macau | Run on their own domain (uniqlo.com.hk), not the uniqlo.com storefront. |
| Mainland China | Runs on its own domain (uniqlo.cn), not the uniqlo.com storefront. |
| Russia | Redirects away and serves no catalogue. |
Modes
Search mode
Pick a country, then any combination of keywords, categories and filters.
{"mode": "search","country": "uk","queries": ["linen shirt"],"categories": ["men/tops/t-shirts"],"colors": ["BLACK", "BLUE"],"sizes": ["M", "L"],"flags": ["sale"],"minPrice": 10,"maxPrice": 40,"sortBy": "price_asc","fetchDetails": true,"fetchReviews": true,"maxReviewsPerProduct": 20,"maxItems": 50}
Categories use the path exactly as it appears in a storefront link, for example
men/tops/t-shirts or women/outerwear-and-blazers/coats. The same path resolves to a
different category in each country and in each department, and the actor resolves it
against that country's own category tree. A numeric category id also works.
Giving both keywords and categories scrapes every keyword inside every category. Giving neither walks the whole storefront.
URL mode
Paste links. Product links return that one product; category and search links are walked forward through their pages.
{"mode": "url","urls": ["https://www.uniqlo.com/us/en/products/E465185-000/00","https://www.uniqlo.com/uk/en/men/tops/t-shirts","https://www.uniqlo.com/jp/ja/search?q=シャツ"],"maxItems": 100,"fetchDetails": true}
The country, language and any filters already in the link are used, so the search mode fields are ignored in URL mode. Links from different countries can be mixed in one run.
Limits
There is exactly one limit that controls a run.
- Max products is the cap, and defaults to 20. Set it to
0for no limit. - Max pages per search defaults to
0, meaning no page limit. The run stops at Max products, or when the storefront runs out of results. Set a number only to cut a search short deliberately.
Discounts and the original price
price is always what the storefront charges now. originalPrice is the pre discount
price, and is filled in when fetchDetails is on and the storefront still lists the
product at its regular price:
price 29.9, originalPrice 49.9, discountAmount 20.0, discountPercent 40.1
Some sale items are re-listed at the reduced price with no prior price published anywhere
on the storefront. Those come back with isOnSale: true and originalPrice: null rather
than a guessed figure.
Reviews
Reviews are per country: the same product has a different review pool on each storefront.
Turn on fetchReviews to get the rating breakdown, the fit score and individual reviews,
including the reviewer's purchased size and colour, which is the part most useful for fit
analysis.
A product with no reviews returns reviews: [] with reviewCount: 0; nothing is
invented. Review order can be newest, most helpful or highest rating.
Incremental mode and resume
These are two different features.
Resume (resumeFromRunId) continues ONE interrupted run. Give it a previous run id or
dataset id and this run returns only the products that run had not collected yet.
Incremental mode (incrementalMode) is for running the same search repeatedly, for
example on a daily schedule. The first run returns everything as NEW. Later runs return
only what changed:
changeType | Meaning |
|---|---|
NEW | First time this product appeared in this search. |
UPDATED | A real change, for example a price move or a size selling out. changedFields lists what moved. |
REAPPEARED | Was gone, is back. |
UNCHANGED | No change. Suppressed unless you turn on Emit unchanged. |
EXPIRED | No longer listed. Only when you turn on Emit expired. |
Ratings and review counts are deliberately not treated as changes. A popular item gains reviews continuously, and its average is recomputed from them, so counting that as a change would return, and bill for, the entire catalogue on every run. Price and per size stock are treated as real changes, because those are what a catalogue watch is for.
EXPIRED rows are only produced when a run has fully scanned the tracked search. A run
that hit Max products, hit Max pages, had a page refused, or used Resume returns no
expired rows and says so in the log, because an incomplete scan cannot tell "gone" from
"not reached yet".
State is kept per search and filter combination, so two different searches never mix. Set
stateKey to name a campaign explicitly.
Connection
The default Apify proxy is what this actor is built around, and it works on every plan. Leave the Connection section as it is unless you have a reason not to.
If a run starts being refused, try a different option in the Connection section and run again. Running with no proxy at all works for very small runs but gets limited quickly.
If every page is refused, the run fails with a clear message rather than reporting a successful empty result, so a connection problem is never mistaken for an empty search.
Send results into your apps (MCP connectors)
Optionally pipe results into the apps you already use, via Model Context Protocol
connectors. Authorize a connector once under Apify, Settings, Integrations, then select it
in Export to your apps. Set notionParentPageUrl when using Notion.
The connector receives a condensed, human readable summary per item: a title plus key fields flattened to plain text, with nested objects reduced to their main value and arrays trimmed. It is not a mirror of the dataset. The complete record always stays in the Apify dataset.
Supported: Notion, Linear, Airtable, Apify. Leave it empty to skip; the dataset output is byte identical either way.
Sample record
Trimmed for readability. The review shown is illustrative, not a real customer.
{"uniqueKey": "us:E465185-000","productId": "E465185-000","styleCode": "465185","name": "AIRism Cotton Oversized T-Shirt","url": "https://www.uniqlo.com/us/en/products/E465185-000/00","country": "us","countryName": "United States","department": "UNISEX","categoryPath": "Men > T-Shirts, Sweats & Fleece > T-Shirts > Uniqlo U","price": 24.9,"originalPrice": null,"isOnSale": false,"currency": "USD","currencySymbol": "$","rating": 4.8,"reviewCount": 4742,"ratingBreakdown": { "one": 58, "two": 28, "three": 49, "four": 290, "five": 4317 },"fitRating": 3.19,"availabilityStatus": "PARTIAL","variantCount": 128,"inStockVariantCount": 107,"availableSizes": ["XXS", "XS", "S", "M", "L", "XL", "XXL", "3XL"],"priceMin": 24.9,"priceMax": 24.9,"composition": "53% Cotton, 47% Polyester ( 30% Uses Recycled Polyester Fiber )","washingInformation": "Machine wash cold, Dry clean","sizeChartUrl": "https://www.uniqlo.com/us/en/size/465185_size.html","mainImage": "https://image.uniqlo.com/UQ/ST3/us/imagesgoods/465185/item/usgoods_00_465185_3x4.jpg","variants": [{"variantId": "07912968","colorCode": "COL00","colorName": "WHITE","sizeCode": "SMA001","sizeName": "XXS","price": 24.9,"currency": "USD","stockStatus": "IN_STOCK","stockStatusLabel": "In stock","stockQuantity": 11,"inStock": true,"isReturnable": true}],"reviews": [{"reviewId": 10000001,"rating": 5,"title": "Great everyday tee","text": "Relaxed fit and the fabric holds its shape after washing.","author": "Sample Reviewer","location": "Sample State","createdAt": "2026-07-30T00:46:17+00:00","helpfulCount": 3,"fitFeedback": 3,"purchasedSize": "M","purchasedColor": "09 BLACK"}],"changeType": "NEW","changedFields": [],"firstSeenAt": "2026-08-27T00:00:00+00:00","lastSeenAt": "2026-08-27T00:00:00+00:00"}
Input reference
| Field | Type | Default | Notes |
|---|---|---|---|
mode | select | search | search or url. |
country | select | us | One of the 21 storefronts. Search mode only. |
language | string | storefront default | Two letter code. Rarely needed. |
queries | string list | Search keywords, one per line. | |
categories | string list | Category paths such as men/tops/t-shirts, or numeric ids. | |
colors | multi select | Colour families to keep. Blue covers navy and light blue, Red covers wine, and so on. | |
sizes | multi select | Sizes to keep, adult and kids/baby bands. | |
flags | multi select | Storefront labels such as Sale or New arrival. | |
minPrice / maxPrice | integer | In the selected country's currency. | |
sortBy | select | recommended | Recommended, Best sellers, New arrivals, Price low to high, Price high to low, Highest rated. |
urls | string list | Product, category or search links. URL mode only. | |
fetchDetails | boolean | true | Detail, variants and pre discount price. Adds a per product surcharge. |
fetchReviews | boolean | false | Rating breakdown and individual reviews. Adds a per product surcharge. |
maxReviewsPerProduct | integer | 20 | Reviews returned per product. |
reviewsSort | select | newest | Newest, Most helpful, Highest rating. |
maxItems | integer | 20 | The run limit. 0 means no limit. |
maxPages | integer | 0 | No page limit by default. |
resumeFromRunId | string | Continue one interrupted run. | |
incrementalMode | boolean | false | Only return what changed since the last run. |
stateKey | string | Name an incremental campaign. | |
emitUnchanged | boolean | false | Also return, and bill, unchanged products. |
emitExpired | boolean | false | Also return, and bill, delisted products. |
proxy | proxy | Apify proxy | The default works on every plan. |
mcpConnectors | multi select | Optional export into Notion, Linear, Airtable or Apify. | |
notionParentPageUrl | string | Notion parent page for the export. | |
maxNotifyListings | integer | 50 | Cap on items sent to each connector. |
Billing
You are charged for:
- Starting a run.
- Each product record returned.
- Each product record returned that carries detail or review data. Turning both
fetchDetailsandfetchReviewsoff means this does not apply at all.
A product whose extra data could not be fetched, or that incremental mode suppressed, is never charged for the extra data.