Loading Light/Dark Toggle
Back to Blog

Retail Analytics: Design a Competitor Assortment Dataset

Isabella Garcia
Isabella Garcia

Web Data Collection Specialist

09-Nov-2026

TL;DR:

  • A competitor assortment dataset needs separate product and offer records. A product can appear under several retailers, sellers, or pack configurations.
  • Category coverage needs a denominator. Compare shelves only when the observed scopes and collection completeness are known.
  • An empty shelf record can mean several things. Distinguish delisted items, incomplete captures, and unavailable offers.
  • Match quality determines which comparisons are defensible. Keep exact identifiers and inferred matches distinguishable.

Introduction

Two retailers list the same headset. One page includes the charging case, while the other sells the headset alone. Matching the listings by title erases a pack difference. Counting URLs as products introduces the opposite problem when a single item appears in several categories.

Define what one product row represents before comparing assortment breadth. Then keep the retailer's listing, offer, and category coverage in separate records.

The Dataset Behind the Shelf Comparison

Start from approved category pages, enrich the listings you find, and resolve product identity before reporting overlap. The W3C provenance model helps trace each row to the category or item page that produced it.

Record the Boundaries of Each Shelf Scan

A category observation covers a named retailer, market, collection path, and crawl window. Store the source breadcrumbs and assigned internal category. Keep how far pagination or approved listing discovery went, along with any page states that prevented collection.

Category filters and next-page controls can require browser-based web automation. Keep the category URL, filters, and last completed page with the run so a partial result never reads as the retailer's full shelf.

Category definitions should state what is included. A “headphones” department can combine over-ear products, earbuds, accessories, and refurbished units. Use a crosswalk from source categories to an internal taxonomy. Version it so a classification change can be separated from actual shelf movement.

Give Products, Listings, and Offers Their Own Keys

Product identity describes the item, while an offer describes how a retailer or seller presents it for sale. Use source identifiers with their namespaces, preserve the visible brand and model, and record size or pack count when it changes what the customer receives. The Schema.org GTIN property documents a product identifier that can support joins when it is present and validated.

For an approved page that loads model or pack attributes on selection, use a cloud browser for catalog capture. Use Scrapeless pricing to budget those enrichment visits separately from category discovery.

Keep product groups separate from their variants using the relationship illustrated by the ProductGroup vocabulary. A retailer's model family URL can expose multiple variants. Keep the offered variant and seller on the observation so the analyst can choose a consistent level for comparisons.

Start Scraping with Scrapeless

Power up your web scraping and automation workflow with Scrapeless!
Sign up today and get $5 in free credit — no credit card required.

Claim your free credit now in the Scrapeless Dashboard.

Resolve Pack and Variant Differences

A match should record what justified the join. Use validated identifiers where the pack and variant agree. A brand and manufacturer model can be useful when no universal identifier is available. Title similarity creates a candidate and needs corroboration when product attributes differ.

For the headset example, the offers can belong to one model family for a breadth report and still be separate pack records for pricing. Keep the charging case attribute and match confidence in the dataset so the report can support either comparison.

Table One row represents
Product variant A resolved model and option combination
Retailer listing A retailer's source-scoped listing identity
Offer observation An offer for a variant from a seller in a market at capture time
Category run Observed scope and completeness for a retailer category
Match decision A versioned mapping supported by recorded attributes

Report Overlap With a Coverage Flag

A useful overlap metric compares matched products inside comparable categories and scopes. Show the counts of matched, unresolved, and source-only products alongside the overlap percentage. If one retailer's scan covers only the first category page, mark that comparison partial.

If an analyst adds a price monitoring workflow later, join it to the matched variant or pack. A product-family match that works for breadth can still be too coarse for comparing offers.

Use category presence and availability as separate metrics. A listed item can be out of stock and still count toward listed breadth. Reserve delisting events for a defined rule based on complete coverage and, where available, a follow-up observation. The Etsy product extraction workflow provides a related example of preserving source identifiers before downstream normalization.

Conclusion

Give merchandising a count it can explain. Report the match grain, observed scope, and unresolved items alongside overlap, and preserve the listing evidence for disputes about individual products.


Ready to Build Your Assortment Dataset?

Join the community on Discord or Telegram to talk with developers building assortment analytics workflows. Create an account in the Scrapeless Dashboard to get started.


FAQ

Q: Should every product URL count as a separate assortment item?

Count at the product grain defined for the report. Variant URLs and duplicate placements can describe the same product or family.

Q: When does an absent item count as delisted?

A delisting decision needs comparable and sufficiently complete coverage. Record absence from the observed scope until the evidence meets that rule.

Q: Is a proxy required for assortment monitoring?

A permitted regional route helps when the catalog depends on the visitor market. A local catalog with an approved feed may use its usual access method.

Q: What if the category page changes or shows a challenge?

Record the affected coverage as incomplete. Confirm approved access and validate the selector and category mapping before using the next run for metrics.

Q: Can this run without an AI agent?

A scheduler and deterministic match rules can run the core pipeline. Use bounded per-host concurrency and send ambiguous matches to review.

Q: Can this dataset use any public listing?

Check the source terms, permissions, and applicable law. Use permitted discovery routes and ask counsel about reuse where needed.

At Scrapeless, we only access publicly available data while strictly complying with applicable laws, regulations, and website privacy policies. The content in this blog is for demonstration purposes only and does not involve any illegal or infringing activities. We make no guarantees and disclaim all liability for the use of information from this blog or third-party links. Before engaging in any scraping activities, consult your legal advisor and review the target website's terms of service or obtain the necessary permissions.

Most Popular Articles

Catalogue