The Client
A fragrance brand selling eau de parfum and eau de toilette across multiple beauty marketplaces and its own site, in a range of bottle sizes. Premium positioning, a considered price, and a growing sense that its pricing was somehow both too high and too low at once.
Client details are anonymised. Figures are representative of the engagement.
The Problem: Pricing That Looked Right and Performed Wrong
The brand priced its fragrances carefully, bottle by bottle, and could not understand why the results were inconsistent. Some sizes sold well; others stalled. On some marketplaces the brand felt expensive; on others, oddly cheap. The pricing decisions felt sound in isolation and produced a muddle in aggregate.
The root cause was that the brand compared prices the way it set them — per bottle — and customers increasingly did not. Fragrance is sold in many sizes: 30 ml, 50 ml, 100 ml, travel sizes, gift sets. A 50 ml at one price and a competitor's 100 ml at a higher price are not comparable as bottles, and are directly comparable as price per millilitre — which is how value-conscious fragrance shoppers, and every price-comparison tool, actually evaluate them.
The brand had no per-millilitre view, no cross-marketplace view, and therefore no idea where it actually stood.
The pricing lead's summary: we know what every bottle costs. We have no idea what any of them costs compared to anything.
Why Per-Bottle Pricing Missed the Picture
Fragrance pricing has two dimensions the brand was not measuring, and both matter.
Bottle price hides per-millilitre value. A 50 ml priced to look premium can be poor value per millilitre against a competitor's larger bottle — and the shopper comparing value sees the per-millilitre reality, not the bottle price. Without normalising to a common unit, the brand could not see whether its "premium" price was premium value or simply a small bottle.
Price varies by marketplace for the identical product. The same fragrance, same size, was not necessarily priced identically across the marketplaces the brand sold on — and the brand had no consolidated view to catch where it was undercutting itself or being undercut.
Gift sets and bundles distort the comparison further. A gift set bundling a fragrance with a body product has a headline price that is not comparable to a standalone bottle at all, unless the components are unbundled and the fragrance's effective per-millilitre price is isolated.
The Solution: Cross-Marketplace Fragrance Pricing Intelligence
Product Data Scrape built fragrance pricing intelligence across every marketplace the brand and its competitors sold on.
- Full price capture across marketplaces. Every fragrance SKU — the brand's and its competitors' — was captured across all relevant marketplaces, with size, price, and any offer.
- Per-millilitre normalisation. Every price was normalised to price per millilitre, so a 30 ml, a 50 ml, and a 100 ml became directly comparable, and the brand could see its true value position rather than its bottle price.
- Gift-set unbundling. Where a fragrance was sold in a set, the components were separated and the fragrance's effective per-millilitre price isolated, so bundles did not distort the comparison.
- Cross-marketplace consolidation. The same SKU's price across marketplaces was consolidated into one view, surfacing inconsistencies — including where the brand was undercutting itself on one marketplace.
- Competitor value mapping. The brand's per-millilitre price was mapped against competitors' at every size, so the value gap was visible size by size, not blended.
Sample Data: Price Per Millilitre, Normalised
An illustrative per-millilitre comparison across sizes and a competitor.
| Product |
Size |
Bottle Price |
Price / ml |
vs Competitor / ml |
| Our EDP |
30 ml |
2,499 |
83.3 |
— |
| Our EDP |
50 ml |
3,499 |
70.0 |
— |
| Our EDP |
100 ml |
5,999 |
60.0 |
— |
| Competitor EDP |
50 ml |
3,299 |
66.0 |
We are 6% dearer/ml |
| Competitor EDP |
100 ml |
5,499 |
55.0 |
We are 9% dearer/ml |
Illustrative figures.
The structured record:
{
"product_id": "FRAG-EDP-SIGNATURE",
"captured_at": "2026-07-14T12:00:00+05:30",
"variants": [
{"size_ml": 30, "marketplace": "beauty_mp_1", "price": 2499, "price_per_ml": 83.3},
{"size_ml": 50, "marketplace": "beauty_mp_1", "price": 3499, "price_per_ml": 70.0},
{"size_ml": 50, "marketplace": "beauty_mp_2", "price": 3699, "price_per_ml": 74.0},
{"size_ml": 100, "marketplace": "beauty_mp_1", "price": 5999, "price_per_ml": 60.0}
],
"cross_marketplace_inconsistency": {
"size_ml": 50,
"price_range": [3499, 3699],
"note": "same SKU priced 200 higher on beauty_mp_2"
},
"competitor_per_ml_gap": {
"size_50ml": "+6% vs competitor",
"size_100ml": "+9% vs competitor"
}
}
Two findings the bottle-price view had completely hidden. First, the brand's per-millilitre value gap versus the competitor widened at larger sizes — it was 6% dearer per millilitre at 50 ml and 9% dearer at 100 ml, meaning its worst value was exactly on the sizes that value-conscious buyers scrutinise most. Second, the identical 50 ml SKU was priced 200 rupees higher on one marketplace than another — the brand was quietly undercutting itself, and had never seen it.
What the Brand Did
Fixed the large-size value gap. The 100 ml, where the per-millilitre gap was widest and most visible to value shoppers, was repriced to a defensible per-millilitre position — improving value perception on the size that most influences it, without touching the premium 30 ml where the brand could hold its price.
Resolved the cross-marketplace inconsistency. The same SKU was aligned across marketplaces, ending the self-undercutting that had been splitting demand and confusing the brand's own price signal.
Repriced by per-millilitre strategy, not bottle habit. The brand set a deliberate per-millilitre curve across sizes — a premium on small "trial" sizes, sharper value on large "loyalty" sizes — instead of pricing each bottle in isolation.
Monitored continuously. Per-millilitre competitive position is now tracked across marketplaces, so the brand sees its value gap move rather than discovering it a quarter late.
The Results (One Quarter)
| Metric |
Before |
After One Quarter |
| Per-ml value gap vs competitor, 100 ml |
+9% (dearer) |
At parity |
| Cross-marketplace price inconsistencies |
Present, unmanaged |
Resolved |
| 100 ml unit sales, indexed |
100 |
134 |
| Blended fragrance margin (protected on small sizes) |
100 |
103 (held) |
| Overall fragrance revenue, indexed |
100 |
121 |
Figures are representative of the engagement outcome.
The pricing lead's follow-up: we were pricing bottles. Our customers were pricing millilitres. Once we saw the same number they see, the strategy was obvious.
The Lesson
You have to benchmark on the unit your customer actually compares. In fragrance, that unit is price per millilitre, not price per bottle — and a brand that prices in bottles while its customers evaluate in millilitres is optimising a number nobody else is looking at. Its "premium" price might be premium value or might simply be a small bottle, and without normalisation it cannot tell which.
The self-undercutting was the sharper lesson: the brand was losing to itself across marketplaces and had no way to see it, because it had never consolidated the identical SKU into a single view. Both problems were invisible in the way the brand measured price and obvious the moment the data was normalised the way customers actually think.
Work With Product Data Scrape
Product Data Scrape delivers fragrance pricing intelligence across beauty marketplaces: full multi-marketplace price capture, per-millilitre normalisation, gift-set unbundling, cross-marketplace consolidation, and competitor value mapping by size — as JSON, CSV, API, or dashboard-ready feeds.
Ask us for a per-millilitre benchmark on your range — we will show you where your value gap actually sits, and whether you are quietly undercutting yourself.
Product Data Scrape — turning marketplace complexity into decision-ready data.