Skip to main content
Glama

BasketWatch

Server Details

Irish grocery prices at Aldi, Tesco, SuperValu and Dunnes: compare, baskets, offers, history

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

Score is being calculated.

Available Tools

17 tools
check_creditsYour credit balance
Read-onlyIdempotent
Inspect

How many BasketWatch credits the signed-in account has left. Free to call. One credit is one record returned.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
planNo
meteredNoTrue when the account pays per record from credits
credits_remainingNoOne credit is one record returned
compare_price_across_storesCompare a product across supermarkets
Read-onlyIdempotent
Inspect

Raw per-store search results for a product name at all four supermarkets: every matching line at each store, including other pack sizes, without matching the same product across stores. Returns a dict keyed by store, with up to limit_per_store matching products per store.

Args:
    query: product-name substring (e.g. "heinz baked beans 415g").
    limit_per_store: how many matches per store (default 5).
ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
limit_per_storeNo
compare_pricesWhere is a product cheapest
Read-onlyIdempotent
Inspect

Find where a product is cheapest right now. Matches the same product at Aldi, Tesco, SuperValu and Dunnes Stores and returns each store's current price side by side, with unit prices, offers and Tesco Clubcard prices. Free: no BasketWatch account needed.

Args:
    query: the product, e.g. "heinz ketchup" or "kerrygold butter 454g".
    limit: how many matched products to return (default 5, max 20).

Returns {"as_of", "query", "matches": [{"product", "pack", "prices":
{store: {name, price, unit_price, unit_basis, offer_text, was_price,
clubcard_price, url}}, "cheapest_store"}]}. A store missing from "prices"
does not stock that product. One product per call.
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
as_ofNoPrice date, YYYY-MM-DD
queryNo
matchesNo
find_productsFind products by ingredients and nutrition
Read-onlyIdempotent
Inspect

Find products that meet ingredient, nutrition, alcohol or offer conditions, optionally sorted. For questions like "biscuits without palm oil", "nut-free snacks at Tesco", "vegan chocolate", "cereal with the least sugar", "high protein yoghurt", "bread with the fewest ingredients", "alcohol-free beer", "low salt soup" or "cheapest olive oil at Aldi". Every product comes with its nutrition, ingredients, ingredient count and today's price. Fibre and saturated fat are not recorded.

Ingredient words. exclude_ingredients are ingredients a product is free
of; include_ingredients ones it contains. These words are expanded to the
label terms they cover: palm oil, nuts (includes peanuts), peanuts, gluten,
milk (dairy), eggs, soya, sesame, mustard, celery, fish, crustaceans,
molluscs, shellfish, sulphites, lupin, gelatine, alcohol, added sugar,
sweeteners, pork, meat, vegetarian (meat, fish, gelatine and other
animal-derived ingredients) and vegan (vegetarian plus milk, eggs, honey and
other animal products). Any other word is matched as written, e.g.
"coconut" or "oats".

With no store, results alternate across the stores (each store's best
match, then each store's next), and matched_by_store gives each store's
full count.

A product whose ingredient list or nutrition is not on record, or whose
ingredient list on record is incomplete, is left out, never assumed to
pass: left_out_unknown counts them, left_out_by_reason gives the reasons,
and caveats lists known gaps (Aldi's ingredient lists are often cut short,
so Aldi products are not offered as free from anything). Claims printed in
a product's NAME, such as "gluten free", "lactose free", "alcohol free" or
"vegan", are matched through query; exclude_ingredients also checks the
ingredients. Alcohol strength is recorded for most SuperValu and Dunnes
drinks but few at Tesco and Aldi; "alcohol free" and "0.0" in query match
drinks named that way.

Answers come from the ingredient lists and nutrition the retailers publish.
"Free from" means none of the listed ingredients names it; not every
"may contain" warning is covered. Results carry a note that this is information
only. Each product returned costs one credit.

Args:
    query: product words, e.g. "biscuits", "crisps", "dark chocolate".
        Needed unless category is given.
    store: aldi, tesco, supervalu or dunnes. Leave out to search all four.
    category: an aisle name to narrow by, e.g. "Breakfast Cereals".
    exclude_ingredients: ingredients a product has to be free of, e.g.
        ["palm oil"], ["nuts", "sesame"], ["vegan"].
    include_ingredients: e.g. ["oats"].
    max_sugar_g, max_salt_g, max_fat_g, max_carbs_g, min_protein_g:
        grams per 100g or 100ml, e.g. max_sugar_g=5.
    max_kcal: kilocalories per 100g or 100ml.
    max_abv, min_abv: alcohol by volume, percent.
    max_ingredients: at most this many listed ingredients, e.g. 5. A
        compound ingredient's own bracketed list counts as one.
    on_offer: only products on promotion or with a Clubcard price.
    sort_by: price, unit_price (per kg or litre), sugar, salt, fat, carbs,
        protein, kcal, abv or ingredients (fewest first). Products that
        are the kind of thing searched for rank ahead of name-only matches
        (name_match_only), so "chocolate" sorted by price does not lead
        with chocolate-flavour popcorn.
    descending: true for highest first, e.g. most protein.
    limit: most products to return (default 10, max 50).
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
storeNo
max_abvNo
min_abvNo
sort_byNo
categoryNo
max_kcalNo
on_offerNo
max_fat_gNo
descendingNo
max_salt_gNo
max_carbs_gNo
max_sugar_gNo
min_protein_gNo
max_ingredientsNo
exclude_ingredientsNo
include_ingredientsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
as_ofNoPrice date, YYYY-MM-DD
caveatsNoLimits of this answer: pass them on
matchedNoProducts that passed every filter
productsNo
consideredNoProducts the search looked at
left_out_unknownNoLeft out because the ingredients, nutrition or value a filter or sort needs is not on record for them, or the ingredient list is incomplete
matched_by_storeNoHow many products passed at each store (more than are returned)
left_out_by_storeNo
left_out_by_reasonNoWhy products were left out, with counts
get_price_historyPrice history
Read-onlyIdempotent
Inspect

A product's recorded daily prices over a date range. BasketWatch has kept every night's price at all four supermarkets since May 2026.

Takes product ids (store-prefixed, as returned in product results) or a
query; with a query, the closest matching products are looked up first. A
range returns one row per product per day, and each row costs one credit;
with from_date equal to to_date, one day's price is returned.

Args:
    product_ids: e.g. ["tesco:300793546", "dunnes:100873410"]; each id's
        store is taken from the id.
    query: product name words, used when no product_ids are given.
    store: aldi, tesco, supervalu or dunnes, to narrow a query. Leave it
        out to look in all four.
    from_date: first day, YYYY-MM-DD. Defaults to 30 days before to_date.
    to_date: last day, YYYY-MM-DD. Defaults to today.
    limit: most rows to return in total (default 60).

Returns one row per product per day: id, name, store, scrape_date, price,
unit_price, unit_basis, clubcard_price, offer_text, was_price.
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
storeNo
to_dateNo
from_dateNo
product_idsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
get_product_detailsNutrition, ingredients and product details
Read-onlyIdempotent
Inspect

Nutrition per 100g or 100ml (energy, fat, carbohydrate, sugars, protein, salt), the ingredients list as printed (allergens included), how many ingredients it lists, alcohol strength, pack size, description and today's price, for particular products.

Products are looked up by product id (store-prefixed, as returned in
product results), by the retailer's own item numbers (skus with store, as
printed on its receipts), or by name (query). ingredients_incomplete marks
an ingredient list on record that is cut short, which cannot show that an
ingredient is absent. Results carry a note that nutrition and ingredients
are for information only. Each product returned costs one credit.

Args:
    query: product name words, e.g. "kellogg's corn flakes".
    product_ids: e.g. ["tesco:300793546", "dunnes:100873410"], up to 50.
    skus: the store's own item numbers, e.g. ["100873410"], up to 50;
        needs store. An Aldi article number can return several variants.
    store: aldi, tesco, supervalu or dunnes: required with skus, narrows a
        query; leave out for all four.
    limit: most products to return for a query (default 5, max 50).
ParametersJSON Schema
NameRequiredDescriptionDefault
skusNo
limitNo
queryNo
storeNo
product_idsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
productsNo
get_promotionsCurrent promotions at a supermarket
Read-onlyIdempotent
Inspect

List products currently on promotion at a given supermarket.

Returns offer label (e.g. "3 for €5", "SAVE €0.75"), was-price,
validity window, and where applicable Tesco Clubcard prices,
SuperValu Real Rewards prices or Dunnes member offers.

Args:
    store: one of "tesco", "supervalu", "dunnes". (Aldi doesn't
        publish multibuy promos so isn't supported here.)
    limit: how many promotional rows to return (default 25).
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
storeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
list_productsBrowse the catalogue
Read-onlyIdempotent
Inspect

Page through a supermarket's full catalogue, with no search terms or filters.

Args:
    store: "aldi" | "tesco" | "supervalu" | "dunnes".
    limit: page size (default 100, max 200).
    offset: pagination offset.
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
storeYes
offsetNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
lookup_barcodeLook up products by barcode
Read-onlyIdempotent
Inspect

Find the products carrying one or more barcodes (GTIN, EAN or UPC) across all four Irish supermarkets in one call.

Codes are accepted exactly as printed: leading zeros, spaces and hyphens
are ignored. Needs a signed-in BasketWatch account.

Args:
    codes: one barcode, or up to 100 separated by commas
        (e.g. "5000127014084" or "5000127014084,5000157024671").
    store: optionally restrict to one of "aldi", "tesco", "supervalu",
        "dunnes".
    include_copy: also return ingredients and per-100g nutrition where
        the retailer publishes them.

Returns {"products": [...], "not_found": [...], "invalid": [...]}. Each
product row carries store, matched_barcodes, name, brand, pack_size,
price and its full barcodes list. One credit per barcode found, however
many retailers stock it; codes with no match cost nothing.
ParametersJSON Schema
NameRequiredDescriptionDefault
codesYes
storeNo
include_copyNo
newly_added_productsNewly stocked products
Read-onlyIdempotent
Inspect

Products newly listed at a supermarket within a configurable lookback window: range additions and new launches.

Args:
    store: "aldi" | "tesco" | "supervalu" | "dunnes".
    days_back: how many days back to look (default 7 = since last scrape).
    limit: how many new products to return.
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
storeYes
days_backNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
price_basketPrice a shopping list or receipt
Read-onlyIdempotent
Inspect

Price a whole shopping list, or every line of a grocery receipt (up to 100 lines in one call), at Aldi, Tesco, SuperValu and Dunnes Stores: each item matched to the same product at every store, the cheapest store for each item, each store's basket total, and a cheaper product of the same kind (often own-label) where one exists.

Each line takes name (plain words with brand and size, e.g. "avonmore fresh
milk 2l"; receipt abbreviations such as "AVNMR FRSH MLK 2L" match poorly)
and optionally sku (the retailer's item number as printed on its receipts;
the name is used when the number is not found), barcode, store, quantity,
and paid (the line total, which gives the saving against what was paid).
Irish product names say "low fat milk" for what the UK calls "semi
skimmed". Bags, deposits, discounts and totals are not products.

Returns, per line, the match and matched_by (sku, barcode or name), the
cheapest store and price, a cheaper alternative with its pack size and, for
a receipt, price_at_store_bought; then each store's total with its
items_missing, cheapest_complete_store, mix_and_match_total and not_found.
Prices are each retailer's online shelf price from the overnight
collection; in-store prices can differ. Tesco Clubcard prices are reported
separately. Each matched item costs one credit; items not found are free.

Args:
    items: e.g. [{"sku": "100685955", "name": "dunnes baked beans",
        "quantity": 2, "paid": 1.30}, {"name": "brennans wholemeal bread"}].
    store: the receipt's supermarket (aldi, tesco, supervalu or dunnes),
        used for any line that does not name its own.
ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
storeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
as_ofNoPrice date, YYYY-MM-DD
itemsNo
not_foundNoItems with no match
paid_totalNo
saving_vs_paidNo
totals_by_storeNo
mix_and_match_totalNoEach item bought at its cheapest store
tesco_clubcard_totalNoTesco total using Clubcard prices where Tesco has one
cheapest_complete_storeNoThe cheapest store among those stocking every matched item
with_alternatives_totalNoAs mix_and_match_total, taking each cheaper alternative where there is one
price_basket_over_timeWhat a basket cost on an earlier date
Read-onlyIdempotent
Inspect

How the cost of the same basket changed between two dates, at the store it was bought from: each product's price on both dates, whether it was on promotion, the basket total on each date, and the products that moved it. BasketWatch has recorded every product's price every night since May 2026. Up to 100 lines per call; each line takes name, sku (the retailer's printed item number, with the line's words in name), barcode, store and quantity.

change_pct is the change in what the basket cost (promotions included);
shelf_change_pct is regular prices only, so the gap between the two is
promotions starting or ending, not price rises. biggest_rises and
biggest_falls list the lines that moved most; pack_changed marks a product
whose pack size changed, confirmed over three days of records (a smaller
pack at the same price is a hidden rise). Lines in not_compared were not
found, or not sold on one of the dates.

Each product compared costs one credit.

Args:
    items: e.g. [{"sku": "100858349", "quantity": 2}, {"name": "brennans wholemeal bread"}].
    from_date: the earlier date, YYYY-MM-DD, e.g. "2026-08-06".
    to_date: the later date, YYYY-MM-DD; defaults to today.
    store: the receipt's supermarket (aldi, tesco, supervalu or dunnes).
ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYes
storeNo
to_dateNo
from_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
itemsNo
changeNototal_now minus total_then, euro
to_dateNo
from_dateNo
total_nowNo
change_pctNo
total_thenNo
not_comparedNoLines not found, or not sold on one date
biggest_fallsNo
biggest_risesNo
items_unchangedNo
shelf_total_nowNo
shelf_change_pctNoChange in regular prices only: real price moves, without promotions
shelf_total_thenNo
price_movementsPrice movements in a category
Read-onlyIdempotent
Inspect

How a whole category's prices moved between two dates, in one call: the biggest regular-price rises and falls, promotions starting and ending, Tesco Clubcard price changes and pack-size changes, kept apart, with a summary over every product compared (average and median shelf change, counts of rises and falls) overall and per store.

shelf_rise and shelf_fall are changes to the regular price;
promotion_started and promotion_ended are changes in what was paid while
the regular price stayed the same (a product at 18 euro on promotion and 23
euro after is a promotion ending, not a 27.8% price rise); loyalty_change
is a Clubcard price moving; pack_change is the same product in a different
pack size, confirmed over three days of records (a smaller pack at the same
price is a hidden rise). on_promotion_both_dates marks a shelf change in
the label's "was" price while the offer price paid did not move.

Each mover returned costs one credit; the summaries are free.

Args:
    from_date: the earlier date, YYYY-MM-DD (prices recorded since May 2026).
    to_date: the later date, YYYY-MM-DD; defaults to today.
    group: a kind of product: beer, cider, wine, spirits, alcohol, or any
        product type such as breakfast cereal, butter, coffee, crisps,
        nappies. Narrower words work too ("vodka", "red wine").
    query: product or brand words, with or without group
        (e.g. "guinness").
    category: an aisle name to narrow by.
    store: aldi, tesco, supervalu or dunnes; leave out for all four.
    kinds: which lists to return (default all six).
    rank_by: "pct" (default) or "eur".
    limit: most products per list (default 10, max 50).
ParametersJSON Schema
NameRequiredDescriptionDefault
groupNo
kindsNo
limitNo
queryNo
storeNo
rank_byNopct
to_dateNo
categoryNo
from_dateYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteNo
moversNo
summaryNoOver EVERY product compared, not only those listed
to_dateNo
from_dateNo
summary_by_storeNo
recent_price_changesRecent price changes
Read-onlyIdempotent
Inspect

Price movements at one supermarket between the latest nightly snapshot and the previous one: shelf price rises and falls with old price, new price and % change, and promotions starting or ending listed separately (an offer ending is not a price rise).

Args:
    store: "aldi" | "tesco" | "supervalu" | "dunnes".
    limit: how many movers to return (default 25).
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
storeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dateNoSnapshot being reported
prev_dateNoSnapshot compared against
promotionsNoOffers starting or ending, not shelf moves
shelf_decreasesNo
shelf_increasesNo
clubcard_changesNoLoyalty-card price changes, Tesco only
promotions_totalNo
shelf_decreases_totalNo
shelf_increases_totalNo
clubcard_changes_totalNo
removed_productsDelisted products
Read-onlyIdempotent
Inspect

Products that have disappeared from a supermarket's catalogue in the given lookback window: delistings and range cuts.

Args:
    store: "aldi" | "tesco" | "supervalu" | "dunnes".
    days_back: how many days back to consider (default 7).
    limit: how many removed products to return.
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
storeYes
days_backNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
search_productsSearch Irish supermarket products
Read-onlyIdempotent
Inspect

Search products by name across one or all Irish supermarkets.

Args:
    query: words to match in product names, case-insensitive
        (e.g. "heinz baked beans", "kerrygold butter", "pringles").
    store: optionally filter to one of "aldi", "tesco", "supervalu",
        "dunnes". Leave it out to search all four.
    limit: how many results to return in total (default 10).

Returns the matching product rows: store, SKU id, name, brand, price,
unit_price (€/kg or €/L), pack_size, category_path, url. Matches on the
name only: no ingredient, nutrition or offer filters, and no price sorting.
ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
storeNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes
statusData freshness and coverage
Read-onlyIdempotent
Inspect

A freshness snapshot per supermarket: products tracked, products on promotion, the last collection date and the status of the most recent run.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
as_ofNo
statusNo
storesNo

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 17 tool updates
    • First observedcheck_credits
    • First observedcompare_price_across_stores
    • First observedcompare_prices
    • First observedfind_products
    • First observedget_price_history
    • First observedget_product_details
    • First observedget_promotions
    • First observedlist_products
    • First observedlookup_barcode
    • First observednewly_added_products
    • First observedprice_basket
    • First observedprice_basket_over_time
    • First observedprice_movements
    • First observedrecent_price_changes
    • First observedremoved_products
    • First observedsearch_products
    • First observedstatus

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables users to compare and get recommendations across multiple supermarket products, combining curated specifications with realtime price and review lookups.
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables users to compare prices, track budgets, and find promotional deals across major Dutch supermarkets and drugstores. It supports automated shopping list optimization, meal planning, and price history alerts for stores like Albert Heijn, Jumbo, and Kruidvat.
    17
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Personal UK Tesco grocery account over MCP: search, basket, slots, orders, and on-pack nutrition (search and rank by macros + micros). Catalogue + nutrition tools need no auth; destructive actions require a two-step confirm
    100 npm
    14
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to track global food prices, search products by barcode or name, and compare costs across 27 countries. It provides tools for real-time price scraping and data aggregation from major international supermarket chains.
    8
    4
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources