Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/basketwatchireland-com:basketwatchireland-com-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.1.0
info:
title: basketwatchireland-com API
version: '2026-10-30'
description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-10-30: 24 operation(s) read from 4 public documentation page(s) (each operation
names its page in x-source). This is not the provider''s published contract; basketwatchireland-com has published no machine-readable contract
that the pipeline could find. Engine: local.'
x-evidence-tiers:
code-example: 20
documentation: 4
pages-with-code: 2
pages-read: 4
x-generated-from: documentation
x-provenance: generated
x-authored-by: API Evangelist
x-generated: '2026-10-30'
x-generator: generate-contract-from-docs.py
x-engine: local
x-sources:
- https://basketwatchireland.com/api-reference
- https://basketwatchireland.com/llms.txt
- https://basketwatchireland.com/support
- https://api.basketwatchireland.com/api-reference
paths:
/api/aldi/specialbuys:
get:
operationId: get_api_aldi_specialbuys
tags:
- Api
summary: GET /api/aldi/specialbuys
x-source: https://basketwatchireland.com/api-reference
parameters:
- name: limit
in: query
required: false
schema:
type: string
responses:
'200':
description: Success (shape read from the example response on the page)
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiAldiSpecialbuysResponse'
x-evidence:
kind: code-example
language: curl
snippet: "curl -H \"X-API-Key: YOUR_KEY\" \"https://basketwatchireland.com/api/aldi/specialbuys?limit=1\" \n Response \n {\n \"active_by_category\"\
: [\n { \"category_path\": \"SpecialBuys > Clothing\", \"count\": 54, \"avg_price\": 6.63 }\n ],\n \"recently_ended\": [\n { \"id\"\
: \"000000000708833001\", \"name\": \"Bottle with Carabiner\", \"brand\": \"CROFTON\", \"category_path\": \"SpecialBuys > Kitchen\"\
, \"last_seen\": \"2026-06-26\", \"last_pric"
/api/barcodes:
get:
operationId: get_api_barcodes
tags:
- Api
summary: GET /api/barcodes
x-source: https://basketwatchireland.com/api-reference
parameters:
- name: codes
in: query
required: false
schema:
type: string
responses:
'200':
description: Success (shape read from the example response on the page)
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiBarcodesResponse'
x-evidence:
kind: code-example
language: curl
snippet: "curl -H \"X-API-Key: YOUR_KEY\" \"https://basketwatchireland.com/api/barcodes?codes=5000127014084,5000157024671,5099999999990\"\
\ \n Response \n {\n \"requested\": 3,\n \"valid\": 3,\n \"matched\": 2,\n \"products\": [\n { \"store\": \"tesco\", \"id\": \"tesco:252261477\"\
, \"matched_barcodes\": [\"5000157024671\"], \"name\": \"Heinz Beans in Tomato Sauce 415g\" },\n { \"store\": \"tesco\", \"id\": \"\
tesco:253158380\", \"matched_barcodes\": [\"5"
/api/changes:
get:
operationId: get_api_changes
tags:
- Api
summary: daily price movements, with shelf moves, promotions and loyalty prices kept as separate signals
x-source: https://basketwatchireland.com/llms.txt
responses:
'200':
description: Success (status as documented)
x-evidence:
kind: documentation
/api/compare:
get:
operationId: get_api_compare
tags:
- Api
summary: GET /api/compare
x-source: https://basketwatchireland.com/api-reference
parameters:
- name: q
in: query
required: false
schema:
type: string
responses:
'200':
description: Success (shape read from the example response on the page)
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiCompareResponse'
x-evidence:
kind: code-example
language: curl
snippet: "curl -H \"X-API-Key: YOUR_KEY\" \"https://basketwatchireland.com/api/compare?q=heinz%20ketchup\" \n Response \n {\n \"as_of\"\
: \"2026-06-29\",\n \"matches\": [\n {\n \"match_id\": 561961,\n \"brand\": \"Heinz\",\n \"pack\": \"910g\",\n \"category\": \"Food\
\ Cupboard\",\n \"display_name\": \"Heinz Tomato Ketchup 910g\",\n \"coverage\": 4,\n \"stores\": {\n \"aldi\": {\n \"id\": \"000000000000336799\"\
,\n \"name\": \"Tomato Ketchup 910g\",\n \"price\": 3.99,\n"
/api/credits:
get:
operationId: get_api_credits
tags:
- Api
summary: GET /api/credits shows the balance and ledger at no charge
x-source: https://basketwatchireland.com/api-reference
responses:
'200':
description: Success (status as documented)
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiCreditsResponse'
x-evidence:
kind: documentation
/api/credits/mpp:
get:
operationId: get_api_credits_mpp
tags:
- Api
summary: GET /api/credits/mpp
x-source: https://basketwatchireland.com/api-reference
responses:
'200':
description: Success (status as documented)
x-evidence:
kind: code-example
language: curl
snippet: "curl \"https://basketwatchireland.com/api/credits/mpp\" \n Free and unauthenticated: an agent that cannot read the price without\
\ paying cannot decide\n whether to buy. Returns the packs, the per-record rate and the purchase URL. \n 2 · ask to buy, with no credential "
/api/credits/mpp/buy:
get:
operationId: get_api_credits_mpp_buy
tags:
- Api
summary: 'Answers 402 Payment Required with a WWW-Authenticate: Payment challenge naming the stripe method and charge intent.'
x-source: https://basketwatchireland.com/api-reference
parameters:
- name: pack
in: query
required: true
schema:
type: string
description: Pack amount in euro cents.
responses:
'200':
description: Success (status as documented)
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiCreditsMppBuyResponse'
x-evidence:
kind: documentation
post:
operationId: post_api_credits_mpp_buy
tags:
- Api
summary: POST /api/credits/mpp/buy
x-source: https://basketwatchireland.com/api-reference
parameters:
- name: pack
in: query
required: false
schema:
type: string
responses:
'201':
description: Success (status as documented)
x-evidence:
kind: code-example
language: curl
snippet: "curl -X POST \"https://basketwatchireland.com/api/credits/mpp/buy?pack=4999\" -H \"Authorization: Payment <base64url(credential)>\"\
\ \n The credential echoes the challenge back intact alongside your token, as\n {\"challenge\": {...}, \"payload\": {\"spt\": \"spt_...\"\
}} . A successful purchase\n returns a funded api_key , the credits added and the balance. Send that key as\n X-API-Key on every request\
\ from then o"
/api/product/{productId}:
get:
operationId: get_api_product_productId
tags:
- Api
summary: 'A single product: current price, unit price, pack, plus its full price history'
x-source: https://basketwatchireland.com/api-reference
parameters:
- name: productId
in: path
required: true
schema:
type: string
responses:
'200':
description: Success (status as documented)
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiProductProductidResponse'
x-evidence:
kind: documentation
/api/products:
get:
operationId: get_api_products
tags:
- Api
summary: catalogue with current shelf price, unit price, pack size, promotion and barcode, and the retailer's own shelf every level down
x-source: https://basketwatchireland.com/llms.txt
parameters:
- name: category
in: query
required: false
schema:
type: string
description: matches part of the department name or a whole level of the shelf
responses:
'200':
description: Success (status as documented)
x-evidence:
kind: documentation
/api/status:
get:
operationId: get_api_status
tags:
- Api
summary: coverage and freshness per retailer, free and unauthenticated
x-source: https://basketwatchireland.com/llms.txt
responses:
'200':
description: Success (status as documented)
x-evidence:
kind: documentation
/api/tesco/out-of-stock:
get:
operationId: get_api_tesco_out_of_stock
tags:
- Api
summary: GET /api/tesco/out-of-stock
x-source: https://basketwatchireland.com/api-reference
responses:
'200':
description: Success (shape read from the example response on the page)
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiTescoOutOfStockResponse'
x-evidence:
kind: code-example
language: curl
snippet: "curl -H \"X-API-Key: YOUR_KEY\" \"https://basketwatchireland.com/api/tesco/out-of-stock\" \n Response \n {\n \"date\": \"2026-06-29\"\
,\n \"count\": 882,\n \"items\": [\n { \"id\": \"tesco:317208754\", \"name\": \"Sheep Hill Sauvignon Blanc 75cl\", \"brand\": \"A GABB\
\ FAMILY WINE\", \"category_path\": \"Drinks > Wine\", \"url\": \"https://www.tesco.ie/shop/en-IE/products/317208754\", \"pack_size\"\
: \"75cl\", \"price\": 18.00, \"clubcard_pric"
/api/{store}/category-index:
get:
operationId: get_api_store_category_index
tags:
- Api
summary: Per-category average price over time, with the SKU count behind each point.
x-source: https://basketwatchireland.com/api-reference
parameters:
- name: store
in: path
required: true
schema:
type: string
responses:
'200':
description: Success (status as documented)
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiStoreCategoryIndexResponse'
x-evidence:
kind: documentation
/api/{store}/category-summary:
get:
operationId: get_api_store_category_summary
tags:
- Api
summary: 'Per-department roll-up: SKU count, average price and price churn, with the retailer browse URL.'
x-source: https://basketwatchireland.com/api-reference
parameters:
- name: store
in: path
required: true
schema:
type: string
responses:
'200':
description: Success (status as documented)
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiStoreCategorySummaryResponse'
x-evidence:
kind: documentation
/api/{store}/changes:
get:
operationId: get_api_store_changes
tags:
- Api
summary: Day‑over‑day movements in price, promotions and loyalty changes
x-source: https://basketwatchireland.com/api-reference
parameters:
- name: store
in: path
required: true
schema:
type: string
- name: 'on'
in: query
required: false
schema:
type: string
responses:
'200':
description: Success (status as documented)
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiStoreChangesResponse'
x-evidence:
kind: documentation
/api/{store}/kpis:
get:
operationId: get_api_store_kpis
tags:
- Api
summary: 'Headline numbers for the latest snapshot: catalogue size, active SKUs today vs yesterday, promotion share, out-of-stock count,
average price, price moves and new lines.'
x-source: https://basketwatchireland.com/api-reference
parameters:
- name: store
in: path
required: true
schema:
type: string
responses:
'200':
description: Success (status as documented)
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiStoreKpisResponse'
x-evidence:
kind: documentation
/api/{store}/new-products:
get:
operationId: get_api_store_new_products
tags:
- Api
summary: Newly listed SKUs first seen in the latest snapshot
x-source: https://basketwatchireland.com/api-reference
parameters:
- name: store
in: path
required: true
schema:
type: string
- name: days
in: query
required: false
schema:
type: integer
- name: from
in: query
required: false
schema:
type: string
- name: to
in: query
required: false
schema:
type: string
responses:
'200':
description: Success (status as documented)
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiStoreNewProductsResponse'
x-evidence:
kind: documentation
/api/{store}/price-history:
get:
operationId: get_api_store_price_history
tags:
- Api
summary: Every price observation per SKU across a date range
x-source: https://basketwatchireland.com/api-reference
parameters:
- name: store
in: path
required: true
schema:
type: string
- name: from
in: query
required: false
schema:
type: string
- name: to
in: query
required: false
schema:
type: string
- name: q
in: query
required: false
schema:
type: string
- name: category
in: query
required: false
schema:
type: string
- name: ids
in: query
required: false
schema:
type: string
- name: limit
in: query
required: false
schema:
type: integer
- name: offset
in: query
required: false
schema:
type: integer
- name: fields
in: query
required: false
schema:
type: string
responses:
'200':
description: Success (status as documented)
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiStorePriceHistoryResponse'
x-evidence:
kind: documentation
/api/{store}/products:
get:
operationId: get_api_store_products
tags:
- Api
summary: Full catalogue with the current shelf price per SKU
x-source: https://basketwatchireland.com/api-reference
parameters:
- name: store
in: path
required: true
schema:
type: string
- name: q
in: query
required: false
schema:
type: string
- name: limit
in: query
required: false
schema:
type: integer
- name: offset
in: query
required: false
schema:
type: integer
- name: fields
in: query
required: false
schema:
type: string
- name: from
in: query
required: false
schema:
type: string
- name: to
in: query
required: false
schema:
type: string
responses:
'200':
description: Success (status as documented)
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiStoreProductsResponse'
x-evidence:
kind: documentation
/api/{store}/products/count:
get:
operationId: get_api_store_products_count
tags:
- Api
summary: Fast catalogue size for a store, without returning rows
x-source: https://basketwatchireland.com/api-reference
parameters:
- name: store
in: path
required: true
schema:
type: string
responses:
'200':
description: Success (status as documented)
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiStoreProductsCountResponse'
x-evidence:
kind: documentation
/api/{store}/promotions:
get:
operationId: get_api_store_promotions
tags:
- Api
summary: 'Live deals: products on offer, with was-price, offer text and loyalty pricing (Clubcard / Real Rewards).'
x-source: https://basketwatchireland.com/api-reference
parameters:
- name: store
in: path
required: true
schema:
type: string
responses:
'200':
description: Success (status as documented)
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiStorePromotionsResponse'
x-evidence:
kind: documentation
/api/{store}/removed:
get:
operationId: get_api_store_removed
tags:
- Api
summary: Delisted SKUs absent from the latest snapshot (two-snapshot confirmed).
x-source: https://basketwatchireland.com/api-reference
parameters:
- name: store
in: path
required: true
schema:
type: string
responses:
'200':
description: Success (status as documented)
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiStoreRemovedResponse'
x-evidence:
kind: documentation
/api/{store}/shrinkflation:
get:
operationId: get_api_store_shrinkflation
tags:
- Api
summary: 'Pack-size reductions: same product, smaller pack, with the old and new size and the change in price per kg, litre or item.'
x-source: https://basketwatchireland.com/api-reference
parameters:
- name: store
in: path
required: true
schema:
type: string
responses:
'200':
description: Success (status as documented)
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiStoreShrinkflationResponse'
x-evidence:
kind: documentation
/api/{store}/volatile:
get:
operationId: get_api_store_volatile
tags:
- Api
summary: 'Most volatile SKUs: products whose price has changed most often over the tracked window.'
x-source: https://basketwatchireland.com/api-reference
parameters:
- name: store
in: path
required: true
schema:
type: string
- name: days
in: query
required: false
schema:
type: string
description: Window size in days.
- name: from
in: query
required: false
schema:
type: string
description: Start date.
- name: to
in: query
required: false
schema:
type: string
description: End date.
responses:
'200':
description: Success (status as documented)
content:
application/json:
schema:
$ref: '#/components/schemas/GetApiStoreVolatileResponse'
x-evidence:
kind: documentation
components:
schemas:
GetApiAldiSpecialbuysResponse:
type: object
properties:
active_by_category:
type: array
items:
type: object
properties:
category_path:
type: string
count:
type: integer
avg_price:
type: number
recently_ended:
type: array
items:
type: object
properties:
id:
type: string
name:
type: string
brand:
type: string
category_path:
type: string
last_seen:
type: string
format: date
last_price:
type: number
newly_listed:
type: array
items:
type: object
properties:
id:
type: string
name:
type: string
brand:
type: string
category_path:
type: string
first_seen:
type: string
format: date
launch_price:
type: number
GetApiBarcodesResponse:
type: object
properties:
requested:
type: integer
valid:
type: integer
matched:
type: integer
products:
type: array
items:
type: object
properties:
store:
type: string
id:
type: string
matched_barcodes:
type: array
items:
type: string
name:
type: string
not_found:
type: array
items:
type: string
invalid:
type: array
items: {}
GetApiCompareResponse:
type: object
properties:
match_id:
type: integer
brand:
type: string
pack:
type: string
category:
type: string
display_name:
type: string
coverage:
type: integer
stores:
type: object
properties:
aldi:
type: object
properties:
id:
type: string
name:
type: string
price:
type: number
unit_price:
type: number
unit_basis:
type: string
was_price:
type:
- string
- 'null'
clubcard_price:
type:
- string
- 'null'
scrape_date:
type: string
format: date
tesco:
type: object
properties:
id:
type: string
name:
type: string
price:
type: number
unit_price:
type: number
unit_basis:
type: string
was_price:
type:
- string
- 'null'
clubcard_price:
type: number
scrape_date:
type: string
format: date
supervalu:
type: object
properties:
id:
type: string
name:
type: string
price:
type: number
unit_price:
type: number
unit_basis:
type: string
was_price:
type:
- string
- 'null'
clubcard_price:
type:
- string
- 'null'
scrape_date:
type: string
format: date
dunnes:
type: object
properties:
id:
type: string
name:
type: string
price:
type: number
unit_price:
type: number
unit_basis:
type: string
was_price:
type:
- string
- 'null'
clubcard_price:
type:
- string
- 'null'
scrape_date:
type: string
format: date
GetApiCreditsResponse:
type: object
properties:
X-Credits-Charged:
type: integer
X-Credits-Remaining:
type: integer
GetApiCreditsMppBuyResponse:
type: object
properties:
challenge:
type: object
payload:
type: object
description: Contains spt token.
GetApiProductProductidResponse:
type: object
properties:
product:
type: object
description: product details
history:
type: array
description: price history entries
GetApiTescoOutOfStockResponse:
type: object
properties:
date:
type: string
format: date
count:
type: integer
items:
type: array
items:
type: object
properties:
id:
type: string
name:
type: string
brand:
type: string
category_path:
type: string
url:
type: string
pack_size:
type: string
price:
type: number
clubcard_price:
type: number
GetApiStoreCategoryIndexResponse:
type: object
properties:
category:
type: object
description: Keys are category names, values are arrays of {date, avg_price, n}.
GetApiStoreCategorySummaryResponse:
type: object
properties:
category:
type: string
sku_count:
type: integer
avg_price:
type: number
changed:
type: integer
changed_pct:
type: number
price_delta_pct:
type: number
url:
type: string
GetApiStoreChangesResponse:
type: object
properties:
date:
type: string
prev_date:
type: string
shelf_increases:
type: array
shelf_decreases:
type: array
promotions:
type: array
clubcard_changes:
type: array
GetApiStoreKpisResponse:
type: object
properties:
total_products:
type: integer
active_today:
type: integer
active_yesterday:
type: integer
active_delta:
type: integer
on_promo_today:
type: integer
promo_pct_today:
type: number
out_of_stock_today:
type: integer
avg_price_today:
type: number
avg_price_yesterday:
type: number
prices_up_today:
type: integer
prices_down_today:
type: integer
new_today:
type: integer
GetApiStoreNewProductsResponse:
type: object
properties:
id:
type: string
name:
type: string
brand:
type: string
category_path:
type: string
first_seen:
type: string
launch_price:
type: number
GetApiStorePriceHistoryResponse:
type: object
properties:
id:
type: string
name:
type: string
brand:
type: string
category_path:
type: string
pack_size:
type: string
scrape_date:
type: string
price:
type: number
unit_price:
type: number
unit_basis:
type: string
clubcard_price:
type: number
offer_text:
type: string
was_price:
type: number
offer_valid:
type: string
available:
type: integer
GetApiStoreProductsResponse:
type: object
properties:
id:
type: string
name:
type: string
brand:
type: string
category_path:
type: string
url:
type: string
pack_size:
type: string
first_seen:
type: string
last_seen:
type: string
scrape_date:
type: string
price:
type: number
unit_price:
type: number
unit_basis:
type: string
clubcard_price:
type: number
offer_text:
type: string
shelf_path:
type: string
available:
type: integer
removed:
type: integer
GetApiStoreProductsCountResponse:
type: object
properties:
total:
type: integer
GetApiStorePromotionsResponse:
type: object
properties:
id:
type: string
name:
type: string
brand:
type: string
category_path:
type: string
url:
type: string
pack_size:
type: string
last_seen:
type: string
scrape_date:
type: string
price:
type: number
unit_price:
type: number
unit_basis:
type: string
offer_text:
type: string
was_price:
type: number
offer_valid:
type: string
clubcard_price:
type: number
GetApiStoreRemovedResponse:
type: object
properties:
id:
type: string
name:
type: string
brand:
type: string
category_path:
type: string
first_seen:
type: string
description: date
last_seen:
type: string
description: date
last_price:
type: number
GetApiStoreShrinkflationResponse:
type: object
properties:
id:
type: string
name:
type: string
brand:
type: string
category_path:
type: string
pack_size:
type: string
start_date:
type: string
end_date:
type: string
start_price:
type: number
end_price:
type: number
start_pack_qty:
type: number
start_pack_unit:
type: string
end_pack_qty:
type: number
end_pack_unit:
type: string
pack_shrink_pct:
type: number
start_unit_price:
type: number
end_unit_price:
type: number
unit_basis:
type: string
unit_price_pct:
type: number
headline_pct:
type: number
GetApiStoreVolatileResponse:
type: object
properties:
id:
type: string
name:
type: string
brand:
type: string
category_path:
type: string
distinct_prices:
type: integer
observations:
type: integer
min_price:
type: number
max_price:
type: number
avg_price:
type: number
range_pct:
type: number
securitySchemes:
apiKey:
type: apiKey
in: header
name: X-API-Key
security:
- apiKey: []
tags:
- name: Api