Scrape Pull&Bear into a clean 58-column dataset: price, old price, discount, currency, colours, images, per-SKU sizes, stock and GTIN barcodes, across 200+ country stores. Sweep the catalogue, one category, the sitemap, or paste product URLs. No proxy needed.
Bershka detail URLs with encoded names, -c0p IDs and colour queries now resolve the correct catalogue product and selected sizes.
Zara product URLs can return size availability from the product page when the separate details route is unavailable.
Detail failures retain their actual cause, failed runs report incomplete, and unresolved references are no longer described as delisted.
Products and sizes include source-response receipt timestamps and cache evidence. Unknown stock age remains explicit; no six-hour freshness guarantee is implied.
All notable changes to the Inditex product scrapers — Zara, Zara Home, Bershka, Massimo Dutti,
Stradivarius, Oysho, Pull&Bear, and the combined all-brands Actor — are documented in this file.
Unreleased — 2026-10-12
Detail runs now explain when a product URL belongs to a different brand than the one selected, before trying to fetch it. Select the matching brand and retry.
[1.0.2] — 2026-09-24
🔧 Fixed
Category slugs now resolve in any language. The category tree comes back in the market's
default language, but the site serves URLs in whichever language the visitor browsed — the
2026-09-11 incident saw a Greek-market run reject the exact English slug its own error message
had just suggested (women/jumpers-n1464 vs the tree's gynaika/pulover-n1464). The trailing
category id (-n1464) is locale-stable (verified live: 441 tokens, zero cross-category
collisions) and now resolves the category regardless of the pasted spelling.
zara.com category URLs paste cleanly. Zara category URLs carry a trailing -l… SEO id
that is not a tree id; it is stripped automatically, and market/language path prefixes are
ignored — the longest suffix of the pasted path that names a category wins.
Invalid input is reported as invalid input. A wrong category, a closed market, an
unsupported language, a filter the category does not offer — each now stops the run marked
as an input problem with the available choices named, instead of counting towards the
Actor's crash rate. Closest-slug suggestions point a transposed guess back at a real
category.
[1.0.1] — 2026-09-22
🐛 Fixed
A single category no longer comes back empty — the brands list the same category under more than one internal number, and only one of them actually holds the products. Runs that named a valid category could be told it was "a container category" and stop with nothing. Every number behind a category is now tried, so the one with the products is the one you get.
Paste the category URL — the category field now accepts the address straight from the brand site (https://www.bershka.com/gb/women/clothes/skirts-n3864.html), as well as the slug or the number. Previously only some of those spellings were recognised.
Britain — choosing UK as the market now resolves to the same store as GB instead of reporting that the brand has no store there.
Sweep All Categories reaches more of the catalogue — the sweep addresses each category by its own number, so categories that were previously skipped over are now included.
[1.0.0] — 2026-08-13
🎉 First build
Seven brands, one schema — Zara, Zara Home, Bershka, Massimo Dutti, Stradivarius, Oysho and Pull&Bear return the same 58 columns, so a Bershka row and a Zara row can sit in the same table and mean the same thing
200+ country stores — every market the brands operate, each priced in its own currency with the market's own divisor applied, so a Japanese run returns usable yen rather than raw numbers
Per-SKU sizes, stock and GTIN barcodes — colour by size with buyable and back-soon flags, barcodes on the six shared-catalogue brands, and the physical dimensions, gram weight and country of origin of each SKU
Promotion windows — per-SKU price start and end dates, so a price row tells you the date a markdown ends rather than only that one is running
Drop detection on Zara — first_visible_date records when a product entered the catalogue; diff two runs and you have a new-arrivals feed
Three ways in — sweep every category, sweep the sitemap for catalogue items no category lists, or paste your own product URLs and ids
Filters that match the site — facet filters by colour, size, category and discount, plus price floor and ceiling in the market's own major units
A bill you can audit — the source column on every row names the call that produced it, so an invoice reconciles line by line against the dataset
💎 User benefits
Sizes and per-SKU stock arrive in the cheap category sweep on six of the seven brands, with no second request and no second charge
Prices come back with a currency and a correct divisor, so a multi-market export is comparable without out-of-band knowledge
GTIN barcodes give you a join key to any other retail dataset instead of fuzzy name matching
Duplicates are removed before anything is charged, so the product count you set is the product count you pay for
The run summary separates products that no longer exist from fetches that genuinely failed, so you know whether a short dataset needs a re-run
🎯 Use cases
Pricing analysts comparing the same garment across six markets in local currency
Retail analysts tracking markdown depth and the exact date each promotion ends
Resellers checking which sizes are genuinely in stock before sourcing
Marketplace teams matching Inditex products to their own inventory on GTIN barcodes
Trend researchers diffing weekly runs to catch new arrivals the day they appear
Category managers measuring range width, carryover versus seasonal split, and price architecture across sibling brands
📋 Known data limits, stated up front
No Inditex brand publishes ratings or reviews through these catalogues, so no review field exists on any of the eight Actors
None of these sites offers a server-side keyword search; scrape a category or the whole tree and filter the results yourself
Massimo Dutti publishes no GTIN barcodes and fills descriptions on roughly 7% of products, which is why that Actor is priced below its sibling brands
Bershka fills descriptions on roughly 30% of products
first_visible_date is filled on Zara detail records only — an overview-only run returns it as null
traceability and certified_materials are present in the schema and frequently empty