You open "Category X_Prices_FINAL_v3.xlsx" on a Monday. Someone pasted in competitor prices last week. One shop looks 8% cheaper than you. Before you cut your price, you need to know if that gap is real.
A competitor price comparison only works when both sides describe the same thing. Check four points before you trust a gap: the same product and variant, the same quantity (or a unit price), the same tax basis (VAT included or not) and the same delivery terms (item price or delivered price). Miss one and the "cheaper" competitor can turn out dearer.
This guide walks through each check with real numbers. On 12 November 2026 we read 37 shop offers for two products on idealo.de. Adding shipping changed the rank of 26 of the 37 offers.

What is a like-for-like competitor price comparison?
A like-for-like competitor price comparison puts your price next to a competitor's price for the identical product, in the same variant, the same quantity, with the same taxes and the same delivery terms. Only then does the gap show what a shopper would actually save. Anything else compares two different offers.
When a comparison goes wrong, it's usually on one of these points, not on the arithmetic. Lengow's guide to SKU comparison puts it plainly: "Accurate price comparison is only valuable when the products being compared are truly identical." Price2Spy's shipping guide (October 2026) adds the second half: "The goal is to compare equivalent offers, accounting for the total customer cost and relevant delivery conditions."
Here are the four checks as a table. Use it as the header row of your comparison file.
| Check | Question to ask | What goes wrong if you skip it |
|---|---|---|
| Product and variant | Is it the same model, colour, size and edition? | You compare a 2-pack with a single, or last year's model with this year's |
| Quantity | Is the pack size the same? If not, is there a unit price? | A bigger pack looks dearer when it is cheaper per kg or litre |
| Tax basis | Are both prices with VAT, or both without? | A B2B shop showing net prices looks cheaper by the whole VAT rate |
| Delivery | Are you comparing item prices or delivered prices? | A free-shipping shop ranks behind a shop that charges €5 delivery |
What did 37 real offers on idealo.de show about shipping?
Shipping can change who is cheapest. In our check of two electric toothbrushes on idealo.de on 12 November 2026, 18 of 37 offers charged shipping (€2.99 to €6.99). Sorting by delivered price instead of item price changed the rank of 26 of the 37 offers.
We searched five EAN codes with the ScrapeWise idealo offers tool. Two had an idealo page. For each, we read up to the 20 cheapest offers on the page, each with the item price, the shipping cost and the total price ("inkl. Versand"). We don't name the shops.
| Product (idealo.de, 12 Nov 2026) | Offers read | Offers charging shipping | Shipping range | Offers whose rank changed |
|---|---|---|---|---|
| Philips Sonicare 5300 HX7101/02 | 20 (of 36 listed) | 11 | €2.99–€6.99 | 18 of 20 |
| Philips Sonicare DiamondClean 9000 HX9914/54 | 17 | 7 | €3.99–€6.95 | 8 of 17 |
| Both | 37 | 18 | €2.99–€6.99 | 26 of 37 |
Three details from the Sonicare 5300 page show why this matters:
- A €4.96 gap became €0.01. The lowest item price was €59.99, almost €5 below the next shop at €64.95. But the cheapest shop charged €4.95 shipping and the second shipped free. Delivered, it was €64.94 against €64.95.
- Third place fell to sixth. One shop also listed €64.95, but added €6.99 shipping. Delivered at €71.94, it dropped from 3rd to 6th.
- Free shipping moved two shops up. An offer at €68.99 with free delivery went from 11th to 5th. One at €68.20 went from 9th to 4th.
On the DiamondClean 9000 page, the cheapest shop stayed cheapest (€174.75 + €4.99 = €179.74). But the second-lowest item price, €181.00, came with €5.90 shipping. At €186.90 delivered it fell from 2nd to 6th.

Two products are a small sample, so read these as a worked example, not a market statistic. We also took idealo's grouping as given. Three of the 20 offers on the Sonicare 5300 page are titled HX7101/01, not /02. Leave those out and 15 of the remaining 17 offers still change rank. The lesson holds anyway. If your file holds only item prices, the shop you think is cheapest may not be the one shoppers pick.
Should you compare prices with or without shipping?
Track both, in separate columns. The item price shows how shops set prices. The delivered price shows what a shopper pays for one order. For low-value products, small baskets and shops with free-shipping thresholds, the delivered price is often closer to what the shopper compares.
Comparison sites don't all show shipping the same way, which is one more reason to keep both. idealo.de shows each offer with a total "inkl. Versand", as in our data above. Prisjakt in Norway and Prisjagt in Denmark list prices excluding shipping by default, as we noted in our price index guide. So the same kind of offer can rank differently on idealo.de and on Prisjakt.
A few rules make delivered prices comparable:
- Fix the basket. Shipping for one item and shipping for a €100 basket are different numbers. Write down which one you use.
- Note thresholds. "Free delivery over €49" means the delivered price depends on what else is in the basket. Record the threshold, not only the fee.
- Flag unknowns. Price2Spy's advice is sound: "If the exact shipping cost cannot be established, it is better to flag it as unknown or conditional than to use an unsupported estimate."
- Use the same delivery country. A shop that ships to Germany and Austria may charge different fees in each.
How do you handle VAT in a competitor price comparison?
Compare consumer prices with VAT included on both sides, because that is what EU and UK shoppers see. Directive 98/6/EC defines the selling price as the final price "including VAT and all other taxes". The risk comes from B2B shops showing net prices and from cross-border comparisons where VAT rates differ.
The definitions in Article 2 of the Price Indication Directive say the selling price is "the final price for a unit of the product, or a given quantity of the product, including VAT and all other taxes". The UK's Price Marking Order guidance (September 2025) uses the same wording for UK shops. So two consumer shops in the same country already compare like for like on tax.
Watch three cases:
- B2B and wholesale shops. Many show prices without VAT, sometimes with a toggle. Add a column "VAT included: yes/no" and convert before you compare. Price2Spy warns against "comparing tax-inclusive prices with tax-exclusive prices without accounting for the difference."
- Cross-border shops. If you sell in Sweden and compare with a German shop, the shelf prices carry different VAT rates. Decide whether you compare what the shopper pays (gross) or what the shop keeps (net), and use one basis for the whole file.
- Deposits. Bottle deposits (pant, Pfand) are excluded from the UK selling price definition. Leave them out of both sides, or include them on both.
How do you compare competitor prices across different pack sizes?
Convert both sides to a unit price: price per kilogram, litre, metre or piece. The Price Indication Directive defines the unit price as the final price, including VAT, "for one kilogramme, one litre, one metre" or another common unit. Then compare unit prices, not pack prices.
The UK guidance explains the purpose in one line: "the purpose of the unit price is to enable consumers to compare the price of products per unit of measure". Shops often show the unit price already, so you can collect it as its own field.
Here is how a pack-size gap can reverse. This is an illustrative example, not real data:
| Your shop | Competitor | |
|---|---|---|
| Pack | 4 × 250 ml (1.0 L) | 6 × 250 ml (1.5 L) |
| Pack price, VAT incl. | €7.96 | €10.74 |
| Price per litre | €7.96 | €7.16 |
| Who looks cheaper by pack price | You, by €2.78 | |
| Who is cheaper per litre | Competitor, 10% below your €7.96 |
Your pack is €2.78 cheaper, yet you are 11.2% dearer per litre (€7.96 ÷ €7.16 × 100 = 111.2). Shoppers who look at the shelf label see that.
We wrote a full walk-through of this problem, including multipacks and "Big pack" titles, in our guide to price per unit comparison across pack sizes.
How do you handle variants and different EAN codes?
Match on the exact variant: model number, colour, size, edition and bundle contents. Use the EAN or GTIN when both sides carry it, then check title, brand and size. Treat a close-but-not-identical product as a separate line, not a match, or your gap will be wrong.
Variants catch teams in two ways. A competitor may list a "starter set" with an extra brush head under almost the same title. Or a fashion retailer prices one colour lower to clear stock. Both look like a price gap but aren't one.
EAN codes help, but they aren't perfect. In our idealo.de check, we searched the DiamondClean 9000 by the EAN 8710103938040. idealo found the right product page, but the EAN it showed on that page was a different one: 8182171047199. One product can carry more than one code.
Titles on one product page don't always agree either. On the Sonicare 5300 page, three of the 20 offers were titled HX7101/01, a different model code from the /02 we searched. On the DiamondClean 9000 page, some titles said "Doppelpack" or "2er-Set" and one said "1 St". A comparison that only reads prices would treat all of them as the same item. Matching on EAN first and then on title, brand and size catches these cases. Our guide to product matching for price monitoring covers the methods in more depth.
Not every product will be on every site, either. Three of the five EANs we searched had no idealo.de page at all. A missing match is a gap in coverage, not a price of zero. Leave it blank and count it.
What should a like-for-like comparison file look like?
One row per product and competitor, with the raw fields kept apart: item price, VAT basis, shipping, delivered price, pack quantity, unit price, match basis and the date checked. Keep the raw values and compute gaps in separate columns, so anyone can see how each number was made.

The columns that matter:
| Column | Example value | Why it's there |
|---|---|---|
| Your SKU and EAN | 4006-001 / EAN | Ties every row to your product list |
| Competitor and URL | Shop B, product page | So anyone can open the source |
| Match basis | EAN / title + size / review | Shows how sure the match is |
| Item price, VAT incl. | €64.95 | The price as the shop shows it |
| VAT included | yes | Flags B2B net prices |
| Shipping (1 item) | €6.99 | Fee for a one-item order |
| Delivered price | €71.94 | Item price + shipping |
| Pack quantity and unit | 1.5 L | Needed for the unit price |
| Unit price | €7.16 / L | The fair comparison across packs |
| Checked at | 12 Nov 2026 | Prices change; stale rows mislead |
In my experience, the hard part isn't the formula. It's the process around it. Files are emailed back and forth, several people add their input, and days pass before anyone can act on the numbers. In Estonia, category managers often have assistants who collect competitor prices by hand. A file with these columns at least makes each row checkable by the next person.
Should you use a competitor price comparison tool or a spreadsheet?
A spreadsheet works for a few dozen products checked now and then. Past that, a tool saves the copy-paste and keeps the dates honest. Whichever you pick, check it collects shipping, VAT basis and pack size as separate fields, and that it matches products by EAN and attributes, not by title alone.
| Option | Good for | Watch out for |
|---|---|---|
| Spreadsheet, filled by hand | Up to a few dozen products, checked now and then | Hours of copy-paste, prices out of date by the time the file is shared |
| Comparison sites (idealo, Prisjakt, PriceRunner) | Checking one product across many shops | Only covers shops listed there; shipping shown differently per site |
| Price monitoring software (Price2Spy, Lengow, ScrapeWise and others) | Hundreds or thousands of products on a schedule | Check how each tool matches products and whether it stores shipping and unit price |
| Managed service | Teams that want a finished, matched table | Higher monthly cost; you depend on the provider's setup |
ScrapeWise publishes this blog, so treat it as one option among these. It collects the fields you define (item price, shipping, stock, unit price) from the competitor pages you list, at most once a day. It can match the rows to your product list by EAN first, then title, brand and size, then pictures, with unsure pairs sent to review. For a quick check of two pages, the free competitor price checker reads both live and won't report a gap when the brand or model codes disagree.
With every competitor's price next to yours each morning, one overnight drop doesn't need to cause panic.
What should you do next?
Pick ten of your best-selling products and three competitors. Fill in the columns above for each pair, including shipping and pack size. See how many gaps survive. If the delivered-price ranking differs from the item-price ranking, as it did for 26 of 37 offers in our check, your current file is telling you the wrong story.
When you want that table refreshed without the copy-paste, set up competitor price tracking on your own list. You can run your own competitor URLs with shipping and unit price as fields: the first 5 requests are free, no card needed.
Paste a competitor URL and start tracking prices
The shops you name, as a structured table once a day at most. No code, pay per page, the first 5 requests are free.
Not ready to sign up? See 40 rows of real Google Shopping price data →
5 free requests no credit card · pay per page, no monthly plan · book a 15-min call →