# Zara Scraper (`parseforge/zara-scraper`) Actor

Scrape Zara products with per-size stock, SKUs, fabric composition and prices across 22 country stores. Export to CSV, Excel, JSON or XML.

- **URL**: https://apify.com/parseforge/zara-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 zara product scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 👗 Zara Scraper

> 🚀 **Export Zara's catalogue in seconds.** Pick a category, get 34 fields per product back, including every single size with its own stock status, the retail SKU behind it, and the exact fabric composition.

Zara publishes a lot on a product page and lets you export none of it. This Actor reads Zara's own public catalogue data directly and returns each colourway as one flat row: the price, the description, the fabric breakdown, the release date, and a size-by-size stock table with the real SKU for each size. No login, no API key, no cookie to paste.

Every run returns **34 fields per product**. One category call brings back the whole category in a single request, so a 531-product listing such as Women's Dresses is enumerated in about two seconds, and 40 fully detailed products land in roughly 25 seconds. The category picker carries **1,291 live Zara categories** read from Zara itself, spanning Woman, Man, Kids, Zara Home, Beauty, Massimo Dutti and Pre-Owned, and the same run works across **22 country stores** with the local currency, local names and local assortment.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Retail and pricing analysts | Track Zara price points and discount depth per category, per country, over time. |
| Competitive intelligence teams | Benchmark assortment size, colour range and fabric mix against your own line. |
| Merchandisers and buyers | Spot which sizes are selling out first and which colourways are flagged as running out. |
| Trend researchers and forecasters | Follow release dates and new-arrival tags to date the drop of every garment. |
| Dropshippers and marketplace sellers | Pull structured product feeds with SKUs, images and composition ready to import. |

### 📋 What the Zara Scraper does

> 💡 **Why it matters:** a price on its own tells you almost nothing about how a garment is performing. What tells you is which sizes are already gone. This Actor is one of the few that returns Zara's per-size stock table, so `sizesInStock: 4` against `totalSizes: 6` says the piece is selling, and `DEMAND_RUNNING_OUT` on size 11-12 says exactly where.

- 📊 **Size-by-size stock, not one flag.** Every row carries a `sizes` array where each entry has its own `availability` (`in_stock`, `low_on_stock`, `out_of_stock`), the retail `sku`, the size `reference` and Zara's own `demand` signal. Most Zara actors give you a single availability field for the whole product.
- 🧵 **Real fabric composition.** Parsed from Zara's structured composition data, not scraped prose: `OUTER SHELL: 69% cotton, 16% modal, 15% lyocell`, with the exceptions note (`EXCLUSIVE OF ELASTIC`) kept in its own column.
- 📅 **Release dates.** `releaseDate` is Zara's own `firstVisibleDate` for the garment, so you can date a drop precisely instead of guessing from a "NEW" badge.
- 🎨 **One row per colourway.** Zara sells the same garment in several colours with different stock and different photos. Each colourway is its own row, deduplicated on Zara's colour reference, so nothing is double counted and nothing is collapsed away.
- 🗂 **1,291 categories, read live.** The picker is built from Zara's own category tree, not a hand-written list, and shows the full path (`WOMAN > COLLECTION > DRESSES`) so you know exactly what you are selecting.
- 🌍 **22 country stores.** Switch to `es/es`, `jp/ja`, `uk/en`, `kr/ko` and 18 more. Prices come back in the correct currency with the correct decimals, which matters for JPY and KRW where there are none.
- 🔻 **Discounts as data.** `oldPrice`, `discountPercentage` and `isOnSale` populate on sale items, so markdown depth is a column you can sort on rather than something to compute.
- 🔗 **Paste any Zara URL.** Category URLs and individual product URLs both work, and a URL from a non-US store is resolved against that store's own category tree.
- 📦 **One fixed schema.** Every product lands with the same 34 columns, so your spreadsheet or database mapping never breaks.

### 🎬 Full Demo (🚧 Coming soon)

A short walkthrough video is in production and will land here.

### 📊 Output

Each product colourway becomes one flat row. These are the fields:

| Field | Type | Description |
|---|---|---|
| 🖼 `imageUrl` | string | Primary product photo at 1024px. |
| 👗 `name` | string | Product name as Zara publishes it in the selected language. |
| 📦 `availability` | string | `in_stock`, `low_on_stock`, `out_of_stock` or `coming_soon`. |
| 🔗 `url` | string | Canonical Zara product URL for this colourway. |
| 🆔 `productId` | string | Zara's internal product ID for the colourway. |
| 🏷 `reference` | string | Zara's colour reference, unique per colourway. |
| 🔖 `displayReference` | string | The reference shown on the product page, such as `3777/600`. |
| 💲 `price` | number | Current price in the store's currency, decimals already applied. |
| 💱 `currency` | string | ISO currency code read from Zara, such as `USD` or `JPY`. |
| 💰 `oldPrice` | number or string | Pre-discount price, or `N/A` when the item is not reduced. |
| 🔻 `discountPercentage` | string | Markdown depth such as `40%`, or `N/A`. |
| 🛍 `isOnSale` | string | `Yes` or `No`. |
| 🎨 `colorName` | string | Colour name for this row, such as `Oyster-white`. |
| 🖌 `colorHex` | string | Hex swatch Zara uses for the colour. |
| 🚻 `section` | string | `WOMAN`, `MAN`, `KID`, `HOME` or `BEAUTY`. |
| 📚 `family` | string | Garment family in English, such as `DRESS` or `TROUSERS`. |
| 📖 `subfamily` | string | Zara's finer classification, such as `GRL DENIM TRS`. |
| 🗂 `categoryPath` | string | Full breadcrumb of the category it was found in. |
| 📝 `description` | string | Zara's own product description. |
| 🧵 `composition` | string | Fabric breakdown per part with percentages. |
| 🪡 `compositionNote` | string | Composition exceptions, or `N/A` when there are none. |
| 📅 `releaseDate` | string | ISO date the garment first went live on Zara. |
| ✨ `isNew` | string | `Yes` when Zara tags it as new. |
| 🌈 `totalColors` | number | Colourways of this garment on Zara. |
| 📏 `totalSizes` | number | Sizes Zara lists for this colourway. |
| ✅ `sizesInStock` | number | How many of those sizes you can actually buy right now. |
| ⚠️ `hasLowStock` | string | `Yes` when any size is low or flagged as running out. |
| 🎨 `availableColors` | array | Every colour name this garment comes in. |
| 📐 `sizesAvailable` | array | Just the size labels currently buyable. |
| 🏷 `tags` | array | Zara's own badges, such as `NEW` or `FEW ITEMS LEFT`. |
| 📊 `sizes` | array | Per size: label, availability, SKU, reference and demand signal. |
| 🖼 `imageUrls` | array | Full photo gallery for this colourway at 1024px. |
| 🕒 `scrapedAt` | string | ISO timestamp of the run. |
| ❌ `error` | string | `null` on success, the reason on a failed row. |

#### Sample records

A full-price dress from `WOMAN > COLLECTION > DRESSES`, all six sizes in stock:

```json
{
  "imageUrl": "https://static.zara.net/assets/public/ddee/e3ec/1da145698979/77ba8e7ef965/04772272933-p/04772272933-p.jpg?ts=1787843696948&w=1024",
  "name": "SATIN MIDI DRESS WITH FROG FASTENINGS",
  "availability": "in_stock",
  "url": "https://www.zara.com/us/en/midi-jacquard-frog-fastening-dress-p04772373.html?v1=558566649",
  "productId": "558566649",
  "reference": "C04772373933000-I2026",
  "displayReference": "4772/373",
  "price": 79.9,
  "currency": "USD",
  "oldPrice": "N/A",
  "discountPercentage": "N/A",
  "isOnSale": "No",
  "colorName": "Green",
  "colorHex": "#2ec176",
  "section": "WOMAN",
  "family": "DRESS",
  "subfamily": "T-DRESS",
  "categoryPath": "WOMAN > COLLECTION > DRESSES",
  "description": "Midi halter neck dress. Contrasting piping detail. Tonal short interior lining. Chest closure with frog fastenings and back hidden in-seam zip and tie closure.",
  "composition": "OUTER SHELL: 100% polyester",
  "compositionNote": "EXCEPT FOR TRIMMINGS",
  "releaseDate": "2026-08-30T00:00:00Z",
  "isNew": "Yes",
  "totalColors": 2,
  "totalSizes": 6,
  "sizesInStock": 6,
  "hasLowStock": "No",
  "availableColors": ["Green", "Oyster-white"],
  "sizesAvailable": ["XS", "S", "M", "L", "XL", "XXL"],
  "tags": ["NEW"],
  "sizes": [
    { "size": "XS", "availability": "in_stock", "sku": "558541997", "reference": "0477227293301-I2026", "demand": "DEMAND_REGULAR" },
    { "size": "S", "availability": "in_stock", "sku": "558541998", "reference": "0477227293302-I2026", "demand": "DEMAND_REGULAR" }
  ],
  "scrapedAt": "2026-08-31T19:22:22.303Z",
  "error": null
}
```

A reduced item where the size table is doing the talking: two sizes gone, one running out.

```json
{
  "name": "WIDE LEG JEANS WITH DRAWSTRINGS",
  "url": "https://www.zara.com/us/en/wide-leg-jeans-with-drawstrings-p03777600.html?v1=577969328",
  "reference": "C03777600400000-I2026",
  "price": 21.54,
  "currency": "USD",
  "oldPrice": 35.9,
  "discountPercentage": "40%",
  "isOnSale": "Yes",
  "colorName": "Blue",
  "section": "KID",
  "family": "TROUSERS",
  "categoryPath": "KIDS > GIRL > COLLECTION > SPECIAL PRICES",
  "composition": "OUTER SHELL: 69% cotton, 16% modal, 15% lyocell",
  "compositionNote": "EXCLUSIVE OF ELASTIC",
  "releaseDate": "2025-11-29T00:00:00Z",
  "totalSizes": 6,
  "sizesInStock": 4,
  "hasLowStock": "Yes",
  "tags": ["FEW ITEMS LEFT"],
  "sizes": [
    { "size": "6-7 years (48,0 INCHES)", "availability": "in_stock", "sku": "554921542", "demand": "DEMAND_REGULAR" },
    { "size": "8-9 years (51,6 INCHES)", "availability": "out_of_stock", "sku": "554921532", "demand": "DEMAND_REGULAR" },
    { "size": "11-12 years (58,3 INCHES)", "availability": "low_on_stock", "sku": "554921549", "demand": "DEMAND_RUNNING_OUT" },
    { "size": "13-14 years (64,6 INCHES)", "availability": "out_of_stock", "sku": "554921527", "demand": "DEMAND_REGULAR" }
  ],
  "error": null
}
```

A Japanese store row, showing that yen comes back whole rather than divided by a hundred:

```json
{
  "name": "コントラストストラップ＆スタッズ ワンピース - THE ITEM",
  "price": 29990,
  "currency": "JPY",
  "colorName": "エクリュ",
  "section": "WOMAN",
  "family": "DRESS",
  "sizesAvailable": ["XS", "S", "M", "L", "XL"],
  "error": null
}
```

### ✨ Why choose this Actor

- 🔬 **The size table is the product.** Per-size availability, SKU and demand signal is the field set that turns a Zara export into stock intelligence, and it is the field set most Zara actors leave out.
- 🧾 **No always-empty columns.** Fields Zara does not publish were dropped during research rather than shipped as permanently blank headers. Where a value can genuinely be withheld you get a labelled sentinel, never a silent `null`.
- 🌐 **22 stores, correct money.** Currency exponents are read from Zara per store, so JPY and KRW come back as whole units instead of being wrongly divided.
- 🗂 **A category picker that is actually Zara's.** 1,291 entries pulled from the live tree with full breadcrumbs, covering Zara Home, Beauty, Massimo Dutti and Pre-Owned as well as apparel.
- ⚡ **One request per category.** Zara returns an entire category in a single call, so listing 531 dresses takes about two seconds before detail fetching even begins.
- 🎯 **Filters that run before the expensive work.** Colour, price range, sale and stock filters are applied to the listing first, so you only pay the detail request for products you actually want.
- 🧯 **Honest failure.** A category that does not exist in your chosen store returns an error row telling you exactly what to do instead, rather than an empty dataset.

### 📈 How it compares to alternatives

| | This Actor | Typical Zara actors |
|---|---|---|
| Per-size stock status | ✅ Every size with its own `in_stock` / `low_on_stock` / `out_of_stock` | ⚠️ Usually one availability flag for the whole product |
| Retail SKU per size | ✅ Yes | ❌ Rarely |
| Demand signal | ✅ Zara's `DEMAND_RUNNING_OUT` flag surfaced | ❌ No |
| Fabric composition | ✅ Structured, per garment part, with percentages | ⚠️ Sometimes, as raw prose |
| Release date | ✅ Zara's own `firstVisibleDate` | ❌ No |
| Category coverage | ✅ 1,291 live categories including Zara Home, Beauty, Massimo Dutti | ⚠️ Often apparel URLs only |
| Country stores | ✅ 22, with correct currency decimals | ⚠️ Often one store |
| Row grain | ✅ One row per colourway, deduped on Zara's colour reference | ⚠️ Often one row per product, losing colour-level stock |
| Search by keyword | ❌ Not offered | ⚠️ Some offer it |

**What this Actor does not do, stated plainly.** Zara's keyword search runs through a third-party engine that is not publicly reachable, so there is no search input here: you browse by category or paste URLs. Zara's bulk product-detail endpoint is closed at its edge, so full detail costs one request per garment, about half a second; turn `fetchProductDetails` off for a much faster listing-only pass. Zara also publishes no ratings, no reviews and no numeric stock counts anywhere, so no such columns are invented. Finally, the category picker lists the US catalogue, which is the largest; smaller stores number a few categories differently, and for those you paste a category URL from that store instead.

### 🚀 How to use

1. **Create a free Apify account.** [Sign up here](https://console.apify.com/sign-up?fpr=vmoqkp) and you start with $5 of free credit, no card required.
2. **Open the Actor** and go to the Input tab.
3. **Pick a category** from the picker, or paste Zara category and product URLs into Zara URLs. URLs win when you provide both.
4. **Choose your store** if you want something other than the United States.
5. **Set Max Items.** Start small while you check the shape of the data.
6. **Add filters if you want them.** Colour words, size labels, a price range, sale only, in stock only.
7. **Click Start** and watch the log.
8. **Download the results** as CSV, Excel, JSON or XML from the Dataset tab, or pull them from the API.

A minimal input looks like this:

```json
{
  "category": "2420895",
  "store": "us/en",
  "maxItems": 100,
  "fetchProductDetails": true
}
```

### 💼 Business use cases

#### 🏷 Competitive pricing and markdown tracking

Run the same category daily and diff `price`, `oldPrice` and `discountPercentage`. Because rows are keyed on Zara's colour `reference`, a colourway is comparable across runs even when Zara reshuffles the grid. You can see the exact day a line goes on markdown and how deep the first cut is, per country store.

#### 📦 Sell-through and stock intelligence

`sizesInStock` against `totalSizes` is a sell-through proxy you can compute on day one. Watch which sizes disappear first across a category to infer size curve demand, and use `hasLowStock` and the `DEMAND_RUNNING_OUT` demand signal to catch a line selling out before the price ever moves.

#### 🧵 Assortment and material benchmarking

Aggregate `composition` across a category to see the real fibre mix behind a competitor's range, then compare it to your own. `family`, `subfamily` and `totalColors` let you measure assortment width and colour depth per garment type without opening a single product page.

#### 🛒 Product feed and catalogue building

Every row already carries the SKU per size, the full image gallery, the description and the composition, which is most of what a marketplace listing needs. Filter to in-stock items, export to CSV, and map straight into Shopify, a PIM or a dropshipping feed.

### 🔌 Automating Zara Scraper

- **Make** and **Zapier**: trigger a run on a schedule and push new rows into Sheets, Airtable or Notion.
- **Slack**: post an alert when `discountPercentage` crosses a threshold or `sizesInStock` hits zero on a product you watch.
- **Airbyte**: sync the dataset into Snowflake, BigQuery or Postgres for historical price series.
- **GitHub Actions**: call the Actor from a workflow and commit the CSV so your price history is version controlled.
- **Google Drive**: drop each run's export into a shared folder for the merchandising team.
- **Apify Scheduler**: run it every morning and let the dataset accumulate on its own.

### 🌟 Beyond business use cases

- **Research.** Fast fashion assortment turnover is hard to measure from the outside. `releaseDate` plus a daily run gives a real dataset on how quickly a global retailer cycles its range.
- **Personal.** Watch a specific garment in your size and get told when it goes on sale or when your size comes back.
- **Non-profit.** Sustainability groups can quantify synthetic versus natural fibre share across a mass-market range using the composition field, at catalogue scale.
- **Experimentation.** The image galleries and structured attributes make a clean, consistent corpus for training or evaluating product classification and visual search models.

### 🤖 Ask an AI assistant about this scraper

Paste this into ChatGPT, Claude or any assistant to have it design a workflow for you:

> I am using the ParseForge Zara Scraper on Apify. It returns one row per Zara product colourway with 34 fields, including price, oldPrice, discountPercentage, fabric composition, release date, and a sizes array where every size has its own availability, SKU and demand signal. It covers 1,291 Zara categories across 22 country stores. Help me design a daily pipeline that tracks markdown depth and size sell-through for a category I choose.

### ❓ Frequently Asked Questions

#### 🔑 Do I need a Zara account or an API key?

No. The Actor reads Zara's publicly available catalogue data. There is nothing to log into and nothing to paste.

#### 🌍 Which countries are supported?

22 country stores, including the United States, United Kingdom, Spain, France, Germany, Italy, Portugal, Netherlands, Poland, Greece, Sweden, Turkey, Russia, Mexico, Canada, Brazil, Australia, India, United Arab Emirates, Japan and South Korea. Prices come back in the local currency.

#### 🔎 Can I search Zara by keyword?

No, and that is deliberate. Zara's keyword search is served by a third-party engine that is not publicly reachable, so a search input would be unreliable. Browse by category or paste product URLs instead.

#### 📏 Why is per-size stock a big deal?

Because a single "in stock" flag hides the story. A dress with six sizes where four are gone is behaving completely differently from one where all six are available, and only the size table tells you which.

#### ⚡ How fast is it?

A category listing is one request, so 531 products are enumerated in about two seconds. With full details on, roughly 40 products land in 25 seconds. Turn `fetchProductDetails` off and a listing-only pass is far quicker.

#### 🧵 Where does the composition come from?

From Zara's own structured composition data, split by garment part, so you get `OUTER SHELL: 100% polyester` and `LINING: ...` separately rather than one blob of text. Exceptions such as `EXCEPT FOR TRIMMINGS` land in their own column.

#### 🎨 Why do I get several rows for what looks like one product?

Because Zara sells it in several colours, and each colour has its own photos, its own stock and sometimes its own price. Each colourway is one row, deduplicated on Zara's colour reference so nothing is counted twice.

#### 🛡 Do I need a proxy?

A residential proxy is on by default and is required when running on Apify, because Zara's edge blocks datacenter traffic. The exit country follows the store you selected unless you set one yourself.

#### 🚫 A category returned an error row. What happened?

The category picker lists the US catalogue, which is the largest. A few smaller stores number some categories differently. When that happens the Actor tells you in the row, and the fix is to paste a category URL copied from that country's own Zara site into Zara URLs.

#### 📉 Does it capture sale prices?

Yes. On reduced items `oldPrice`, `discountPercentage` and `isOnSale` all populate, so markdown depth is a sortable column. On full-price items those fields read `N/A` rather than being left blank.

#### 📊 Are ratings or reviews included?

No. Zara does not publish ratings or reviews on its product pages anywhere, so there is nothing to collect and no such column is invented.

#### 💾 What export formats are available?

CSV, Excel, JSON and XML from the Dataset tab, plus the Apify API and integrations for everything else.

### 🔌 Integrate with any app

The dataset is available over the Apify API the moment a run finishes, so anything that speaks HTTP can consume it. Ready-made integrations cover Make, Zapier, Airbyte, Slack, Google Drive, GitHub, Google Sheets and Amazon S3, and webhooks can push each finished run straight into your own service.

### 🔗 Recommended Actors

- 🛍 [Etsy Scraper](https://apify.com/parseforge/etsy-scraper) - handmade and vintage listings with pricing and shop data.
- 👚 [Vinted Scraper](https://apify.com/parseforge/vinted-scraper) - secondhand fashion listings across European markets.
- 💃 [Poshmark Scraper](https://apify.com/parseforge/poshmark-scraper) - resale listings with brand, size and condition.
- ♻️ [ThredUp Scraper](https://apify.com/parseforge/thredup-scraper) - secondhand apparel inventory at scale.
- 🧢 [Depop Scraper](https://apify.com/parseforge/depop-scraper) - streetwear and vintage resale listings.

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge).

**🆘 Need Help?** [Open our contact form](https://tally.so/r/BzdKgA)

> **⚠️ Disclaimer:** this is an independent tool and is not affiliated with, endorsed by or connected to Zara or Inditex. It collects only publicly available data.

# Actor input Schema

## `startUrls` (type: `array`):

Zara category URLs (for example https://www.zara.com/us/en/woman-dresses-l1066.html) or product URLs (https://www.zara.com/us/en/...-p04772373.html). Leave empty to use the Category picker below instead.

## `category` (type: `string`):

Pick a Zara category to scrape. Covers Woman, Man, Kids, Zara Home, Beauty, Massimo Dutti and Pre-Owned. Ignored when Zara URLs are provided above.

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `store` (type: `string`):

Country store and language to scrape. Drives currency, product names and which items are in the assortment.

## `fetchProductDetails` (type: `boolean`):

ON: adds description, fabric composition, per-size stock, SKUs and the release date. OFF: listing fields only, much faster.

## `colors` (type: `array`):

Keep only products whose color name contains one of these words, for example "black" also matches "Black / White". Case insensitive.

## `sizes` (type: `array`):

Keep only products offered in at least one of these sizes, for example S, M, 42. Case insensitive, exact match on the size label.

## `minPrice` (type: `integer`):

Keep only products priced at or above this amount, in the store currency.

## `maxPrice` (type: `integer`):

Keep only products priced at or below this amount, in the store currency.

## `onSaleOnly` (type: `boolean`):

Keep only products that are currently discounted.

## `inStockOnly` (type: `boolean`):

Keep only products that are currently available to buy.

## `proxyConfiguration` (type: `object`):

Residential proxy used to reach Zara. Turning this off works locally but is blocked from Apify servers.

## Actor input object example

```json
{
  "startUrls": [],
  "category": "2420895",
  "maxItems": 10,
  "store": "us/en",
  "fetchProductDetails": true,
  "colors": [],
  "sizes": [],
  "onSaleOnly": false,
  "inStockOnly": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

Formatted product table

## `fullData` (type: `string`):

Complete dataset with all 34 fields

# 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 = {
    "startUrls": [],
    "category": "2420895",
    "maxItems": 10,
    "colors": [],
    "sizes": [],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/zara-scraper").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 = {
    "startUrls": [],
    "category": "2420895",
    "maxItems": 10,
    "colors": [],
    "sizes": [],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/zara-scraper").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 '{
  "startUrls": [],
  "category": "2420895",
  "maxItems": 10,
  "colors": [],
  "sizes": [],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call parseforge/zara-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/zara-scraper"
        }
    }
}

```

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/asaCQmuFdkWD53cIK/builds/QB1yiytMWOm7gmrJ1/openapi.json
