A pricing analyst at an appliance brand builds a competitive report. It shows the company's induction cooktop priced above three competitors. The category head glances at it and points out that two of those competitors are 1,200 W units and the company's is 2,000 W.
The report was not wrong about the prices. It was wrong about what a competitor is.
This is the defining characteristic of appliance and electronics data work. In grocery, a product is identified well enough by brand, name and pack size. In appliances, a product is identified by a specification vector, and two listings that look similar in a title can be in entirely different competitive sets. Price tracking in this category is a specification-matching problem that happens to output prices.
Consider what changes a washing machine's competitive position: load capacity in kilograms, front-load versus top-load, inverter versus conventional motor, energy rating, drum material, and whether it has a heater. Two 7 kg machines with different motor types and energy ratings are near-substitutes. A 7 kg and a 10 kg machine are not.
The consequences of skipping normalisation:
The fix is a per-category attribute schema, populated for every listing, used to define comparable sets before any price is compared.
Specifications on retail listings live in four places, each with different reliability.
| Source | Reliability | Notes |
|---|---|---|
| Structured spec table | Highest | Retailer-maintained key-value pairs; use as primary |
| Bullet points | Medium | Marketing-shaped; inconsistent key naming |
| Long description prose | Low | Often reused across a whole product family |
| Title string | Medium for a few attributes | Capacity and model number often reliable; little else |
The extraction pipeline should read them in that priority order and record which source produced each attribute value. When sources conflict, take the highest-priority source and log the conflict. Conflict rate per retailer is a useful reliability metric — some retailers' spec tables are genuinely unreliable and you need to know which.
Key mapping is most of the work. The same attribute appears as "Power Consumption," "Wattage," "Power (W)," "Motor Power," and "Rated Power." Maintain an alias dictionary mapping observed keys to canonical attribute names, per category. This dictionary grows continuously; treat it as a maintained asset with a review process, not a one-time build.
Value parsing needs its own care. "1200 W", "1.2 kW", "1200W", "1200 watt" are one value. Store the canonical numeric value and unit, and keep value_raw so any parse can be audited. Ranges ("1000-1200 W") need a documented convention — store min and max, do not pick one silently.
There is no universal appliance schema. Each category needs its own, with a shared core.
Shared core fields, every category:
| Field | Type |
|---|---|
| listing_id, retailer, observed_at_utc | string, string, timestamp |
| brand_raw, brand_key | string |
| model_number_raw, model_number_normalised | string |
| title_raw | string |
| category_path_retailer | string |
| category_key_internal | string |
| mrp, selling_price, currency | float, float, string |
| availability_status | enum |
| seller_type | enum: first_party / third_party / marketplace_seller |
| warranty_months, warranty_scope | integer, string |
| energy_rating_stars | integer, nullable |
| colour_variant | string |
| is_bundle | boolean |
Category-specific extensions, for example:
Refrigerators: capacity_litres, door_config (single/double/side_by_side/french), cooling_type (direct_cool/frost_free), compressor_type (inverter/conventional), shelf_material, convertible_modes.
Washing machines: load_capacity_kg, load_type (front/top/semi_auto), motor_type, rpm_spin, inbuilt_heater, wash_programmes_count.
Air conditioners: capacity_tons, type (split/window/portable), inverter, isee_rating, copper_condenser, wifi_enabled.
Induction cooktops: power_watts, burner_count, preset_count, panel_type, touch_control.
Televisions: screen_size_inches, panel_resolution, panel_type, refresh_rate_hz, hdmi_ports, smart_platform, hdr_formats.
Define a comparable_set_key per category as a deterministic function of a named subset of these attributes. For refrigerators that might be capacity band plus door configuration plus cooling type. Document the function. Every price index is then computed within a comparable set key, and the function itself becomes reviewable.
Model number is the strongest matching signal in this category. When two listings carry the same manufacturer model number, they are the same product, and no other field comes close to that certainty.
Normalisation is required before matching. Model numbers appear with and without hyphens, with region suffixes, with colour codes appended, in different cases, and with retailer prefixes bolted on. Build a normaliser that strips punctuation, uppercases, and separates a recognised base from known suffix patterns — then keep both base and full form, because sometimes the suffix is the whole distinction.
Where it breaks down:
Retailer-exclusive SKUs. Large retailers commission model variants sold nowhere else. The model number has no counterpart. These are real competitors and they will never match. Flag them as exclusive_sku and handle them through spec-based matching alone.
Bundle variants. A model number with an included stabiliser, extended warranty or installation kit is not price-comparable with the bare unit. Detect bundle indicators in title and spec fields, set is_bundle, and exclude bundles from the primary index while tracking them separately.
Colourways. Same model, different colour, sometimes different price. Group under a parent product with colour as a variant dimension. Whether colour variants share an index cell is a documented choice — usually yes for appliances, sometimes no for premium electronics.
Generation ambiguity. A successor model can reuse most of a model string. Compare spec vectors, and where they differ materially, treat as separate products regardless of string similarity.
Missing model numbers. Marketplace third-party listings frequently omit them. These fall back to spec matching with a lower match_confidence, and should be visibly labelled as such in any output.
Always carry match_method and match_confidence. A pricing decision made on a model-number match and one made on a fuzzy spec match deserve different levels of trust, and the analyst needs to see which they have.
This is where Indian appliance data diverges most from other markets. The listed price is one component of what a buyer pays.
Components sitting between listed price and effective price:
Capture each as a structured offer record linked to the listing, never as a single "effective price" number.
| Field | Notes |
|---|---|
| offer_type | bank_card / exchange / no_cost_emi / coupon / cashback / freebie |
| offer_value_amount | Absolute, where stated |
| offer_value_pct | Percentage, where stated |
| offer_cap_amount | Maximum benefit |
| min_transaction_value | Qualifying threshold |
| conditions_raw | Verbatim text |
| issuer_or_partner | Named bank or partner |
| is_stackable | Boolean where determinable |
| valid_from, valid_to | Where stated |
The gap between listed and best-case price in a tracked appliance set can reach [DATA: observed maximum gap between listed and all-offers price, category and date stated], which is why a single number will not do.
Compute effective price scenarios instead. A price_listed, a price_with_unconditional_offers, and a price_best_case_all_offers — each labelled, each traceable to the offer records that produced it. Different stakeholders need different ones. A brand watching competitive positioning wants the first two; a trade team assessing what a shopper actually sees wants the third.
Indian appliance pricing is not smooth. Festive season sale events produce concentrated, short-lived price and offer changes, and a weekly collection schedule will miss most of what happens.
A workable cadence:
Every record carries event_context so a price series can be read with sale windows visible rather than as unexplained volatility. Without it, a chart of appliance prices across October looks like an error.
Appliance availability is pincode-dependent in ways electronics accessories are not. Large appliances require serviceable delivery and installation, and retailers restrict them by pincode.
Collect availability against a fixed pincode sample stratified by city tier, and store delivery_pincode on every availability record. A product "in stock" nationally may be undeliverable across a large part of the country. Also capture delivery_promise_days and installation_offered where exposed — for a large appliance, a two-week delivery promise is close to being out of stock.
Actowiz Solutions collects appliance and electronics listings across Indian retailers with per-category attribute schemas, model-number and specification matching, and structured offer capture for effective-price scenarios. Collection cadence is tuned to the festive cycle with event-context tagging on every record.
A: Because titles do not define competitive sets. A 1,200 W and a 2,000 W cooktop, or a 7 kg and a 10 kg washing machine, are not substitutes. Comparable sets must be built from a per-category attribute schema first.
A: It is the strongest signal but not sufficient. Retailer-exclusive SKUs, bundle variants, colourways and omitted model numbers on third-party listings all require specification-based fallback matching with recorded confidence.
A: Bank card offers, exchange value, no-cost EMI, coupons and cashback all sit between listed and paid price. Each should be captured as a structured offer record so multiple labelled effective-price scenarios can be computed.
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.
UAE retail data intelligence for retail groups: prices, assortment, stock, reviews and share of search across Noon, Amazon.ae and more.
Sensitive Skin Skincare Product Data API helps brands track cleansers, serums, moisturizers, and sunscreens with structured product data.
Canada ecommerce market data for 2026: StatCan online sales, key retailers, tax, French-language and pricing rules.
Whether you're a startup or a Fortune 500 — we have the right plan for your data needs.