Aldi APIaldi.co.uk ↗
Access Aldi UK product data via API. Search products, fetch details by SKU, browse the category tree, and retrieve autocomplete suggestions.
What is the Aldi API?
The Aldi UK API covers 4 endpoints for querying the aldi.co.uk product catalog, including search_products for keyword and category-based browsing, get_product_details for SKU-level data, get_categories for the full hierarchical category tree, and search_suggestions for autocomplete. Each product response includes SKU, brand name, pricing, image assets, badges, and category assignments.
curl -X GET 'https://api.parse.bot/scraper/35841d28-d858-4269-b5f4-c68b0f46596f/search_products?sort=relevance&limit=12&query=chocolate&offset=0&category_key=1588161416584096&service_point=C092' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace aldi-co-uk-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.aldi_uk_product_api import AldiUK, Sort
aldi = AldiUK()
# Search for chocolate products sorted by price
for product in aldi.products.search(query="chocolate", sort=Sort.PRICE_ASC):
print(product.name, product.brand_name, product.price_display, product.selling_size)
# Get categories
for category in aldi.categories.list():
print(category.key, category.name)
for child in category.children:
print(" ", child.key, child.name)
# Autocomplete suggestions
suggestion = aldi.suggestions.search(query="milk")
for completion in suggestion.completions:
print(completion)
for cat in suggestion.categories:
print(cat.name, cat.category_key, cat.doc_count)
# Fetch specific products by SKU
for product in aldi.products.get(skus="000000000589532003,000000000297445002"):
print(product.sku, product.name, product.not_for_sale, product.discontinued)
Search for products on Aldi UK by keyword query and/or category. Returns paginated results with product details, pricing, and available facets for filtering. At least one of query or category_key must be provided. Paginates via offset; each product includes SKU, name, brand, price, categories, and image assets.
| Param | Type | Description |
|---|---|---|
| sort | string | Sort order for results. |
| limit | integer | Number of results per page. Accepts exactly one of: 12, 16, 24, 30, 32, 48, 60. |
| query | string | Search query text. At least one of query or category_key must be provided. |
| offset | integer | Pagination offset (number of results to skip). |
| category_key | string | Category key to filter products. Obtain from get_categories endpoint. At least one of query or category_key must be provided. |
| service_point | string | Store service point code determining product availability and pricing. |
{
"type": "object",
"fields": {
"facets": "array of filter facets (category-tree, theme, brand-name)",
"products": "array of product objects with sku, name, brandName, price, categories, assets, badges",
"pagination": "object with offset, limit, totalCount"
},
"sample": {
"data": {
"facets": [
{
"name": "category-tree",
"values": [
{
"key": "1588161416978053",
"label": "Food Cupboard",
"docCount": 187
}
],
"localizedName": "Category"
}
],
"products": [
{
"sku": "000000000589532003",
"name": "Milk Chocolate Belgian Chocolate Waves",
"price": {
"amount": 229,
"currencyCode": "GBP",
"comparisonDisplay": "£18.32/1 KG",
"amountRelevantDisplay": "£2.29"
},
"assets": [
{
"url": "https://dm.emea.cms.aldi.cx/is/image/aldiprodeu/product/jpg/scaleWidth/{width}/4e8aeb79-87e9-417c-a176-5482ba8c33db/{slug}",
"maxWidth": 1500,
"assetType": "FR01",
"maxHeight": 1500
}
],
"badges": [],
"brandName": "DAIRYFINE",
"categories": [
{
"id": "1588161416978053",
"name": "Food Cupboard",
"urlSlugText": "food-cupboard"
}
],
"notForSale": true,
"sellingSize": "0.125 KG",
"urlSlugText": "dairyfine-milk-chocolate-belgian-chocolate-waves",
"discontinued": false
}
],
"pagination": {
"limit": 12,
"offset": 0,
"totalCount": 260
}
},
"status": "success"
}
}About the Aldi API
Search and Browse Products
The search_products endpoint accepts a query string, a category_key from the category tree, or both. Results are paginated via offset and limit (valid values: 12, 16, 24, 30, 32, 48, 60) and can be sorted by relevance, name, or price using the sort parameter. The response includes a products array — each item carrying sku, name, brandName, price, categories, assets, and badges — plus a pagination object (offset, limit, totalCount) and facets for further filtering by category-tree, theme, or brand-name.
Product Details and SKU Lookup
get_product_details accepts a comma-separated skus string, allowing you to fetch data for one or multiple products in a single call. SKU codes are returned by search_products and search_suggestions. The response shape matches the search result items: sku, name, brandName, price, categories, assets, and badges. Both endpoints accept an optional service_point parameter, a store code that affects which products appear and what prices are shown — useful when building localised or store-specific experiences.
Category Tree and Autocomplete
get_categories returns the full Aldi UK category hierarchy: top-level category objects each include a key, name, urlSlugText, and a children array for subcategories. The key values feed directly into search_products as category_key. The search_suggestions endpoint takes a partial query string and returns three lists: completions (suggested search terms), products (matching items with name, SKU, brand, and price), and categories (matching categories with name, categoryKey, and docCount). This makes it straightforward to replicate Aldi's live search-as-you-type behaviour.
The Aldi API is a managed, monitored endpoint for aldi.co.uk — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when aldi.co.uk changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official aldi.co.uk API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track price changes on specific Aldi UK products by polling get_product_details with saved SKUs.
- Build a grocery price comparison tool using search_products with price_asc sorting across multiple retailers.
- Populate a localised product catalogue by passing a service_point code to filter availability by store.
- Implement a search autocomplete widget using search_suggestions completions and product results.
- Index the full Aldi UK product range by walking the category tree from get_categories and paginating search_products per category.
- Monitor Aldi's promotional badges to detect special-offer products within a product category.
- Feed a meal-planning app with grocery item data including brand names and category assignments from search results.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Aldi UK have an official public developer API?+
What does the service_point parameter do, and when should I use it?+
Does the API return stock availability or inventory levels?+
How does pagination work in search_products?+
offset (number of results to skip) and limit (results per page) parameters. The response includes a pagination object with offset, limit, and totalCount, so you can calculate how many pages exist and iterate through the full result set. Valid limit values are fixed: 12, 16, 24, 30, 32, 48, or 60.