ROMWE Scraper
Pricing
from $3.00 / 1,000 results
ROMWE Scraper
Scrape ROMWE (us.romwe.com) product listings - search by keyword or fetch full product detail by URL. Prices, images, ratings, attributes. No login required.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
23 days ago
Last modified
Categories
Share
Scrape ROMWE — the global fast-fashion dropship marketplace. Search products by keyword, browse a catalog category, or fetch full product detail by URL: prices, discounts, ratings, images, and attributes. No login, no cookies, no residential proxy required.
What this actor does
- Three modes:
search(keyword search with sort + price/rating filters),byCategory(browse a curated or custom catalog category), andbyUrl(fetch specific product pages directly) - Full pricing: retail price, sale price, discount percentage, currency symbol
- Ratings: review count and average rating (when available)
- Media: main image plus full image gallery
- Attributes: color, size, pattern, and other product-specific attributes
- Empty fields are omitted — every record only contains fields that were actually extracted
Modes
Search (mode: "search")
Search ROMWE's catalog by free-text keyword (searchQuery), e.g. "phone case", "summer dress", "sneakers". Supports sorting (sortBy) and price/rating filters. Price (salePrice/retailPrice/discountPercent) is always populated straight from the listing page. When enrichWithPrice is on (default), each result is additionally enriched with a full detail-page fetch so rating/full-resolution images/attributes are populated too; turn it off for a faster, lighter-weight run that still includes price but skips the extra fetch.
By Category (mode: "byCategory")
Browse a ROMWE catalog category and page through it like a shopper would. Pick from 33 curated categories (categoryUrl, e.g. Women Clothing, Men Denim, Shoes, Jewelry & Watches) or supply any ROMWE .../<name>-c-<id>.html category URL via categoryUrls. Supports the same sortBy and price/rating filters as search.
By URL (mode: "byUrl")
Fetch one or more specific product pages directly by URL (productUrls) — useful when you already have product links and want full detail without searching.
Output fields
| Field | Description |
|---|---|
productId | Numeric ROMWE goods ID |
title | Product title |
sku | ROMWE SKU / goods_sn |
sourceUrl | Canonical product page URL (emitted as productUrl instead when mode=search/byCategory and enrichWithPrice is turned off, since no detail-page fetch happens in that fast path) |
retailPrice | List price (USD) |
salePrice | Current sale price (USD) |
discountPercent | Discount off retail price |
currencySymbol | Currency symbol (e.g. $) |
reviewCount | Number of reviews (when > 0) |
rating | Average rating 0-5 (when reviews exist) |
brand | Brand name (when set) |
rewardPoints | ROMWE loyalty points earned on purchase (mode=byUrl, or search/byCategory with enrichWithPrice) |
description | Short SEO description |
imageUrl | Primary product image |
imageUrls[] | Full image gallery |
attributes[] | {name, value} pairs (color, size, pattern, ...) |
availableColors[] | Other color variants of this product — {color, productId, productUrl, isCurrent} |
availableSizes[] | Size/fit variants this product is sold in (e.g. phone-case models, clothing sizes) — {size, inStock} (mode=byUrl, or search/byCategory with enrichWithPrice) |
sizeChart[] | Body-measurement size chart published by ROMWE for apparel — {size, measurements: {bust, waistSize, hipSize, length, ...}, part} (part only present on multi-part sets, e.g. a top+pants set with separate charts per piece; measurement keys vary by garment type). Naturally omitted for non-apparel items (mode=byUrl, or search/byCategory with enrichWithPrice) |
category | Category name (top-level ancestor) |
categoryId | Category ID (of the product's own leaf category) |
categoryPath[] | Full category breadcrumb from root to the product's own leaf category, e.g. ["Women Apparel", "Women Plus Clothing", "Plus Size Dresses"] (mode=byUrl, or search/byCategory with enrichWithPrice) |
inStock | Boolean stock status |
isOnSale | Boolean sale flag |
freeReturnEligible | Boolean — whether ROMWE marks the product as eligible for free returns (mode=byUrl, or search/byCategory with enrichWithPrice) |
recordType | Always "product" |
scrapedAt | UTC ISO timestamp |
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | search | search / byCategory / byUrl |
searchQuery | string | phone case | Free-text keyword (mode=search) |
categoryUrl | select | – | Curated category (mode=byCategory) |
categoryUrls | array | – | Custom ROMWE category URLs (mode=byCategory) |
productUrls | array | – | Full ROMWE product page URLs (mode=byUrl) |
sortBy | string | recommend | recommend / priceAsc / priceDesc / newIn (mode=search/byCategory) |
minPrice / maxPrice | number | – | Sale-price range (USD) |
minRating | number | – | Minimum average rating 0-5 (products with no reviews yet always pass) |
inStockOnly | boolean | false | Only emit products currently in stock (works with or without enrichWithPrice; always available for byUrl) |
onSaleOnly | boolean | false | Only emit products currently discounted |
freeReturnOnly | boolean | false | Only emit products eligible for free returns (requires enrichWithPrice for search/byCategory; always available for byUrl) |
enrichWithPrice | boolean | true | Fetch full product detail (rating/full-res images/attributes) for each search/byCategory result (mode=search/byCategory) |
maxItems | int | 24 | Hard cap on emitted records (1-500) |
proxyConfiguration | object | Apify Proxy (auto) | Used only after detail-page fetches hit 3+ consecutive soft-404s; leave default unless runs are consistently affected |
Example: keyword search with enrichment
{"mode": "search","searchQuery": "summer dress","sortBy": "priceAsc","minPrice": 10,"maxPrice": 40,"maxItems": 30}
Example: fast lightweight search (no detail-page fetch)
{"mode": "search","searchQuery": "sneakers","enrichWithPrice": false,"maxItems": 50}
Example: browse a curated category
{"mode": "byCategory","categoryUrl": "https://us.romwe.com/Shoes-c-2586.html","sortBy": "newIn","inStockOnly": true,"maxItems": 40}
Example: fetch specific products by URL
{"mode": "byUrl","productUrls": ["https://us.romwe.com/Some-Product-Name-p-2979580.html"]}
Use cases
- Dropship & fast-fashion resellers — track ROMWE catalog pricing and stock for sourcing decisions
- Price monitoring — watch sale/discount fluctuations on specific products or categories
- Trend research — scan "newIn" listings across categories for emerging styles
- Market research — compare attributes, ratings, and pricing across competitor fast-fashion catalogs
- Catalog aggregation — bulk-export product data for a comparison shopping site
Limitations
- Reviews/ratings are only present on records where ROMWE has published at least one review; new listings are shipped without
reviewCount/ratingrather than a0sentinel. - Regional pricing (non-US storefronts) is out of scope for v1 — all prices are USD via
us.romwe.com. freeReturnOnlycan only be determined from a per-product detail-page fetch (unlike price/stock, which the search/category listing already carries), so the actor walks a deeper candidate queue and gives up later than for price-only filters when few matches are found. If ROMWE's edge network is intermittently rejecting detail-page fetches (occasional soft-404s from datacenter IP ranges — automatically retried and, after a sustained burst, escalated to Apify Proxy), a run withfreeReturnOnly(orenrichWithPriceon) may return fewer records than really exist; re-running usually recovers full coverage.
FAQ
Do I need a proxy or login? No — every request runs directly against ROMWE's public, unauthenticated pages. Apify Proxy (datacenter, AUTO) is only engaged automatically after a burst of soft-404s on detail-page fetches, as a fallback.
How is pricing extracted? ROMWE server-renders a JSON blob (gbRawData) into every page it sends, including full pricing/rating/image data on product-detail pages. The actor parses this blob directly — no private API calls.
Why is search mode slower than byUrl? With enrichWithPrice on, each search result triggers one additional detail-page fetch to populate rating/full-resolution images/attributes (price is already included without it). Turn enrichWithPrice off for a fast title/price/image/URL-only pass.
Is this affiliated with ROMWE? No — this is a third-party actor that reads ROMWE's public storefront pages; it is not built or endorsed by ROMWE/SHEIN Group.
Why are reviewCount/rating missing on some products? ROMWE only shows those fields once a product has at least one published review; new or low-traffic listings simply omit them rather than showing a 0.
Can I get every product in a category? Yes — leave maxItems high (or raise it up to 500) and the actor pages through the category listing until it runs out of products or hits your cap.
Are prices region-specific? No — this actor scrapes us.romwe.com only, so all prices are in USD.
Why did my freeReturnOnly run return fewer results than expected? Free-return eligibility can only be read from a product's detail page, so freeReturnOnly requires enrichWithPrice (or mode=byUrl) and walks a deeper candidate queue than price-only filters. If ROMWE's edge network is intermittently rejecting detail-page fetches, re-run — coverage usually recovers.
How current is the data? Every run fetches ROMWE's live pages at request time — there is no caching, so prices/stock reflect what's on the site right now.