Zara Price & New-In Watch: Products by Category
Pricing
from $0.69 / 1,000 product scrapeds
Zara Price & New-In Watch: Products by Category
Zara products from 9 country stores as flat rows: name, price in currency units, price before the markdown, discount percent, colour, availability, NEW badge, photos, product URL. Read any category by id or URL; keep only sale or new-in items.
Pricing
from $0.69 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
Superslow Sloth
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Share
Read Zara category listings as flat rows: product name, price in currency units, the price before the markdown, the discount percent, colour, availability, the NEW badge, photos and the product link. Nine country stores, each in its own currency. Give it category ids or category URLs, tick Only products on sale or Only products tagged NEW, and schedule it daily: diff the runs and that is a Zara price and new-in watch.
No account, no API key, no login, no browser. One request returns a whole category (407 products for US jeans, 766 for "the new").
Input
| Field | Notes |
|---|---|
store | us/en (USD), gb/en (GBP), es/es, de/de, fr/fr, it/it (EUR), jp/ja (JPY), se/sv (SEK), pl/pl (PLN). Default us/en. |
categories | Category ids or Zara category URLs, one per line. Required. 2419242 and https://www.zara.com/us/en/woman-jeans-l1119.html?v1=2419242 are the same category (jeans). A product that two categories both list is returned once, under the first. |
onlyOnSale | Keep only products Zara marks down. |
onlyNew | Keep only products carrying Zara's NEW badge. With onlyOnSale both must hold. |
maxItems | Products to return per category (default 100, up to 5,000), in Zara's own order. |
proxyConfiguration | Apify proxy by default. |
Finding a category id. It is the v1= number in the URL of any Zara
category page, or the id of a node in the store's category list,
https://www.zara.com/us/en/categories?ajax=true. Ids are the same in every
store (jeans is 2419242 in the US, UK and Japan); the store changes the
language, prices and range. A URL without v1= (only the -l1119 part) is
resolved through the store's category list; if that fails the run says so and
asks for the id.
A category that only groups subcategories ("NEW ARRIVALS", 2642765) returns
nothing: Zara answers it with an empty list. The run log then names the
subcategories that do list products ("THE NEW", 2546081, ...) so the next run
can use them. Zara's endpoint has no sale or new filter and no paging: the
whole category is downloaded and the filters are applied here, so maxItems
limits what you are charged for, not what is downloaded.
Output
| Field | Notes |
|---|---|
category_id, store | The category the product was first met in, and the store (us/en, ...). |
product_id, model_id, reference, colour_reference | Zara lists every colour of a garment as its own product. product_id is the row's identity (the v1= of the product URL); model_id (Zara's seoProductId) is shared by the colours of one garment; reference is the garment reference (09632275-I2026), colour_reference the colour's. |
name, description | As Zara prints them, in the store's language. description is empty on most clothes (null) and a short line on fragrances. |
section, family, subfamily, brand, kind | Zara's sectionName (WOMAN, MAN, HOME), its internal familyName / subfamilyName (Spanish codes such as PANTALON), brandGroupCode (zara, zarahome) and kind (Wear, Other, Fragance, Zara's spelling), all as sent. |
colour, colour_id, available_colours | This product's colour name and Zara colour id, and the colours the garment comes in (this one included). |
url | https://www.zara.com/<store>/<keyword>-p<model_id>.html?v1=<product_id>, built from the keyword Zara sends. |
currency, price | The current price in currency units (79.9, not 7990) with its ISO code. |
previous_price | The price before the markdown. Null on every product that is not marked down. |
on_sale, discount_percent, discount_label | Zara's isOnSale flag, Zara's own displayDiscountPercentage, and the badge as printed (-40%). Null when not marked down. |
availability | in_stock, coming_soon, ... exactly as sent. |
tags, is_new | Zara's badges as printed (NEW, collaboration names), and whether one is NEW. |
image_url, additional_image_urls | Photos, https://static.zara.net/..., at 750 px wide. Videos are not included. |
Honest nulls and the traps
- Prices are scaled integers, and the scale depends on the currency. Zara
sends
7990for US$79.90 and7990for ¥7,990. The actor divides by 100 for the eight two-decimal currencies and not at all for JPY. Checked on 2026-10-13 for every offered store against the storefront's own price strings in the same responses ("$ 59.90"against5990,"¥ 6,590"against6590,"399,00 SEK"against39900). - Zara sends no currency code.
currencycomes from the store table in this actor. Measured: an invented store (/xx/en/) is not refused, it answers with a full catalogue of some fallback store, so the stores are a fixed list of those whose currency was read off the page. Canada (prints a bare$) and Australia (404) are not offered. previous_price,discount_percentanddiscount_labelare null for a product that is not marked down. Measured 2026-10-13 over 2,414 product records (US category pages, several of them the same product twice): Zara sent an old price on every marked-down product and on no other.priceis null if Zara sends none or flags the price unavailable (never 0). None of the 2,414 records measured did.- Duplicates. A category response lists some products twice (405 distinct ids in 407 for US jeans). A product is returned and charged once per run.
- Product links. Zara's product pages are rendered in the browser and the
server answers HTTP 200 with a small shell for any address (a made-up
product answered 200 as well), so a 200 cannot confirm a link. The address is
built from the same keyword and ids Zara's own site uses. A product Zara
sends without a keyword has a null
url. - Hidden placeholders are dropped. Two records in 2,414 had no name and no
keyword and were flagged
hideProductInfoby Zara (a perfume sample tint, in the "THE NEW" category). They are not rows, are not charged, and the run log counts them. - A category listing
Zara Homeitems (sectionHOME,brandzarahome) returns them as rows; their links use the same pattern and were not checked against the Zara Home site. description,section,family,subfamily,brand,kind,colour,availabilityand the references are null when Zara sends no value.
Pricing
Pay per event:
- $0.002 per run (
actor-start), charged only after your input is validated, so a run that fails on bad input costs nothing. - $0.00069 per product row written (
product-scraped), i.e. $0.69 per 1,000 products.
For reference, measured on the Apify Store on 2026-10-13, the other Zara product scrapers charge $0.003 (gauzy_penguin) and $0.00099 (shahidirfan) per product. This actor's $0.00069 is 30% under the cheaper one.
How it fetches
It calls the JSON endpoints behind Zara's own storefront,
www.zara.com/<country>/<language>/category/<id>/products?ajax=true and
.../categories?ajax=true, with no cookie, token or login, presenting a Chrome
TLS fingerprint through the Apify datacenter proxy. Zara's edge (Akamai)
refused 42% to 50% of requests from Apify datacenter addresses with an