USE CASE

Product Matching Software: Match Two Product Lists by EAN, SKU or Title

Upload your product list, scrape the competitor shops, and Scrapewise links each competitor row to your product. A shared EAN or ID wins first. Rows without one are matched on text columns such as title, brand and size, then on product pictures. Unsure pairs wait for your review.

THE PROBLEM

Why Matching Two Product Lists Is Hard

  1. 01

    Most shops show no EAN

    Many shops do not publish a barcode, and some publish the code of a different pack. Matching on EAN alone finds the easy part of the catalogue and quietly misses the rest.

  2. 02

    Every shop writes its own title

    "Kaerahelbed 500g", "Oat flakes whole grain 0.5 kg" and "Rolled oats 500 g bag" are the same product. A VLOOKUP on the title finds none of them.

  3. 03

    Pack sizes look alike

    A 500 g bag and a 1 kg bag share the brand, the title and often the picture. Compared as one product, your price gap is wrong before anyone reads it.

  4. 04

    Nobody sees the unsure matches

    A spreadsheet formula gives a match or nothing. It never says "I am not sure", so bad pairs reach the pricing decision without a second look.

4 steps

Scrape, clean, match and a ready competitor comparison, in one place

35

Ready data APIs for marketplaces and search, plus AI scrapers for any other shop

5

Free requests on every new account, no card needed

From Scraped Pages to a Ready Competitor Comparison in 4 Steps

Matching is step 3 of 4. It only works well when the rows are scraped and cleaned first, and it is only useful when it ends in a comparison you can act on.

  1. Scrape

    Point Scrapewise at the competitor shops: a ready data API for marketplaces and search, or an AI scraper for any other site. Scrape a whole category, a link list or a sitemap, on demand or on a schedule.

  2. Clean

    Group rules turn raw text into comparable numbers: the price as a number, the pack size in grams, price per kg or per litre, and other currencies converted to EUR. Duplicate product pages in a run are kept once.

  3. Match

    Upload your product list as the master file and connect the columns that mean the same thing. Same EAN or ID matches first, then text columns such as title, brand and size, then product pictures. Unsure pairs go to review.

  4. Ready competitor analysis

    You get your product next to each matched competitor row, with price, price per unit and the reason it matched. Export it as CSV or Excel, read it by REST API, or hand it to an AI agent over MCP.

What the Matcher Looks At, in This Order

Each signal has a blind spot on its own. The matcher uses the strongest one a row actually has, and every matched row shows which one it was.

1. IDs and codes: EAN, GTIN, UPC, SKU, model code

When both rows carry the same EAN or ID, that match wins over any text match. It is the most reliable signal, but most shops do not publish it, so it never covers the whole list.

  • ean
  • gtin
  • upc
  • sku
  • model

2. Text columns: title, brand, size, variant

You choose which of your columns connect to which competitor columns. The matcher scores the pair on those columns and decides: matched, to review or not matched. Size and variant in the text keep a 500 g bag apart from a 1 kg bag.

  • title
  • brand
  • size
  • variant

3. Pictures

For rows where the text is not enough, the product pictures are compared. Pictures catch translated or rewritten titles. They cannot tell two pack sizes with the same photo apart, so a size check in the text still matters.

  • image_url

Every Pair Ends in One of Three Places

The matcher does not hide its doubt. Each competitor row lands in one of three groups, and you can see why.

  • Matched

    The pair is linked to your product. A "Why matched" label shows the basis: ID, code, text, picture or approved in review. A pair you approved by hand can be unmatched again, and it goes back to review.

  • To review

    The evidence points one way but is not strong enough. The two rows are shown side by side, and a person approves or rejects the pair before it reaches a price decision.

  • Not matched

    Nothing is close enough. These rows stay visible in their own tab with a count, so nothing disappears from the comparison without you seeing it.

What You Send, What You Get Back

You bring your own product list and the shops to compare against. You get competitor rows linked to your products.

You give
  • Your product list (master file)required

    CSV or Excel upload: your SKU, title, brand, size and any EAN or model code you have.

    OAT-500, Rolled oat flakes 500 g, 4740000000017
  • Shops to compare againstrequired

    Any shop or marketplace: a category page, a search, a link list or a sitemap.

    shop-a.exampleshop-b.examplemarketplace.example
  • EAN or model code, if you have itoptional

    Used first when both sides have it. Matching still works without it.

    4740000000017
  • Refresh scheduleoptional
    • Daily
    • Weekly
    • On demand

    How often the competitor shops are scraped again.

You get

One row per matched competitor product, 8 columns each

  • your_sku
  • your_title
  • competitor_shop
  • competitor_url
  • competitor_title
  • price
  • price_per_kg
  • why_matched

CSV or Excel export, REST API, or MCP for AI agents.

Before and After: Three Shops, One Product List

Example rows in the style of a grocery price comparison (illustrative data, not a customer's). Before: what the shops show. After: what you get once the rows are cleaned and matched to your list.

Your product (master)Competitor row as scraped (before)Matched and cleaned (after)Why matched
OAT-500 · Rolled oat flakes 500 g · EAN 4740000000017Shop A: "KAERAHELBED 500G -20%!" · 1,29 € · EAN 4740000000017Matched · EUR 1.29 · EUR 2.58 per kgID · EAN
OAT-500 · Rolled oat flakes 500 gShop B: "Oat flakes whole grain 0.5 kg" · 1.19 EUR · no EANMatched · EUR 1.19 · EUR 2.38 per kgText
OAT-500 · Rolled oat flakes 500 gShop C: "Oat flakes" · 2.09 EUR · no size, no EANTo review · size unknown, no per-kg priceText, unsure
YOG-400 · Greek yogurt 10% 400 gShop A: "Kreeka jogurt 10% 400g" · 2,15 €Matched · EUR 2.15 · EUR 5.38 per kgText + picture
OAT-500 · Rolled oat flakes 500 gShop B: "Oat flakes 1 kg family pack" · 2.19 EURNot matched · other pack size · EUR 2.19 per kg–
COMPARE

Match in a Spreadsheet, Build a Matcher, or Use Scrapewise

Feature
Spreadsheet or in-house matcher
Scrapewise
Rows without an EAN
VLOOKUP finds nothing; fuzzy formulas need constant tuning
Matched on text columns, then pictures
Unsure pairs
A formula matches or it does not; doubt is invisible
Sent to review, shown side by side
Why a row matched
Not recorded
"Why matched" label on every matched row
Competitor data
A separate scraping project with proxies and blocks
Included: data APIs and AI scrapers in the same account
Pack sizes and currencies
Manual columns per shop
Group rules: price per kg or litre, EUR conversion
Cost model
Engineer time and servers
Pay as you go from a prepaid balance; 5 free requests to test
RESULT

What You Get Instead of a Matching Project

A comparison, not raw pages

A comparison, not raw pages

Competitor rows arrive linked to your products, cleaned to the same units, ready for a price gap per product.

Doubt you can see

Doubt you can see

Unsure pairs wait in review and every matched row says why it matched, so a wrong pair is easy to find.

Your list stays the master

Your list stays the master

You upload your own product file once. Competitor rows are linked to it, so the comparison always follows your catalogue.

THE SHORT ANSWER

Product Matching: The Short Answers

How do I match two product lists?

How do I match two product lists?

Upload your product list as the master file, scrape or upload the second list, and connect the columns that mean the same thing, such as EAN to EAN and title to title. Scrapewise links each row to your product, shows why it matched, and sends unsure pairs to review.

How do I match products by EAN, UPC or SKU?

How do I match products by EAN, UPC or SKU?

Connect your EAN, UPC or SKU column to the same code on the competitor side. When both rows carry the same code, that match wins over any text match. Rows without a code are not dropped: they are matched on title, brand and size, then on product pictures.

Can I match products without an EAN?

Can I match products without an EAN?

Yes. Most shops publish no barcode, so the matcher scores text columns you choose, such as title, brand, size and variant, and compares product pictures where the text is not enough. Each pair ends as matched, to review or not matched, so you check the unsure ones yourself.

How do I automate product mapping from CSV titles and SKUs?

How do I automate product mapping from CSV titles and SKUs?

Upload the CSV with your titles and SKUs as the master file, then schedule the competitor scrapers. Each run is cleaned by the same group rules and matched to the same master, so the mapping is refreshed without manual work. Export the result as CSV, Excel or by REST API.

Upload Your Catalogue, Get a Matched Comparison

Start with your own product list and one competitor shop. Every new account gets 5 free requests, and after that you pay as you go from a prepaid balance. The same scrape, clean and match flow runs bebo.ee, a grocery price comparison built on Scrapewise. bebo.ee compares 12 grocery e-shops: more than 130,000 products, and about 36,000 of them are matched across shops so their prices can be compared.

FAQ

Product Matching FAQs

How matching works in Scrapewise, what you need to start, and what it does not do.

Product matching software finds the rows in two product lists that are the same physical product, even when the title, SKU and pictures differ. It is the step that makes a competitor price comparison possible. Scrapewise matches on the same EAN or ID first, then on the text columns you choose, then on product pictures, and keeps unsure pairs for review.