15% off your first purchase with code WELCOME15, up to 25 GB.

See pricing

Price monitoring · Fashion prices

Fashion price monitoring: markdowns, size availability and assortment per market

In fashion the full price is set once; what moves is the markdown, the sizes left and which styles a market is offered at all. Collect each country site from an exit in that country, record price and size availability per colourway, and you can see who discounts first, how deep and where.

Pay per GB · No subscription · Prices in EUR, excl. VAT

Illustration. The URLs and values are fictional; the connection string is the real grammar.
€0.75
per GB on ARC Basic, excl. VAT
−21%
at 1 TB (€0.59 / GB)
185+
countries, city targeting
Never
expires — no subscription

Written for

  • Fashion brand pricing and merchandising teams
  • Retail and equity analysts
  • Off-price and resale buyers
  • Wholesale account managers

The short answer

  • The unit of fashion data is the colourway, not the product: price, markdown and stock often differ by colour.
  • Size availability is the clearest public signal of sell-through. Store which sizes are orderable on every check, not only the price.
  • Country sites carry different assortments and different markdown timing. Collect each from an exit in its own market.
  • In the EU an announced reduction must state the prior price, the lowest of at least the previous 30 days; Member States may set a different rule for reductions that increase step by step through a sale.

The problem

What goes wrong without the right IPs

Price tracked, markdown missed

A style can hold the same full price all season while the sale price drops in three steps. If you store one price field, you cannot tell full price from markdown or the second markdown from the first.

Colourways averaged together

The black version sells at full price while the seasonal colour is marked down 40%. Collapsing colourways into one product makes the markdown look shallower and the full-price sell-through look worse than both are.

Sizes ignored

A style with only XS and XXL left is effectively sold out. Without size-level availability, a broken size run reads as healthy stock and the markdown that follows looks like a pricing decision rather than a clearance.

One country site reported as the brand

Brands run different assortments, launch dates and sale starts per country. A tracker on one site reports one market's season and misses that the sale started a week earlier elsewhere.

Image-heavy pages

Fashion pages carry many large product images per tile. On per-GB billing, a category sweep that loads them costs far more than the prices and sizes you keep.

What to collect

What you can collect

Style and colourway ID
The retailer's own style code plus colour. Pricing and stock decisions are made at this level.
Full price and current price
Both, as displayed. Markdown depth is derived, not scraped.
Stated prior price
The reference the page shows for a reduction. In the EU it must be the lowest price of at least the previous 30 days, subject to national rules on progressive reductions.
Size availability
Each size and whether it is orderable. The share of sizes available is a sell-through proxy.
Category and collection
Season, line and category as the site labels them, so assortment breadth can be compared between markets.
Badges and labels
"New in", "last chance", "sustainable" and similar, as displayed. They mark the lifecycle stage.
Fibre composition
In the EU it must be visible before an online purchase; useful for matching styles across retailers and for like-for-like comparisons.
First and last seen dates
When a style appeared and disappeared from a country site — the assortment timeline.

How it runs

How a collection run works

  1. 01

    Walk categories per country site

    Discover styles from category listing pages, sorted by newest, for each country site you track. New style codes are your assortment signal; disappearing codes are the end of a lifecycle.

  2. 02

    Hold one exit for a category walk

    Pagination and sort order are often bound to a session. A sticky session per category walk keeps page 4 consistent with page 3; a new handle for the next category.

    One sticky exit per category walk
    import uuidimport requestsGATEWAY = "proxy.arcproxies.io:8000"PASSWORD = "PASSWORD"def category_session(country: str) -> requests.Session:    sid = uuid.uuid4().hex[:8]    user = f"USERNAME_pool-arc_country-{country}_session-{sid}_sesstime-10"    proxy = f"http://{user}:{PASSWORD}@{GATEWAY}"    s = requests.Session()    s.proxies = {"http": proxy, "https": proxy}    s.headers["Accept-Encoding"] = "gzip, br"    return ss = category_session("fr")pages = [s.get(f"https://brand.example/fr/women/dresses?page={n}").text for n in range(1, 6)]
  3. 03

    Read sizes from the product data, not the picture

    Most fashion product pages embed size and stock data in structured markup or a public JSON call for the size selector. Read it there; the rendered page with images is several times heavier.

  4. 04

    Derive markdown, do not scrape it

    Compute markdown depth from your stored full price and current price, and keep the page's own percentage separately. When the two disagree, you have found either a progressive reduction or a prior-price question.

  5. 05

    Run around sale starts

    Track the full catalogue weekly in-season and daily from the week before a market's sale starts until it ends. Size availability on core styles can justify a daily check all year.

Setup

Recommended setup

Fashion sites are catalogue-shaped and mostly server-rendered, so the ISP pool carries the sweeps and residential handles the brands and marketplaces that need it.

PlanRoleSessionTargetingPrice
ARC Basic
Rotating ISP
Default for category walks and product pages
Rotating ISP exits at our lowest price per GB, with a held IP for each listing walk so pagination stays consistent.
Sticky, 10 minutes per category walkCountry
€0.75 / GB
€0.59 at 1 TB (−21%)
ARC Fast
Rotating residential
For stricter brand sites and fashion marketplaces
Residential exits for the sites where ISP addresses keep returning challenge pages or empty listings. City targeting is there when a site localises by metro.
Sticky per category walkCountry + city
€2.00 / GB
€1.12 at 1 TB (−44%)

Prices are list prices in EUR, excl. VAT. Volume discounts apply automatically at checkout — full ladder on the pricing page.

Connect

One connection string per market

The country, city and sticky session are tokens in the username. Change the token, change the market; keep the session handle, keep the IP.

sticky · Germany · 10 min
http://USERNAME_pool-arcfast_country-de_session-k3f9a1x2_sesstime-10:PASSWORD@proxy.arcproxies.io:8000

Swap _country-de for any market you quote. The full grammar is on the residential proxies page.

Illustration

What markdown and size tracking for 10 retailers in 6 markets costs

An illustration with round numbers — your pages, payloads and retry rate will differ. The arithmetic is the real price ladder.

Assumptions

Retailer country sites
60
Colourways tracked per site
4,000
Cadence
daily product data, weekly category walk
Weight per product check, images blocked
120 KB
Days
30
Bandwidth per month
≈ 864 GB

On ARC Basic

€535.68per month, excl. VAT

864 GB bought in one purchase at €0.62 / GB (−17% volume rung, applied automatically).

The same 864 GB on ARC Fast: €1,019.52 at €1.18 / GB. Route only the jobs that need it through the pricier pool.

Weekly category walks to discover new styles add a few GB on top. Loading product images would multiply the figure several times; if you need images for visual matching, fetch each one once and keep it.

Bandwidth never expires, so a bigger single purchase is only ever cheaper per GB. See the ladder.

In depth

Fashion prices, in depth

What a fashion price tracker actually measures

A fashion price tracker is less about the price than about the decisions behind it. The full price is fixed for the season; the questions are when a style goes on sale, how deep, in which markets first, and how much stock was left when it did.

That changes what you store. A row per colourway per check, with full price, current price, stated prior price and size availability, answers all four questions. A row per product with one price answers none of them.

QuestionFields you needWho asks it
Who marked down first, and how deep?Full price, current price, first-seen-on-sale datePricing and merchandising teams
Was it a clearance or a promotion?Size availability at markdown, depth over timeBrands, retail analysts
How broad is each market's range?Style IDs per category per country siteAssortment planners, wholesale
Is our wholesale partner discounting early?Price per partner site per dayWholesale account managers

Size availability as a sell-through signal

Retailers do not publish stock counts, but they publish which sizes can be ordered. Across a panel of styles, the share of sizes still available tracks sell-through closely enough to compare styles, colourways and markets.

Two patterns matter. A style whose core sizes sell out at full price is a winner; a style marked down with a full size run is a buying miss. Both are visible only if size availability is stored on every check, timestamped, and kept per colourway.

  • Broken size run — fewer than half the sizes orderable; often precedes a markdown or delisting.
  • Core sizes gone first — demand signal at the current price.
  • Full run at markdown — the price, not the stock, drove the decision.

Markdowns and prior prices in the EU

Article 6a of the EU Price Indication Directive, inserted by the Omnibus Directive and applicable since 28 May 2022, requires any announcement of a price reduction to indicate the prior price. The prior price is the lowest price the trader applied in a period of at least 30 days before the reduction.

Fashion sales often deepen in steps. Article 6a(5) lets Member States provide that, when a reduction is progressively increased, the prior price is the price before the first reduction. The Commission's December 2021 guidance on Article 6a covers progressive reductions and new arrivals among its topics; national rules decide the detail.

For a monitoring team this is a data question. With a daily series per colourway you can set your own 30-day low beside the prior price the page states, and see where a sale's second step is measured from. Where they differ, you have something to investigate per national rule, not a conclusion — that is for counsel.

Comparing assortments between country sites

Brands do not sell the same range everywhere. Climate, sizing, local lines and wholesale agreements change which styles each country site carries and when they arrive. Comparing style IDs per category between sites, from exits in each market, turns that into a number: overlap, local-only styles and launch lag.

Collect each country site from its own country: many brands redirect a visitor to the site for their location, and some show a reduced range or different currency to visitors from elsewhere. The country token in the username keeps that a property of the job, not of where your crawler runs. The guide to comparing prices across markets covers currency and tax normalisation for the price side.

Keeping image-heavy fashion sites affordable

  • Block images in category walks. You need style IDs, prices and badges from a listing page, not the photos.
  • Read the size selector's data, not the rendered page. It is usually a small structured payload.
  • Fetch images once. If you match styles visually, download each image a single time and store it; never re-fetch on every check.
  • Pace each site. Spread category walks across the day and back off on rate-limit responses.

The bandwidth guide has page weights to plan against; the parent price monitoring page covers when to move a domain from ISP to residential exits.

Works with anything that takes a proxy URL

  • Python requests / httpx
  • Scrapy
  • Playwright
  • Crawlee
  • Docker

FAQ

Questions

Something not covered? Write to contact@arcproxies.io.

Can I see stock levels on fashion sites?

Not as unit counts, which retailers rarely publish. You can see which sizes are orderable per colourway, which is what the size selector shows any visitor. Stored on every check, the share of sizes available is a practical sell-through signal.

Why collect each country site from its own country?

Because assortments, sale dates and currencies differ per market, and many fashion sites redirect or show a reduced range to visitors from elsewhere. An exit in the market gets the page a local shopper sees. Put the country in the username per job.

How should progressive markdowns be recorded?

Store full price, current price and the stated prior price on every check, per colourway. From the series you can see each step of a sale and what the page measures it from. In the EU, Member States may let a progressively increased reduction refer to the price before the first reduction; check the national rule with counsel.

Do I need to load product images?

Not for prices, markdowns or sizes. Block images in category walks and product checks, which removes most of the page weight. If you match styles visually, fetch each image once and keep it rather than re-loading it on every check.

How much bandwidth does fashion price monitoring use?

At about 120 KB per product check with images blocked, 4,000 colourways on each of 60 retailer country sites checked daily is roughly 860 GB a month. Checking core styles daily and the rest weekly cuts that substantially.

Which plan suits fashion price monitoring?

ARC Basic for most brand and retailer sites, with a sticky session per category walk. Move individual sites to ARC Fast when their pages keep failing on ISP exits; you buy bandwidth per plan, so both can run side by side.

Price monitoring

More on price monitoring

Get started

Buy a gigabyte and try it on your own targets.

No subscription, no sales call. Code WELCOME15 takes 15% off your first purchase, and whatever you do not use is still there next quarter.