# Fashion Product Scraper  5 Retailers🇺🇸 (`jordan-byte/fashion-multi-scraper-us`) Actor

Scrape fashion products from Zara, H\&M, ASOS, Uniqlo, and Mango in one run. Collect product names, prices, sale prices, colors, sizes, ratings, images, and product URLs in one normalized dataset for price comparison, competitor research, and fashion market analysis.

- **URL**: https://apify.com/jordan-byte/fashion-multi-scraper-us.md
- **Developed by:** [Jordan Byte](https://apify.com/jordan-byte) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

**Scrape Zara, H\&M, ASOS, Uniqlo, and Mango in one run** - no coding, no juggling five separate tools. Get product name, price, sale status, color, size, rating (where available), and photos from all five US fashion retailers, side by side in one consistent format.

### What does Fashion Multi-Site Product Scraper (US) do?

This Actor collects fashion product listings from five major US retailers - [Zara](https://www.zara.com), [H\&M](https://www2.hm.com), [ASOS](https://www.asos.com), [Uniqlo](https://www.uniqlo.com), and [Mango](https://shop.mango.com) - in a single run. Point it at a category page for each site you want (sensible defaults are provided), and it returns every product it finds in one normalized format, so you can compare prices, sales, and assortment across retailers without reconciling five different data shapes yourself.

### Why use this instead of five separate scrapers?

- **One dataset, five retailers** - every product uses the same field names (`price`, `isSale`, `color`, `rating`, ...) regardless of which site it came from, so cross-retailer comparison and reporting just works.
- **Nothing is thrown away** - alongside the common fields, each product also keeps its full, site-specific details (everything that site exposes) nested under `details`, for anyone who wants to dig deeper.
- **Pick your sites** - run all five, or just the ones you care about.
- **No arbitrary limits** - set how many products you want per site; the Actor keeps going until it reaches that number or runs out of real products, it won't stop early because of a hidden page cap.

### How to use this Actor

1. Go to the **Input** tab.
2. Choose which **Sites to scrape** (all five by default).
3. Optionally customize the category URL for any site - defaults are provided for all five.
4. Set **Max items per site** - it starts at 1 so your first run is a fast, low-cost preview across all sites; raise it once you know what you want.
5. Click **Start** and wait for the run to finish.
6. Open the **Dataset** tab to preview, filter, and export your results.

### Input

| Field | Type | Description |
| --- | --- | --- |
| `sites` | Array | Which of the five sites to scrape from. |
| `maxItemsPerSite` | Integer | How many products to collect from each selected site (default: 1, no upper limit). |
| `zaraCategoryUrl` | String | A Zara category page URL, or a plain category name like `dresses`. |
| `hmCategoryUrl` | String | An H\&M category page URL. |
| `asosCategoryUrl` | String | An ASOS category page URL. |
| `uniqloCategoryUrl` | String | A Uniqlo category or subcategory page URL. |
| `mangoCategoryUrl` | String | A Mango category page URL. |

Example input:

```json
{
    "sites": ["zara", "hm", "asos", "uniqlo", "mango"],
    "maxItemsPerSite": 20
}
```

### Output

Every product, from every site, is saved in the same shape:

```json
{
    "site": "Mango",
    "name": "Suede jacket with buttons",
    "brand": null,
    "color": "Burnt Orange",
    "price": 179.99,
    "currency": "USD",
    "originalPrice": 429.99,
    "isSale": true,
    "rating": null,
    "ratingCount": null,
    "sizes": ["XS", "S", "M", "L", "XL"],
    "category": null,
    "image": "https://media.mango.com/is/image/punto/27051332-28-002",
    "galleryImages": ["https://media.mango.com/is/image/punto/27051332-28-001"],
    "url": "https://shop.mango.com/us/en/p/women/jackets/leather/suede-jacket-with-buttons/27051332/28/00",
    "details": {
        "productId": "27051332",
        "colorId": "28",
        "discountPercent": 58,
        "gender": "women",
        "subcategory": "leather"
    },
    "scrapedAt": "2026-08-14T00:00:00.000Z"
}
```

#### Data table

| Field | Description |
| --- | --- |
| `site` | Which retailer this product came from |
| `name`, `brand`, `color` | Product identification |
| `price`, `currency` | The price you'd actually pay right now |
| `originalPrice`, `isSale` | The pre-discount price and whether the item is on sale, when applicable |
| `rating`, `ratingCount` | Customer star rating and review count, where the site shows one on its listing pages (currently only Uniqlo) |
| `sizes` | Available sizes, where the site lists them on its listing pages |
| `category` | The resolved category or department, where available |
| `image`, `galleryImages` | Primary photo and the rest of this listing's photo set |
| `url` | The product's own page on the retailer's site |
| `details` | Every additional field that specific site exposes beyond the common set above - nothing extracted is left out, it's just kept out of the way for anyone who only wants the common fields |
| `scrapedAt` | ISO timestamp when the item was scraped |

Not every field applies to every site - for example, only Uniqlo shows a rating on its category pages, and only some sites show sale/discount pricing. The Actor returns `null` for anything that isn't available for a given product rather than guessing.

### Pricing / Cost estimation

How much does it cost to run this Actor? Cost scales with how many sites you select and how many products you request per site (**Max items per site**). Some sites can be collected very quickly; others take a bit longer per product. Pricing depends on your Apify plan's compute unit rate and proxy usage - start with the default (1 item per site) to get a feel for run time and cost before scaling up.

### Tips for better runs

- Start with the default **Max items per site** of 1 to confirm your category URLs resolve correctly, then raise it.
- Copy category URLs directly from your browser's address bar for the most reliable results.
- If one site is temporarily unavailable, the Actor logs a warning and continues with the rest - a run isn't all-or-nothing.
- Use the Apify **Schedule** feature to re-run this Actor periodically and track price or sale changes across all five retailers over time.

### FAQ

**Is this legal?** This Actor only collects publicly visible product data. You are responsible for using the data in accordance with each site's Terms of Service and any applicable laws in your jurisdiction.

**Why don't all products have a rating or sizes?** Different sites show different information on their category/listing pages. The Actor captures everything each site actually exposes there - it doesn't visit individual product pages, which would make runs far slower.

**Can I run just one or two sites instead of all five?** Yes - use the **Sites to scrape** input to pick exactly the ones you want.

**Found a bug or have a feature request?** Please use the Issues tab on this Actor's page - feedback directly shapes future updates.

# Actor input Schema

## `sites` (type: `array`):

Which stores to collect products from in this run.

## `maxItemsPerSite` (type: `integer`):

How many products to collect from each selected site. Kept at 10 by default for a quick, low-cost preview across all sites - raise it to collect as many products as you need, with no upper limit.

## `zaraCategoryUrl` (type: `string`):

A Zara.com (US) category page URL, or a plain category name like <code>dresses</code>.

## `hmCategoryUrl` (type: `string`):

An HM.com (US) category page URL.

## `asosCategoryUrl` (type: `string`):

An ASOS.com (US) category page URL.

## `uniqloCategoryUrl` (type: `string`):

A Uniqlo.com (US) category or subcategory page URL.

## `mangoCategoryUrl` (type: `string`):

A Mango (shop.mango.com) US category page URL.

## Actor input object example

```json
{
  "sites": [
    "zara",
    "uniqlo"
  ],
  "maxItemsPerSite": 10,
  "zaraCategoryUrl": "https://www.zara.com/us/en/woman-dresses-l1066.html",
  "hmCategoryUrl": "https://www2.hm.com/en_us/men/products/jeans.html",
  "asosCategoryUrl": "https://www.asos.com/us/women/new-in/new-in-clothing/cat/?cid=2623",
  "uniqloCategoryUrl": "https://www.uniqlo.com/us/en/women/tops",
  "mangoCategoryUrl": "https://shop.mango.com/us/en/c/women/summer-sale-70-off/93ea7423"
}
```

# Actor output Schema

## `listings` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("jordan-byte/fashion-multi-scraper-us").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("jordan-byte/fashion-multi-scraper-us").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call jordan-byte/fashion-multi-scraper-us --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jordan-byte/fashion-multi-scraper-us"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/6eMhQgQKLvUDDB5Lt/builds/QYFPuzXKVaZh8PIYu/openapi.json
