Executive Summary
Fashion is the hardest major retail category to build a clean dataset for, and the reasons are structural rather than technical.
A shirt is not one product. It is a style, in a range of sizes, in a range of colours, at a price that changes with markdown cycles, on a listing that appears and disappears with the season. Multiply that across fast-fashion players who launch thousands of new styles a week, and the naive approach — capture the listing price and title — produces a dataset that looks complete and answers almost nothing.
This report covers apparel data scraping done properly: what a fashion dataset has to capture to be usable, the four traps that make most apparel datasets misleading, and what the data looks like when it is built at the variant level across Shein, Temu, Myntra, Zara, and H&M.
This report is published by Product Data Scrape. Sample figures are illustrative of structure and patterns, not a live market census.
Why Apparel Is Structurally Harder Than Other Categories
The variant explosion. A single style carries many size-colour combinations, each with its own price and stock state. A dataset that captures the style but not the variant misses the level at which fashion actually trades — because a style listed as "available" while the shopper's size is out of stock is, to that shopper, unavailable.
Assortment churn. Fast fashion launches and retires styles continuously. Shein and Temu add thousands of new listings a week. A quarterly snapshot of a fast-fashion catalogue describes a catalogue that no longer exists. Apparel data has to be captured as a flow of arrivals and exits, not a static list.
Markdown as the core mechanic. Fashion pricing is a markdown curve, not a price. A garment enters at full price and is progressively marked down through the season. The single most valuable variable in apparel pricing — how fast and how deep an item is discounted — is invisible in any single snapshot.
Identity is ambiguous. The "same" product across retailers is rarely an identical SKU. Matching a dress across Myntra and a brand's own site, or comparing a Shein style to a Temu equivalent, requires attribute-level matching, not title matching.
The Four Traps
Trap one: capturing style, not variant
A style-level dataset reports a product as available and priced when half its sizes are out of stock and the price applies only to some variants. Apparel data scraping has to resolve to the size-colour variant, or the availability and price fields are averages that describe no real purchasable item.
Trap two: treating the snapshot price as the price
A garment at 40% off today was at full price six weeks ago and will be at 60% off in three. Capturing today's price captures one point on a curve that is the actual object of interest. Without the markdown trajectory, you cannot tell a genuinely cheap brand from an expensive one caught mid-sale.
Trap three: ignoring assortment flow
The most valuable fast-fashion signals are the arrival rate (how fast a competitor launches) and the sell-through rate (how fast items exit). Both are flow metrics, invisible in a static catalogue capture. A dataset that does not track first-seen and last-seen dates per style throws away the two most informative fashion variables.
Trap four: matching on title
"Floral midi dress" is not a join key. Cross-retailer apparel comparison requires matching on structured attributes — category, material, silhouette, colour family — because the same garment, and the nearest equivalent garment, carry different titles on every platform.
What a Usable Apparel Dataset Captures
| Field group |
Fields |
| Identity |
style_id, variant_id (size × colour), brand, retailer, product_url |
| Attributes |
category, subcategory, material, silhouette, colour_family, gender, season |
| Pricing |
mrp, full_price, current_price, discount_pct, price_per_variant |
| Markdown |
first_seen_price, current_markdown_depth, days_since_first_markdown |
| Availability |
variant_in_stock, sizes_available, sizes_out_of_stock, stock_signal |
| Flow |
first_seen_date, last_seen_date, still_listed, days_listed |
| Social proof |
rating, review_count, review_velocity |
| Capture |
captured_at, location/currency |
The flow and markdown groups are what separate an apparel dataset that supports a decision from one that just lists products.
Sample Data: One Style, Variant-Level
An illustrative record for a single style across two retailers.
| Style |
Retailer |
Variant |
Full Price |
Current Price |
Markdown |
Size Availability |
Days Listed |
| Floral Midi Dress |
Retailer A |
S / Blue |
2,499 |
1,499 |
40% |
In stock |
42 |
| Floral Midi Dress |
Retailer A |
M / Blue |
2,499 |
1,499 |
40% |
Out of stock |
42 |
| Floral Midi Dress |
Retailer A |
L / Blue |
2,499 |
1,499 |
40% |
In stock |
42 |
| (equivalent) |
Retailer B |
M / Blue |
2,199 |
2,199 |
0% |
In stock |
8 |
Illustrative figures.
The variant rows tell the story a style-level capture would erase: the dress is 40% off at Retailer A but the most popular size (M) is out of stock, while Retailer B lists a near-equivalent at full price, newer to the catalogue, with M available. A brand benchmarking on style-level price would see "Retailer A is 32% cheaper" and miss that the cheaper item cannot be bought in the size that matters.
The structured record:
{
"style_id": "APP-DRESS-FLORAL-0091",
"brand": "brand_a",
"retailer": "retailer_a",
"category": "dresses",
"subcategory": "midi",
"material": "viscose",
"colour_family": "blue",
"season": "SS26",
"captured_at": "2026-07-15T10:00:00+05:30",
"pricing": {
"mrp": 2499,
"full_price": 2499,
"current_price": 1499,
"discount_pct": 40
},
"markdown": {
"first_seen_price": 2499,
"days_since_first_markdown": 14,
"markdown_steps_observed": 2
},
"variants": [
{"variant_id": "S-blue", "in_stock": true},
{"variant_id": "M-blue", "in_stock": false},
{"variant_id": "L-blue", "in_stock": true}
],
"flow": {
"first_seen_date": "2026-06-03",
"last_seen_date": "2026-07-15",
"days_listed": 42,
"still_listed": true
},
"social": {"rating": 4.2, "review_count": 318, "review_velocity": "rising"}
}
What the Aggregate Data Reveals
Arrival rate separates fast fashion from the rest. Shein and Temu show new-style arrival rates an order of magnitude above traditional retailers. Tracking first-seen dates makes this measurable rather than anecdotal.
Markdown cadence is a brand fingerprint. Some brands mark down early and shallow; others hold full price and cut deep late. The markdown curve, captured as a series, characterises a competitor's pricing strategy in a way no snapshot can.
Size availability is where sell-through hides. Popular sizes sell out first. The pattern of which sizes are out of stock, and how early, is a proxy for demand that most apparel datasets discard by capturing at style level.
Cross-retailer equivalence is partial. A large share of any fast-fashion catalogue has no clean equivalent on a competing platform — which is itself an assortment-gap finding, not a data failure.
Who Uses Apparel Data
Fashion brands and retailers benchmark price, markdown cadence, and assortment against competitors at the variant level, and detect competitor launches as they happen.
Marketplace sellers monitor their own and rivals' size-level availability and markdown timing.
Researchers and economists use SKU-level apparel price series for demand modelling and price-index work — the U.S. Bureau of Labor Statistics itself has sought structured, SKU-level apparel datasets with observation date, price, brand, and specifications, which is precisely this shape of data.
Institutional and academic buyers use historical apparel series for forecasting research, where variant-level granularity and clean first-seen/last-seen dating are the whole requirement.
Limitations
Cross-retailer matching is inherently imperfect where garment identity is ambiguous. Markdown trajectories require continuous capture and cannot be reconstructed retroactively. Assortment-flow metrics depend on capture frequency being high enough to catch short-lived listings. Sample figures illustrate structure, not audited market statistics.
About the Data
This report was produced using apparel data scraping methods from Product Data Scrape. We build variant-level fashion datasets across Shein, Temu, Myntra, Zara, H&M, and other retailers — capturing size-colour variants, full and current price, markdown trajectory, size-level availability, assortment flow with first-seen and last-seen dating, and social proof.
Delivered as JSON, CSV, via REST API, or pushed to your warehouse, with historical series available for time-series and forecasting work.
Want a variant-level apparel sample on your categories? Product Data Scrape will build it across the retailers you compete with, matched at the attribute level, so your price and assortment benchmarks describe real purchasable items.
Product Data Scrape — turning marketplace complexity into decision-ready data.