# Aldi UK grocery shelf prices and product labels

> Search groceries, categories or dated campaigns; query, categoryKey or promotionKey is required.
> ReefAPI engine `aldi-uk` · 5 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/aldi-uk/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed calls are free except verified SHEIN NOT_FOUND on product/detail and price (4 credits).
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http). Send the key as `Authorization: Bearer <key>`, or put it in the URL (`?key=<key>`) when the client has no header field, as ChatGPT does.

## Endpoints

### POST https://api.reefapi.com/aldi-uk/v1/search — 3 credits
Search groceries, categories or dated campaigns; query, categoryKey or promotionKey is required.

**Parameters:**
- `query` (string, optional) — Keyword, or use categoryKey for category browsing.
- `promotionKey` (string, optional) — Dated campaign key from promotions. May include future on-sale products.
- `categoryKey` (string, optional) — Category ID from categories. May be combined with query.
- `brandName` (array, optional) — Exact brand values from facets; multiple values use source OR semantics.
- `categoryTree` (array, optional) — Category facet IDs from the current search response.
- `theme` (array, optional) — Exact campaign theme names from facets.
- `sort` (enum, optional, default "relevance") — Source ordering. [one of: relevance, name_asc, name_desc, price_asc, price_desc]
- `page` (integer, optional, default 1) — One-based page. Beyond the source total returns INVALID_PARAM.
- `limit` (enum, optional, default 30) — Source supported page size. [one of: 12, 16, 24, 30, 32, 48, 60]

**Returns:** products with published GBP pack/unit prices, promotions, category scope, pagination and live facets.

**Example request body:**
```json
{
  "query": "milk",
  "brandName": [
    "COWBELLE"
  ],
  "limit": 12
}
```

### POST https://api.reefapi.com/aldi-uk/v1/promotions — 1 credit
Discover public dated campaigns and themes; grocery offers and merchandise are mixed.

**Parameters:** none

**Returns:** Campaign keys, on-sale dates and themes for the search promotionKey filter.

### POST https://api.reefapi.com/aldi-uk/v1/product/detail — 3 credits
Read the full public product record and label.

**Parameters:**
- `id` (string, required) — Retailer SKU from search, with leading zeros, or Aldi UK product URL. Not a GTIN.

**Returns:** Product identity, prices, description, label ingredients/allergens/nutrition/storage/usage, images, variants and source availability flags.

**Example request body:**
```json
{
  "id": "000000000000543221"
}
```

### POST https://api.reefapi.com/aldi-uk/v1/categories — 1 credit
Get the current category tree.

**Parameters:** none

**Returns:** Source category IDs, names, URLs and nested children; SpecialBuys marked separately.

### POST https://api.reefapi.com/aldi-uk/v1/availability — 1 credit
Get indicative store stock. id plus location, store_id, or latitude AND longitude is required.

**Parameters:**
- `id` (string, required) — Retailer SKU from search, with leading zeros, or Aldi UK product URL. Not a GTIN.
- `location` (string, optional) — Town or postcode for the public stock checker. Use one location mode.
- `store_id` (string, optional) — Store reference returned by availability. Use one location mode.
- `latitude` (number, optional) — Latitude; requires longitude and excludes location/store_id.
- `longitude` (number, optional) — Longitude; requires latitude.
- `radius` (integer, optional, default 50) — Source distance radius in miles, with coordinates only.
- `only_in_stock` (boolean, optional, default false) — Source checkbox; returned indicators still govern interpretation.
- `page` (integer, optional, default 1) — One-based stock-checker result page. Source may error beyond the total.
- `limit` (integer, optional, default 10) — Stores per page; the source caps this at 10.

**Returns:** Paginated stores with source traffic-light indicators and labels; MARKET_UNAVAILABLE when no availability data is published.

**Example request body:**
```json
{
  "id": "000000000000543221"
}
```

## At scale
- **Volume:** 5M+ requests a day, measured at 60 requests a second across the fleet with no
  central bottleneck. Per-key limits are raised for high-volume accounts; volume pricing on request.
- **Missing a source:** tell us a site we do not cover and it becomes an engine. A customer asked
  for bestprice.gr on 21 Sep 2026 and it was in the catalog on 22 Sep.
- **Support:** 2 minute median time from a question in the live chat to the first answer. Setup
  help included, no support tier to buy.
- **One key, one credit pool** across every API. No per-site plans, no separate subscriptions.

## More
- Try it live, no code: https://reefapi.com/playground?engine=aldi-uk
- Human docs page: https://reefapi.com/docs/aldi-uk
- Overview page: https://reefapi.com/aldi-uk-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
