EXAMPLE OUTPUT

See the data

Saved sample
urlhttps://www.waitrose.com/ecom/products/waitrose-loose-cucumber/086468-44158-44159
product_id086468-44158-44159
nameWaitrose Loose Cucumber
price1.1
currencyGBP
in_stocktrue
sku086468
mpn086468
brandWaitrose Ltd
categoryCucumbers
breadcrumbs[ "Groceries", "Fresh & Chilled", "Fresh Salad & Herbs", "Cucumbers" ]
breadcrumb_urls
[ "https://www.waitrose.com/ecom/shop/browse/groceries", "https://www.waitrose.com/ecom/shop/browse/groceries/fresh_and_chilled", "https://www.waitrose.com/ecom/shop/browse/g…
[
  "https://www.waitrose.com/ecom/shop/browse/groceries",
  "https://www.waitrose.com/ecom/shop/browse/groceries/fresh_and_chilled",
  "https://www.waitrose.com/ecom/shop/browse/groceries/fresh_and_chilled/fresh_salad_and_herbs",
  "https://www.waitrose.com/ecom/shop/browse/groceries/fresh_and_chilled/fresh_salad_and_herbs/cucumbers"
]
main_imagehttps://ecom-su-static-prod.wtrecom.com/images/products/4/LN_086468_BP_4.jpg
images[ "https://ecom-su-static-prod.wtrecom.com/images/products/4/LN_086468_BP_4.jpg" ]
description
Description Cucumber Warnings Wash before use Nutrition . Contains 5 Servings Energy: Per 100g: 45kJ; A serving contains: 36kJ Energy: Per 100g: 11kcal; A serving contains: 9kcal…
Description
Cucumber

Warnings
Wash before use

Nutrition
. Contains 5 Servings
Energy: Per 100g: 45kJ; A serving contains: 36kJ
Energy: Per 100g: 11kcal; A serving contains: 9kcal
Fat: Per 100g: <0.5g; A serving contains: <0.5g
of which saturates: Per 100g: 0.0g; A serving contains: 0.0g
Carbohydrate: Per 100g: 1.5g; A serving contains: 1.2g
of which sugars: Per 100g: 1.4g; A serving contains: 1.1g
Fibre: Per 100g: 0.5g; A serving contains: <0.5g
Protein: Per 100g: 0.7g; A serving contains: 0.6g
Salt: Per 100g: 0.0g; A serving contains: 0.0g
description_html
<h2>Description</h2><p>Cucumber</p><h2>Warnings</h2><ul><li>Wash before use</li></ul><h2>Nutrition</h2><p>. Contains 5 Servings</p><dl><dt>Energy</dt><dd>Per 100g: 45kJ; A serving …
<h2>Description</h2><p>Cucumber</p><h2>Warnings</h2><ul><li>Wash before use</li></ul><h2>Nutrition</h2><p>. Contains 5 Servings</p><dl><dt>Energy</dt><dd>Per 100g: 45kJ; A serving contains: 36kJ</dd><dt>Energy</dt><dd>Per 100g: 11kcal; A serving contains: 9kcal</dd><dt>Fat</dt><dd>Per 100g: &lt;0.5g; A serving contains: &lt;0.5g</dd><dt>of which saturates</dt><dd>Per 100g: 0.0g; A serving contains: 0.0g</dd><dt>Carbohydrate</dt><dd>Per 100g: 1.5g; A serving contains: 1.2g</dd><dt>of which sugars</dt><dd>Per 100g: 1.4g; A serving contains: 1.1g</dd><dt>Fibre</dt><dd>Per 100g: 0.5g; A serving contains: &lt;0.5g</dd><dt>Protein</dt><dd>Per 100g: 0.7g; A serving contains: 0.6g</dd><dt>Salt</dt><dd>Per 100g: 0.0g; A serving contains: 0.0g</dd></dl>
sizeeach
attributes
{ "Origins": "Morocco; Spain; Netherlands; United Kingdom", "Packaging": "Label: Paper & card; Shrinkwrap: Plastic - LDPE (Low Density Polyethylene); Film: Plastic - LDPE (Low …
{
  "Origins": "Morocco; Spain; Netherlands; United Kingdom",
  "Packaging": "Label: Paper & card; Shrinkwrap: Plastic - LDPE (Low Density Polyethylene); Film: Plastic - LDPE (Low Density Polyethylene) (recyclable)",
  "Shelf life (days)": "7"
}
rating_value4.0706
review_count354
seller_nameWaitrose
canonical_urlhttps://www.waitrose.com/ecom/products/waitrose-loose-cucumber/086468-44158-44159
scraped_at2026-08-20T03:33:35.059Z

Collect structured grocery product data from Waitrose product and category URLs.

Issues and feature requests

If you encounter an issue or need a field added, open an issue on the Actor page or write to hello@123webdata.com.

Output Example (simplified)

The overview shows the most useful fields in a table. Product images are displayed as thumbnails when the website provides them.

Image Product URL Product ID Product name Current price Currency In stock Brand Seller Scraped at
https://www.waitrose.com/ecom/products/waitrose-loose-cucumber/086468-44158-44159 086468-44158-44159 Waitrose Loose Cucumber 1.1 GBP true Waitrose Ltd Waitrose 2026-08-20T03:33:35.059Z

How to scrape supported list pages

This Actor accepts individual product links in productUrls. It accepts category pages in categoryUrls.

  1. Open a supported list page in your browser.
  2. Choose a category you need.
  3. Copy the final URL from the address bar and paste it into categoryUrls.

The Actor follows the products shown on that page.

Features

  • Scrapes detailed grocery product information from Waitrose product pages
  • Accepts individual product URLs and category pages
  • Lets you limit the number of saved products and choose whether to continue through additional result pages
  • Returns structured prices and availability, brands and grocery categories, ingredients, warnings, nutrition, and packaging details, and ratings and full-size product images for viewing, export, and analysis

Pricing

This Actor uses pay-per-event pricing. Its running costs are included.

  • Actor start: $0.02 once per run β€” One fixed charge for starting a run.
  • Result: $0.00089 each ($0.89 per 1,000) β€” A product record collected directly from a supported list page.
  • Product detail: $0.00199 each ($1.99 per 1,000) β€” A full product record collected from its product page.

The start charge applies once per run. Each saved product is charged either as a Result or a Product detail, never both.

Results in one run Result Product detail
100 $0.11 $0.22
1,000 $0.91 $2.01

Apify's Free plan currently includes $5 in monthly usage credits. If the full $5 is available for this Actor, one run covers about 5,595 Results or 2,502 Product details. Other Apify usage reduces the available credit.

Input

The Actor accepts the following input parameters:

Field Type Description
productUrls array Product URLs to scrape
categoryUrls array Supported list pages: category pages
maxResultsPerScrape integer Maximum number of product records to save
usePagination boolean Whether to continue through additional result pages
scrapeProductDetails boolean Enabled returns Product detail records with the product-page fields listed below. Disabled returns Result records with the list-level fields.

What data you get in each mode

Every saved product is stored as one record. scrapeProductDetails decides which mode you receive; the lists below name every field each mode can return. A field is empty when the website does not show that information.

Result

A list-level product record with 12 declared fields:

url, product_id, name, price, currency, main_image, images, rating_value, review_count, canonical_url, scraped_at, attributes

Product detail

A full product record with 23 declared fields:

url, product_id, name, price, currency, in_stock, sku, mpn, brand, category, breadcrumbs, breadcrumb_urls, main_image, images, description, description_html, size, attributes, rating_value, review_count, seller_name, canonical_url, scraped_at

Output Example (full)

The Actor stores one structured record per product. Card-only records contain only fields available on the list; detail-only fields are omitted.

{
  "url": "https://www.waitrose.com/ecom/products/waitrose-loose-cucumber/086468-44158-44159",
  "product_id": "086468-44158-44159",
  "name": "Waitrose Loose Cucumber",
  "price": 1.1,
  "currency": "GBP",
  "in_stock": true,
  "sku": "086468",
  "mpn": "086468",
  "brand": "Waitrose Ltd",
  "category": "Cucumbers",
  "breadcrumbs": [
    "Groceries",
    "Fresh & Chilled",
    "Fresh Salad & Herbs",
    "Cucumbers"
  ],
  "breadcrumb_urls": [
    "https://www.waitrose.com/ecom/shop/browse/groceries",
    "https://www.waitrose.com/ecom/shop/browse/groceries/fresh_and_chilled",
    "https://www.waitrose.com/ecom/shop/browse/groceries/fresh_and_chilled/fresh_salad_and_herbs",
    "https://www.waitrose.com/ecom/shop/browse/groceries/fresh_and_chilled/fresh_salad_and_herbs/cucumbers"
  ],
  "main_image": "https://ecom-su-static-prod.wtrecom.com/images/products/4/LN_086468_BP_4.jpg",
  "images": [
    "https://ecom-su-static-prod.wtrecom.com/images/products/4/LN_086468_BP_4.jpg"
  ],
  "description": "Description\nCucumber\n\nWarnings\nWash before use\n\nNutrition\n. Contains 5 Servings\nEnergy: Per 100g: 45kJ; A serving contains: 36kJ\nEnergy: Per 100g: 11kcal; A serving contains: 9kcal\nFat: Per 100g: <0.5g; A serving contains: <0.5g\nof which saturates: Per 100g: 0.0g; A serving contains: 0.0g\nCarbohydrate: Per 100g: 1.5g; A serving contains: 1.2g\nof which sugars: Per 100g: 1.4g; A serving contains: 1.1g\nFibre: Per 100g: 0.5g; A serving contains: <0.5g\nProtein: Per 100g: 0.7g; A serving contains: 0.6g\nSalt: Per 100g: 0.0g; A serving contains: 0.0g",
  "description_html": "<h2>Description</h2><p>Cucumber</p><h2>Warnings</h2><ul><li>Wash before use</li></ul><h2>Nutrition</h2><p>. Contains 5 Servings</p><dl><dt>Energy</dt><dd>Per 100g: 45kJ; A serving contains: 36kJ</dd><dt>Energy</dt><dd>Per 100g: 11kcal; A serving contains: 9kcal</dd><dt>Fat</dt><dd>Per 100g: &lt;0.5g; A serving contains: &lt;0.5g</dd><dt>of which saturates</dt><dd>Per 100g: 0.0g; A serving contains: 0.0g</dd><dt>Carbohydrate</dt><dd>Per 100g: 1.5g; A serving contains: 1.2g</dd><dt>of which sugars</dt><dd>Per 100g: 1.4g; A serving contains: 1.1g</dd><dt>Fibre</dt><dd>Per 100g: 0.5g; A serving contains: &lt;0.5g</dd><dt>Protein</dt><dd>Per 100g: 0.7g; A serving contains: 0.6g</dd><dt>Salt</dt><dd>Per 100g: 0.0g; A serving contains: 0.0g</dd></dl>",
  "size": "each",
  "attributes": {
    "Origins": "Morocco; Spain; Netherlands; United Kingdom",
    "Packaging": "Label: Paper & card; Shrinkwrap: Plastic - LDPE (Low Density Polyethylene); Film: Plastic - LDPE (Low Density Polyethylene) (recyclable)",
    "Shelf life (days)": "7"
  },
  "rating_value": 4.0706,
  "review_count": 354,
  "seller_name": "Waitrose",
  "canonical_url": "https://www.waitrose.com/ecom/products/waitrose-loose-cucumber/086468-44158-44159",
  "scraped_at": "2026-08-20T03:33:35.059Z"
}

Use Cases

  • Monitor grocery prices and availability
  • Compare nutrition, ingredients, packaging, and ratings
  • Build UK grocery assortment datasets

Integrate with AI and automation

Use with AI through MCP

Connect your AI assistant to the Apify MCP server. It can discover and run Actors, then access the results in the same conversation. For example, ask your assistant to scrape a list of products from Waitrose, compare prices, or summarize the collected data.

Run on a schedule

After one successful run, use Apify Schedules to repeat the same task hourly, daily, weekly, or with a custom cron schedule. Saved tasks are useful when you want to keep the same URLs and settings for every run.

Connect with n8n

Create an n8n account and add the verified Apify node to a workflow. Choose Run an Actor and Get Dataset when the workflow should start this Actor, wait for completion, and receive the product rows for the next node. See the Apify integration for n8n.

Connect with Make

Create a Make account and add the Apify Run an Actor module. Follow it with Get Dataset Items to pass the product rows to Google Sheets, a database, email, or another Make module. For longer runs, use Watch Actor Runs followed by Get Dataset Items.

Read the Make integration guide.

Input schema
{
  "title": "Waitrose Scraper Input",
  "type": "object",
  "schemaVersion": 1,
  "properties": {
    "productUrls": {
      "title": "Product URLs",
      "type": "array",
      "description": "Product URLs on Waitrose.",
      "prefill": [
        "https://www.waitrose.com/ecom/products/waitrose-loose-cucumber/086468-44158-44159"
      ],
      "default": [],
      "editor": "stringList"
    },
    "categoryUrls": {
      "title": "Category URLs",
      "type": "array",
      "description": "Category URLs on Waitrose.",
      "prefill": [
        "https://www.waitrose.com/ecom/shop/browse/groceries/fresh_and_chilled/fresh_fruit"
      ],
      "default": [],
      "editor": "stringList"
    },
    "maxResultsPerScrape": {
      "title": "Maximum results",
      "type": "integer",
      "description": "Maximum number of product records to save.",
      "default": 20,
      "minimum": 1,
      "maximum": 100000
    },
    "usePagination": {
      "title": "Use pagination",
      "type": "boolean",
      "description": "Enqueue the bounded pagination lookahead exposed by this actor.",
      "default": true
    },
    "scrapeProductDetails": {
      "title": "Include product details",
      "type": "boolean",
      "default": true,
      "description": "Enabled returns Product detail records with the product-page fields listed in the README. Disabled returns Result records with the list-level fields."
    }
  }
}
Output schema
{
  "actorSpecification": 1,
  "fields": {
    "type": "object",
    "additionalProperties": false,
    "properties": {
      "url": {
        "type": [
          "string",
          "null"
        ],
        "format": "uri"
      },
      "product_id": {
        "type": [
          "string",
          "null"
        ],
        "description": "Stable source-side product identifier."
      },
      "name": {
        "type": [
          "string",
          "null"
        ]
      },
      "price": {
        "type": [
          "number",
          "null"
        ]
      },
      "currency": {
        "type": [
          "string",
          "null"
        ],
        "description": "ISO 4217 currency code."
      },
      "in_stock": {
        "type": [
          "boolean",
          "null"
        ]
      },
      "sku": {
        "type": [
          "string",
          "null"
        ]
      },
      "mpn": {
        "type": [
          "string",
          "null"
        ]
      },
      "brand": {
        "type": [
          "string",
          "null"
        ]
      },
      "category": {
        "type": [
          "string",
          "null"
        ]
      },
      "breadcrumbs": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "breadcrumb_urls": {
        "type": "array",
        "items": {
          "type": "string",
          "format": "uri"
        }
      },
      "main_image": {
        "type": [
          "string",
          "null"
        ],
        "format": "uri"
      },
      "images": {
        "type": "array",
        "items": {
          "type": "string",
          "format": "uri"
        }
      },
      "description": {
        "type": [
          "string",
          "null"
        ]
      },
      "description_html": {
        "type": [
          "string",
          "null"
        ],
        "description": "Sanitized rich-text product description with structural HTML only."
      },
      "size": {
        "type": [
          "string",
          "null"
        ]
      },
      "attributes": {
        "type": "object",
        "description": "Additional source product attributes."
      },
      "rating_value": {
        "type": [
          "number",
          "null"
        ]
      },
      "review_count": {
        "type": [
          "integer",
          "null"
        ]
      },
      "seller_name": {
        "type": [
          "string",
          "null"
        ]
      },
      "canonical_url": {
        "type": [
          "string",
          "null"
        ],
        "format": "uri"
      },
      "scraped_at": {
        "type": "string",
        "format": "date-time"
      }
    },
    "required": [
      "url",
      "name"
    ]
  },
  "views": {
    "overview": {
      "title": "Overview",
      "transformation": {
        "fields": [
          "main_image",
          "url",
          "product_id",
          "name",
          "price",
          "currency",
          "in_stock",
          "brand",
          "seller_name",
          "scraped_at"
        ]
      },
      "display": {
        "component": "table",
        "properties": {
          "main_image": {
            "label": "Image",
            "format": "image"
          },
          "url": {
            "label": "Product URL",
            "format": "link"
          },
          "product_id": {
            "label": "Product ID",
            "format": "text"
          },
          "name": {
            "label": "Product name",
            "format": "text"
          },
          "price": {
            "label": "Current price",
            "format": "number"
          },
          "currency": {
            "label": "Currency",
            "format": "text"
          },
          "in_stock": {
            "label": "In stock",
            "format": "boolean"
          },
          "brand": {
            "label": "Brand",
            "format": "text"
          },
          "seller_name": {
            "label": "Seller",
            "format": "text"
          },
          "scraped_at": {
            "label": "Scraped at",
            "format": "datetime"
          }
        }
      }
    }
  }
}
CUSTOM REQUIREMENTS

Need something different?

Tell us the website, fields, and delivery format you need. We’ll reply by email.