UK Grocery Prices: Tesco, Sainsbury's, Asda, Aldi
Pricing
from $1.39 / 1,000 products
UK Grocery Prices: Tesco, Sainsbury's, Asda, Aldi
Compare UK supermarket prices from Tesco, Sainsbury's, Asda, Aldi and Morrisons in one dataset.
UK Grocery Prices: Tesco, Sainsbury's, Asda, Aldi
Pricing
from $1.39 / 1,000 products
Compare UK supermarket prices from Tesco, Sainsbury's, Asda, Aldi and Morrisons in one dataset.
You can access the UK Grocery Prices: Tesco, Sainsbury's, Asda, Aldi programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in API & Integrations in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "1.0", "x-build-id": "E5arFC7izSUTGV3d8" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/parsebird~uk-grocery-price-scraper/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-parsebird-uk-grocery-price-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } }, "/acts/parsebird~uk-grocery-price-scraper/runs": { "post": { "operationId": "runs-sync-parsebird-uk-grocery-price-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor and returns information about the initiated run in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/runsResponseSchema" } } } } } } }, "/acts/parsebird~uk-grocery-price-scraper/run-sync": { "post": { "operationId": "run-sync-parsebird-uk-grocery-price-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } } }, "components": { "schemas": { "inputSchema": { "type": "object", "properties": { "mode": { "title": "Mode", "enum": [ "search", "category", "product", "catalogue", "basket" ], "type": "string", "description": "What the run does. Search: look up each query in the selected shops. Category / Product: read the URLs you paste (the shop comes from each URL). Catalogue: read whole shops (every grocery category). Basket: price a shopping list at each shop and find the cheapest.", "default": "search" }, "retailers": { "title": "Shops", "type": "array", "description": "Shops to run in Search, Catalogue and Basket mode. Default is Aldi and Sainsbury's. Category and Product mode ignore this and use the shop of each URL.", "items": { "type": "string", "enum": [ "tesco", "sainsburys", "aldi", "morrisons", "asda" ], "enumTitles": [ "Tesco", "Sainsbury's", "Aldi", "Morrisons", "Asda" ] }, "default": [ "aldi", "sainsburys" ] }, "queries": { "title": "Search queries", "maxItems": 50, "type": "array", "description": "Search mode: words to search for, such as semi skimmed milk. Each query runs in every selected shop. Up to 50 queries.", "default": [ "milk" ], "items": { "type": "string" } }, "categoryUrls": { "title": "Category URLs", "maxItems": 250, "type": "array", "description": "Category mode: category page links from tesco.com, sainsburys.co.uk (ending in /c:<number>), asda.com (/groceries/<category>/...), aldi.co.uk (containing /k/<number>) or groceries.morrisons.com. Up to 250 URLs.", "items": { "type": "string" } }, "productUrls": { "title": "Product URLs", "maxItems": 500, "type": "array", "description": "Product mode: product page links from tesco.com, sainsburys.co.uk, asda.com, aldi.co.uk or groceries.morrisons.com. Up to 500 URLs.", "items": { "type": "string" } }, "basket": { "title": "Basket (shopping list)", "type": "array", "description": "Basket mode: one item per line, with an optional quantity like '2 x semi skimmed milk'. Each item is matched in every selected shop and the run reports each shop's total and the cheapest shop.", "items": { "type": "string" } }, "maxItems": { "title": "Max items", "minimum": 0, "type": "integer", "description": "The most product rows the run saves; every row is charged, so start small. 0 means no limit. The limit is split equally between the shops that run, so 100 across five shops gives up to 20 each. Not used in Basket mode.", "default": 100 }, "includeDetails": { "title": "Include ingredients and nutrition", "type": "boolean", "description": "Add ingredients and the nutrition table to each product (one extra request per product). Rows that get ingredients or nutrition are charged the Product details event on top of the product.", "default": false }, "priceHistory": { "title": "Keep weekly price history", "type": "boolean", "description": "Save this week's price of every product to a key-value store named 'uk-grocery-price-history' in your Apify account. Once a product has prices from two or more weeks, its row gets a priceHistory list (charged as Price history). The history fills up as you run the Actor in later weeks, for example on a weekly schedule.", "default": false }, "basketPricing": { "title": "Basket pricing", "enum": [ "live", "snapshot" ], "type": "string", "description": "Basket mode: Live searches each shop now. Snapshot uses the latest weekly prices saved by your runs with 'Keep weekly price history' and falls back to live for items not in the snapshot.", "default": "live" }, "basketPick": { "title": "Product choice for each item", "enum": [ "cheapest", "relevance" ], "type": "string", "description": "Which product stands in for each item. Cheapest: the lowest unit price among results containing every word of the item. Top result: the shop's first result containing every word.", "default": "cheapest" }, "useLoyaltyPrices": { "title": "Use loyalty card prices", "type": "boolean", "description": "Basket mode: use Clubcard, Nectar and More Card prices where a product has one.", "default": false }, "asdaStoreId": { "title": "Asda store ID", "type": "string", "description": "Optional. Asda store number used for the in-stock flag. With a store ID, products that store does not sell are left out. Empty uses the store asda.com shows before a postcode is entered (4565). Prices come from Asda's online price list for England either way." }, "outputDataset": { "title": "Also append rows to a named dataset", "type": "string", "description": "Optional. Name of a dataset in your account that also receives every row the run saves, created on first use, so repeated runs add up in one place. Letters, digits and hyphens only, e.g. my-uk-grocery-prices." }, "datasetName": { "title": "Name this run's dataset", "type": "string", "description": "Optional. Names this run's dataset when the run finishes, so it is kept until you delete it. Placeholders: {isoWeek} (2026-W45), {date} (2026-11-03) and {retailer} (the shop, or multi). Letters, digits and hyphens only, e.g. snapshot-{retailer}-{isoWeek}." }, "proxyConfiguration": { "title": "Proxy configuration", "type": "object", "description": "Not needed in most cases. The Actor switches to Apify Proxy by itself if a shop refuses direct requests.", "default": { "useApifyProxy": false } } } }, "runsResponseSchema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "id": { "type": "string" }, "actId": { "type": "string" }, "userId": { "type": "string" }, "startedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "finishedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "status": { "type": "string", "example": "READY" }, "meta": { "type": "object", "properties": { "origin": { "type": "string", "example": "API" }, "userAgent": { "type": "string" } } }, "stats": { "type": "object", "properties": { "inputBodyLen": { "type": "integer", "example": 2000 }, "rebootCount": { "type": "integer", "example": 0 }, "restartCount": { "type": "integer", "example": 0 }, "resurrectCount": { "type": "integer", "example": 0 }, "computeUnits": { "type": "integer", "example": 0 } } }, "options": { "type": "object", "properties": { "build": { "type": "string", "example": "latest" }, "timeoutSecs": { "type": "integer", "example": 300 }, "memoryMbytes": { "type": "integer", "example": 1024 }, "diskMbytes": { "type": "integer", "example": 2048 } } }, "buildId": { "type": "string" }, "defaultKeyValueStoreId": { "type": "string" }, "defaultDatasetId": { "type": "string" }, "defaultRequestQueueId": { "type": "string" }, "buildNumber": { "type": "string", "example": "1.0.0" }, "containerUrl": { "type": "string" }, "usage": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "integer", "example": 1 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 }, "PROXY_UNBLOCKER_UNITS": { "type": "integer", "example": 0 } } }, "usageTotalUsd": { "type": "number", "example": 0.00005 }, "usageUsd": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "number", "example": 0.00005 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 }, "PROXY_UNBLOCKER_UNITS": { "type": "integer", "example": 0 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for UK Grocery Prices: Tesco, Sainsbury's, Asda, Aldi from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: