Aldi UK Scraper — Full Product Catalog & Prices
Pricing
from $1.20 / 1,000 result scrapeds
Aldi UK Scraper — Full Product Catalog & Prices
Scrape the full Aldi UK (aldi.co.uk) product catalog: names, brands, in-store prices, price-per-unit, categories, images, descriptions, and ingredients/allergens. Browse-only catalog. No cookies, no login.
Pricing
from $1.20 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Studio Amba
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Aldi UK Scraper
Scrape the full Aldi UK (aldi.co.uk) product catalog: names, brands, in-store prices, price-per-unit, categories, images, descriptions, and where available ingredients and allergens. No cookies, no login.
What this actor does
Aldi UK publishes its whole product range on aldi.co.uk as a browse-only catalog. This actor reads that catalog through Aldi's own public JSON API and returns clean, flat product records you can drop straight into a spreadsheet, database, or price-monitoring pipeline.
Leave the input empty and it pulls the entire live catalog (around 3,800 products). Add a search keyword or a category key to narrow it down.
Important: Aldi UK is a browse-only catalog
Read this before you buy. aldi.co.uk is not an online shop. You cannot add products to a basket and check out. It is a reference catalog of Aldi's range with in-store prices. That has two consequences for the data:
- No live stock. Every product is flagged
notForSaleand there is no stock level anywhere on the platform. This actor does not return aninStockfield because Aldi does not expose one. - No EAN / GTIN barcodes. Aldi UK uses internal SKUs only. We verified
this across every layer of the platform: the listing API, the per-product
detail API, the product page JSON-LD (no
gtinproperty) and the embedded page state. Even branded products that certainly carry a barcode (Heinz) expose none. There is no barcode field anywhere, so this actor cannot return one. Theskufield is Aldi's internal 18-digit identifier, not a retail barcode.
If you match products across scrapes or across your own database, key on
sku. It is Aldi's article number: it appears in the product URL, it is the
lookup key of the detail API, and it does not change between runs (verified
by re-checking a sample from an earlier full-catalog run: every product still
listed had the identical sku and name; the only misses were rotating
Specialbuys that had left the range). Products can appear in several
categories, but always with the same sku.
Prices are the in-store reference prices Aldi shows to shoppers. They are real and current, but they are not a live e-commerce checkout price.
If you need stock levels or barcodes, this data source cannot provide them. Get in touch and we will tell you honestly whether another source can.
How to scrape Aldi data
- Open the actor and leave every field empty to pull the full catalog, or set
a
searchQuery(for examplemilk) to filter. - Set
maxProductsto0for the entire catalog, or a small number for a quick sample. - Leave
includeDetailson to collect ingredients, allergens, and descriptions, or turn it off for a faster price-only run. - Run the actor. Results stream into the dataset as clean JSON.
- Export to CSV, Excel, JSON, or connect the dataset to your own pipeline.
The actor talks to Aldi's public JSON API directly, so it is fast and reliable. No browser rendering, no cookies, no login, no CAPTCHA solving.
Input
| Field | Type | Required | Description |
|---|---|---|---|
searchQuery | String | No | Keyword filter, e.g. milk. Empty = full catalog |
categoryKey | String | No | Restrict to one Aldi category key |
maxProducts | Integer | No | Max products to return. 0 = whole catalog (default 1000) |
includeDetails | Boolean | No | Fetch ingredients/allergens/description per product (default true) |
proxyConfiguration | Object | No | Proxy settings. Optional — the API is public |
Getting category keys
Category keys come from Aldi's category tree:
https://api.aldi.co.uk/v2/product-category-tree?serviceType=walk-in&servicePoint=C092
Each node has a key you can pass as categoryKey. There are 18 top-level and
145 total categories (Fresh Food, Food Cupboard, Chilled, Frozen, Bakery,
Drinks, Alcohol, SpecialBuys, and more).
Output
Each result contains:
| Field | Type | Example |
|---|---|---|
name | String | "Cowbelle Lactose Free Milk" |
brand | String | "Cowbelle" |
price | Number | 1.50 |
currency | String | "GBP" |
originalPrice | Number | 1.99 (when on a price drop) |
pricePerUnit | String | "£1.50/1 Each" |
discount | String | "Save 50p" |
sku | String | "000000000000422329" (internal, not a barcode) |
url | String | Full product page URL |
imageUrl | String | Primary product image (up to 1500px) |
imageUrls | Array | All product images |
productDescription | String | Product description text |
category | String | "Clothing" |
categories | Array | ["SpecialBuys", "Clothing"] |
specs | Object | { "ingredients": "...", "allergens": "...", "sellingSize": "1 Each" } |
notForSale | Boolean | true (always — browse-only catalog) |
scrapedAt | String | ISO 8601 timestamp |
Fields intentionally absent: inStock and ean. Aldi UK exposes neither.
Example output
{"name": "Pork Chipolata Sausages 12 Pack","brand": "Ashfields","price": 1.99,"currency": "GBP","pricePerUnit": "£0.30/100g","sku": "000000000000418762","url": "https://www.aldi.co.uk/product/pork-chipolata-sausages-000000000000418762","imageUrl": "https://dm.emea.cms.aldi.cx/is/image/aldiprodeu/.../product","category": "Fresh Meat","categories": ["Fresh Food", "Fresh Meat"],"specs": {"sellingSize": "660g","pricePerUnit": "£0.30/100g","ingredients": "BRITISH PORK 90%, Water, Rice Flour, Sea Salt, ...","allergens": "Rice"},"notForSale": true,"language": "en","scrapedAt": "2026-07-03T14:30:00.000Z"}
Catalog size and completeness
The live Aldi UK catalog is around 3,750–3,790 products. The API reports a
totalCount near 3,787, but that figure is a search-index aggregate that sits a
hair above the set the API will actually return: paging the whole catalog yields
about 3,756 unique products. This is not a scraper gap. Walking all 145
categories independently converges on the same set (and is in fact a subset of
it), so unfiltered paging is the most complete method available and the ~1%
difference is index items the API counts but never serves. The actor runs a
completeness check every run: it compares captured unique SKUs against
totalCount and, if paging is ever truncated by an error, it fails the run
rather than deliver a silent partial catalog.
The sitemap lists more URLs (about 5,352) but many are stale or rotated-out listings such as past SpecialBuys, so the live API set is the authoritative current range, not the sitemap.
SpecialBuys (Aldi's rotating non-food deals such as clothing and homeware) appear only while active, roughly 330 at any time, and are included. The actor dedupes by SKU, so cross-cutting collections like Price Drops, Specially Selected or Summer Range never produce duplicate rows.
Field coverage on a full run: name, price, url, sku and currency are populated on 100% of rows; brand on ~99.6% (some own-label lines carry no brand); category on ~99.7%; image on ~95.8%. The image and category gaps are products that carry no asset or category in Aldi's own data, not scraping misses.
Cost estimate
A full-catalog run with details is roughly 3,850 API requests (about 64 catalog
pages plus one detail call per product). A price-only run (includeDetails
off) is about 64 requests for the whole catalog. Both are light — the API is
fast and needs no browser.
Limitations
- Browse-only catalog: no live stock, no
inStockfield, no online purchasing. - No EAN/GTIN barcodes anywhere on the platform.
skuis Aldi's internal code. - Some descriptions contain placeholder text on newer or non-food lines.
- Prices are in-store reference prices, current but not a checkout price.
- Data is scraped from the public catalog and may change without notice.
Need this data on a schedule, or a custom version?
We run this scraper as a managed service for businesses: scheduled runs, deduplication, delta detection, and delivery to your inbox, Google Sheets, or API — maintenance included. We can also build a custom version with your exact fields and filters, or combine multiple sources into one feed.
See studioamba.dev/services or email hello@studioamba.dev for a free data sample. We maintain 300+ European web scrapers and answer within one business day.