Beauty and personal care is the category most often described as premiumising, and the description is usually built from two unrelated observations stacked into one sentence.
Observation one: consumers are paying more for shampoo than they used to. Observation two: consumers who used a handful of product types now use noticeably more. Both are real. They are different things, they have different commercial implications, and they require different measurements.
If you conflate them, your premiumisation index rises when either moves and you cannot tell which. A brand that has successfully migrated its existing buyers up a price ladder faces a different next move from a brand riding an expansion in the number of product types people use. The data should separate them.
Both are observable on the digital shelf without any consumption panel.
| Price migration | Routine expansion | |
|---|---|---|
| What changes | Price paid within a product type | Number of distinct product types used |
| Shelf signal | Listing distribution shifts to higher price bands | New sub-categories appear and deepen |
| Primary metric | Band distribution of listings and of in-stock listings | Distinct sub-category count and listing depth per sub-category |
| Confounded by | Inflation, pack-size changes, discount cycles | Platform taxonomy changes |
| Commercial read | Trade up existing range | Extend range into adjacent types |
Report them as two series in every deliverable. A single composite index is a convenience that costs you the only insight the data contains.
Price migration is a distribution question, not an average question. Mean price rises when a single luxury SKU appears and tells you nothing about where the volume-relevant activity sits.
The method:
Define bands once, in per-unit terms. Bands must be built on price per 100 ml or per 100 g, not on pack price. A brand moving from a 200 ml bottle to a 180 ml bottle at the same price is a per-unit price increase, and pack-price bands will miss it entirely. Set band boundaries per sub-category — a serum ladder and a shampoo ladder are not the same ladder — and freeze the boundaries for the life of the series.
Count listings in each band, and separately count in-stock listings. The second is the better signal. A catalogue can hold premium listings that are never purchasable. Shifts in the in-stock distribution track what consumers can actually buy.
Track band distribution by brand and by segment, not only in total. Total-shelf band shifts can be produced entirely by new entrants at the top while every incumbent holds position.
Keep MRP and effective selling price as separate fields. BPC discounting is deep and promotional. A band distribution built on MRP measures positioning; one built on effective price measures what the shelf is actually offering. Publish both, labelled.
Handle pack-size change explicitly. When a tracked product's net quantity changes between periods, that row must be flagged. Unflagged, it appears as a price move. Flagged, it is a pack-architecture move, which is a different finding.
Report the distribution as a table of band shares over periods, with the listing count denominator stated for each cell. Movement of observed percentage-point shift in top-band in-stock listing share, period over period is a finding. A composite index number is not.
Routine expansion means the number of distinct product types a consumer uses is growing. You cannot observe a consumer's bathroom shelf. You can observe what the retail shelf has made available, and availability is the necessary precondition for adoption.
Three proxies, used together:
Distinct sub-category presence. Under your own taxonomy, count how many sub-categories have at least one in-stock listing at a given platform and location. When "essence" or "scalp serum" goes from zero to non-zero in a set of pincodes, that is the beginning of a routine step.
Listing depth per sub-category. Presence is binary and saturates quickly. Depth — the number of distinct in-stock listings and distinct brands within a sub-category — keeps moving after presence stops. A sub-category going from three listings to more listings is expanding even though presence was already 1.
Basket composition proxies. Where platforms expose "frequently bought together," "complete the routine," or bundle listings, capture the co-occurrence pairs. This is platform merchandising, not observed consumer behaviour, and must be labelled as such. It still tells you which adjacencies the retailer believes in.
Sub-category presence and depth together give a routine expansion series. Cross it with price bands and you can see whether expansion is happening at the mass end, the premium end, or both — which is usually the question that actually matters.
Platform categorisation in beauty is unreliable in a way it is not in staples. Serum, essence, toner, ampoule, mist, and treatment overlap conceptually and are assigned inconsistently. The same product sits under "serum" on one platform and "face treatment" on another. Platforms also re-organise their trees without notice, which breaks any series keyed to their categories.
The only workable answer is your own taxonomy, applied as a mapping layer.
Construction rules:
Expect mapping to require review. A rules-only mapper will misassign a meaningful share of new launches, and new launches are where the interesting movement is. Budget for a review queue.
BPC listings are dense with structured-extractable information that most tracking ignores.
| Field | Type | Notes |
|---|---|---|
| hero_actives | array | Controlled list: niacinamide, salicylic acid, retinol, hyaluronic acid, ketoconazole, etc. |
| active_concentration_pct | float | Only when stated numerically on the listing |
| free_from_claims | array | sulphate_free, paraben_free, silicone_free, fragrance_free |
| positioning_tag | enum | derma_clinical / ayurvedic_traditional / d2c_modern / mass_legacy / international_prestige |
| clinical_substantiation | enum | dermatologist_tested / clinically_tested / none_stated |
| concern_targeted | array | hairfall, dandruff, acne, pigmentation, anti_ageing |
| skin_hair_type | array | oily, dry, curly, colour_treated |
| format | enum | serum, cream, gel, oil, foam, bar, sheet_mask |
| net_quantity_value, net_quantity_unit | float, enum | Basis for all per-unit pricing |
| is_refill, is_travel_size, is_combo | boolean | Each needs separate index handling |
positioning_tag deserves care, because the derma versus ayurvedic versus D2C split is the structural story in Indian BPC and it is not something the platform labels.
Tag it at the brand level first, then override at product level where a brand spans positions. Assign from observable listing evidence — clinical substantiation language, ingredient nomenclature style, packaging cues in imagery, price band — and record which evidence drove the assignment. A tag with no recorded basis cannot be defended when a stakeholder disputes it, and someone always disputes it.
Legacy mass brands that have launched derma sub-brands are the common hard case. Treat the sub-brand as its own brand key with its own tag, and link it to the parent through a separate ownership field.
Price bands move with promotional cycles, so a monthly snapshot taken on an arbitrary date will sometimes measure a sale and sometimes not.
Practical design:
Every record carries collection timestamp, platform, pincode, and taxonomy version. Without those four, a historical comparison is guesswork.
Two tables, published together each period.
The first: price band distribution per sub-category, as share of in-stock listings, with denominators, split by positioning tag. The second: sub-category presence and depth per platform and city tier, with new and lapsed sub-categories listed.
Neither claims to describe consumption. What you have is share of listings, share of shelf, and share of search — observations with stated denominators. That is a stronger position than an estimate, because a reader can verify it.
Actowiz Solutions tracks BPC listings across Indian platforms with client-specific taxonomy mapping, per-unit price band construction, and structured ingredient, claim and positioning extraction. Price migration and routine expansion are delivered as separate series with documented denominators.
They are different phenomena with different commercial implications. Price migration means paying more within a product type; routine expansion means using more product types. A single index rises when either moves and cannot distinguish them.
Platforms categorise serums, essences, toners and ampoules inconsistently and reorganise their trees without notice. A taxonomy defined by function and format, applied as a mapping layer, keeps series comparable over time.
Per-unit — per 100 ml or per 100 g. Pack-price bands miss shrinkflation entirely, since a smaller pack at an unchanged price is a per-unit increase that pack-price bands cannot detect.
You can also reach us for all your mobile app scraping, data collection, web scraping, and instant data scraper service requirements!
Our web scraping expertise is relied on by 4,000+ global enterprises including Zomato, Tata Consumer, Subway, and Expedia — helping them turn web data into growth.
Watch how businesses like yours are using Actowiz data to drive growth.
From Zomato to Expedia — see why global leaders trust us with their data.
Backed by automation, data volume, and enterprise-grade scale — we help businesses from startups to Fortune 500s extract competitive insights across the USA, UK, UAE, and beyond.
We partner with agencies, system integrators, and technology platforms to deliver end-to-end solutions across the retail and digital shelf ecosystem.
Use this web data RFP checklist to define scope, sources, fields, SLA, QA and pricing models, then score vendors fairly.
Sensitive Skin Skincare Product Data API helps brands track cleansers, serums, moisturizers, and sunscreens with structured product data.
German marketplace data report 2026: online retail size, Amazon.de, Otto, Kaufland and Zalando price signals, PAngV rules and peak seasons.
Whether you're a startup or a Fortune 500 — we have the right plan for your data needs.