🇮🇪 Tesco Ireland Example solution JavaScript /catalog API

Tesco Ireland vs Tesco GB: comparing grocery prices with two catalog API calls

This compares prices between Tesco Ireland and Tesco Great Britain by pulling both supermarket catalogs via Pepesto's /catalog endpoint. The script matches products by food category and shows which market is cheaper — reporting figures in both EUR and GBP.

Run this yourself

$ PEPESTO_API_KEY=your_key node tesco-ie-vs-gb-price-gap.js

Full script: tesco-ie-vs-gb-price-gap.js. You'll need an API key to run it — get one here.

Getting started

If you have already checked out the GitHub repository:

bash
export PEPESTO_API_KEY=your_key_here
node tesco-ie-vs-gb-price-gap.js

The first call — fetching both catalogs in parallel

The /catalog endpoint returns a full snapshot of a supermarket's product catalog, with prices, quantities, and entity names that are consistent across markets. Running both requests in parallel cuts the wait time in half.

js
async function fetchCatalog(domain) {
  const res = await fetch('https://s.pepesto.com/api/catalog', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${process.env.PEPESTO_API_KEY}`,
    },
    body: JSON.stringify({ supermarket_domain: domain }),
  });
  const data = await res.json();
  return data.parsed_products;
}

// Fetch both in parallel
const [ieProducts, gbProducts] = await Promise.all([
  fetchCatalog('tesco.ie'),
  fetchCatalog('tesco.com'),
]);

Each catalog entry has an entity_name — a normalised product category. Matching on entity_name lets me compare equivalent products even when the brand names differ:

json — tesco.ie catalog (excerpt)
{
  "parsed_products": {
    "https://www.tesco.ie/groceries/en-IE/products/250000335": {
      "entity_name": "Milk",
      "names": { "en": "Avonmore Milk 500Ml" },
      "price": 85,
      "currency": "EUR",
      "price_per_meausure_unit": "1.70 EUR / litre",
      "quantity_str": "500ml"
    },
    "https://www.tesco.ie/groceries/en-IE/products/250004694": {
      "entity_name": "Milk",
      "names": { "en": "Avonmore Milk 2 Litre" },
      "price": 269,
      "currency": "EUR",
      "quantity_str": "2l"
    },
    "https://www.tesco.ie/groceries/en-IE/products/250006087": {
      "entity_name": "Whipped cream",
      "names": { "en": "Avonmore Whipped Cream" },
      "price": 279,
      "currency": "EUR",
      "price_per_meausure_unit": "7.97 EUR / litre",
      "quantity_str": "350ml"
    }
  }
}
json — tesco.com catalog (excerpt)
{
  "parsed_products": {
    "https://www.tesco.com/groceries/en-GB/products/250065690": {
      "entity_name": "Mozzarella cheese",
      "names": { "en": "Galbani Maxi Italian Mozzarella Cheese 250g" },
      "price": 295,
      "currency": "GBP",
      "quantity_str": "250g"
    },
    "https://www.tesco.com/groceries/en-GB/products/250167878": {
      "entity_name": "Ketchup",
      "names": { "en": "Heinz Top Down Squeezy Tomato Ketchup Sauce" },
      "price": 300,
      "price_per_meausure_unit": "0.65 / 100g",
      "quantity_str": "460g"
    },
    "https://www.tesco.com/groceries/en-GB/products/250044899": {
      "entity_name": "Honey",
      "names": { "en": "Tesco Organic Set Honey 340g" },
      "price": 335,
      "price_per_meausure_unit": "£0.98/100g",
      "quantity_str": "340g"
    }
  }
}

What the data showed

143 shared product categories matched across the two catalogs (simple matching against the product names). EUR/GBP have been close to parity, so the cent/pence prices are directly comparable for this exercise.

The pattern was clear: dairy is consistently cheaper in Ireland — Avonmore Milk 2 Litre at €2.69 in IE vs the closest Tesco GB equivalent at £2.89. For fresh produce, GB came out ahead. The biggest gap was in branded condiments: Heinz Ketchup 460g runs 300p in GB, €3.49 in IE. Tesco Organic Set Honey 340g showed a 40p gap in GB's favour. Galbani Maxi Italian Mozzarella Cheese 250g was nearly identical (£2.95 GB vs €3.25 IE) — effectively parity.

Next steps

A single snapshot only tells part of the story. Run this weekly for three months and chart the price drift. Promotional pricing skews results — the tesco.ie catalog had 23 items with promo_deadline_yyyy_mm_dd set, meaning those prices are temporary. Filtering those out gives a better like-for-like baseline.

The result

Two catalog API calls, 143 matched categories, and a category-level scorecard. Dairy cheaper in Ireland, branded goods cheaper in GB — the overall difference depends on your basket. Normalise by price_per_meausure_unit to eliminate pack-size distortion in the comparison.

What else you could do?

Extend to Lidl IE vs Lidl GB, where own-brand dominance makes the comparison cleaner. Add a normalisation step that converts everything to price-per-100g or price-per-litre before comparing, eliminating pack size distortion. Run the diff weekly and email items where the price gap changed by more than 10% — "these 5 items shifted this week" is more actionable than a full catalog comparison.

Links

Ready to build?

Start comparing Tesco IE and Tesco GB prices

Pull both Tesco Ireland and Tesco GB catalogs and compare prices on the same products across borders.

27supermarkets 13countries 1schema Instant access