# Asda Product Search Scraper (`ecomscrape/asda-product-search-scraper`) Actor

Powerful Asda.com product scraper for extracting comprehensive grocery data from the UK's third-largest supermarket chain. Extract prices, stock levels, ratings, and detailed product information from Asda's extensive online catalog for market research and competitive analysis.

- **URL**: https://apify.com/ecomscrape/asda-product-search-scraper.md
- **Developed by:** [ecomscrape](https://apify.com/ecomscrape) (community)
- **Categories:** E-commerce, Developer tools, Automation
- **Stats:** 8 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Contact

If you encounter any issues or need to exchange information, please feel free to contact us through the following link:
[My profile](https://apify.com/ecomscrape)

## **Asda.com Scraper: Extract Product Data & Pricing Intelligence**

### Introduction

Asda stands as one of the United Kingdom's leading supermarket chains, serving as the third-largest supermarket with a 12.6% market share as of January 2025. Founded in the 1960s in Yorkshire, Asda operates through a comprehensive network of stores and online services, including supercentres, superstores, and supermarkets across the UK. With approximately 19 million customers served weekly, Asda's online platform represents a treasure trove of valuable retail data.

The need for systematic data extraction from Asda.com has become increasingly critical for businesses engaged in market research, competitive analysis, and retail intelligence. Whether you're a competitor looking to monitor pricing strategies, a market researcher analyzing consumer trends, or a business owner seeking to understand product positioning, accessing Asda's comprehensive product data efficiently can provide significant competitive advantages.

### Overview of the Asda.com Product Search Scraper

The Asda.com Product Search Scraper is a sophisticated data extraction tool designed to systematically collect comprehensive product information from Asda's online grocery platform. This powerful scraper navigates through Asda's product categories and search results, extracting detailed information about thousands of products including fresh produce, meat, poultry, frozen foods, and household essentials.

**Key Strengths and Advantages:**

- **Comprehensive Data Collection**: Extracts over 20 different data points per product, providing a complete picture of Asda's product catalog
- **Category Flexibility**: Works across all product categories from fresh fruits and vegetables to meat, poultry, and specialty items
- **Robust Infrastructure**: Built with proxy support and retry mechanisms to ensure reliable data collection
- **Scalable Architecture**: Capable of processing multiple URLs simultaneously while respecting rate limits

**Target Users:**

- Market research analysts studying UK grocery trends
- Competitive intelligence teams monitoring pricing strategies
- E-commerce businesses benchmarking their product offerings
- Academic researchers analyzing retail market dynamics
- Price comparison platforms requiring accurate product data

### Input and Output Details

Example url 1: https://www.asda.com/groceries/fruit-veg-flowers/fruit/view-all-fruit?page=2

Example url 2: https://www.asda.com/groceries/meat-poultry-fish/meat-poultry/chicken-turkey

Example url 3: https://www.asda.com/groceries/meat-poultry-fish/meat-poultry/chicken-turkey/chicken-thighs-drumsticks

Example Screenshot of product information page:

![](https://i.ibb.co/1Jwk0gbm/Screenshot-from-2025-08-29-16-50-16.png)

#### Input Format

The scraper accepts configuration through a JSON object with several key parameters:

##### Scrape with URLs:

```json
{
  "max_retries_per_url": 2, // Maximum number of retry attempts for each URL
  "proxy": { // Proxy configuration to avoid bot detection
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL" 
    ],
    "apifyProxyCountry": "GB" // Choose a country that matches your target data location
  },
  "max_items_per_url": 20, // Total number of items you want to scrape
  "urls": [ // Product list page URLs to scrape
    "https://www.asda.com/groceries/fruit-veg-flowers/fruit/view-all-fruit?page=2",
    "https://www.asda.com/groceries/meat-poultry-fish/meat-poultry/chicken-turkey",
    "https://www.asda.com/groceries/meat-poultry-fish/meat-poultry/chicken-turkey/chicken-thighs-drumsticks"
  ],
  "ignore_url_failures": true // Continue scraping even if some URLs fail
}
```

**The `urls` parameter**: List of product list page URLs that you want to scrape. You can add URLs one by one, or use the Bulk edit section to add a prepared list.

**The `ignore_url_failures` parameter**: If set to `true`, the scraper will continue running even if some URLs fail to be scraped after reaching the maximum number of retries. This ensures that one problematic URL doesn't stop your entire scraping job.

*When you provide a list of URLs for scraping, all options in the "Scrape with search filters" section will be disabled. The system will only collect data from the URLs you specified.*

##### Scrape with Search Filters:

```json
{
  "max_retries_per_url": 2, // Maximum number of retry attempts for each search filter
  "proxy": { // Proxy configuration to avoid bot detection
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL" 
    ],
    "apifyProxyCountry": "GB" // Choose a country that matches your target data location
  },
  "max_items_per_url": 20, // Total number of items you want to scrape
  "keyword": "chicken", // Search keyword to find products
  "sort_by": "EN_PRICE-LOW-TO-HIGH", // Sort products by specific criteria
  "page": 1 // Starting page number for search results
}
```

**The `keyword` parameter**: The search keyword to find products (e.g., "chicken", "bread", "milk", "vegetables").

**The `sort_by` parameter**: Sort products by various criteria:

- `"relevance"` - Relevance (most relevant first)
- `"EN_PRICE-LOW-TO-HIGH"` - Price (low to high)
- `"EN_PRICE-HIGH-TO-LOW"` - Price (high to low)
- `"EN_PRICE_PER_KG-LOW-TO-HIGH"` - Price per kg/unit (low to high)
- `"EN_PRICE_PER_KG-HIGH-TO-LOW"` - Price per kg/unit (high to low)
- `"AVG_RATING-HIGH-TO-LOW"` - Rating (high to low)

**The `page` parameter**: Starting page number for scraping, useful for continuing interrupted scrapes or targeting specific result ranges.

*When using search filters for scraping, you need to leave the `urls` field empty (or set it to `null`) in the "Scrape with URLs" configuration.*

##### General Options:

**The `max_items_per_url` parameter**: Limits the number of products extracted from each product list page or search results page. The default value is 20, providing a manageable batch size while allowing for comprehensive data collection.

**The `max_retries_per_url` parameter**: Sets the maximum number of retry attempts for each URL or search filters if the scrape is detected as a bot or the page fails to load. The default value is 2, providing a good balance between thoroughness and efficiency.

**The `proxy` parameter**: Proxy configuration is essential for maintaining anonymity and avoiding detection. The residential proxy option ensures that your scraping activities appear as legitimate browsing, reducing the risk of being blocked or rate-limited. You should choose a country that matches the location of the website you're scraping (e.g., UK/GB for asda.com).

#### Output Format

You get the output from the Asda.com Product Search Scraper stored in a tab. The following is an example of the Information Fields collected after running the Actor.

```json
[ // List of product information
  {
  "id": "38976",
  "status": "A",
  "pharmacy_restricted": false,
  "cin": "856492",
  "start_date": 1635854400.0,
  "end_date": 1924948800.0,
  "name": "Just Essentials Chicken Flavour Instant Noodles 65g",
  "cs_yes": false,
  "show_price_cs": true,
  "sales_type": "Each",
  "image_id": "20450656",
  "brand": "JUST ESSENTIALS by ASDA",
  "is_bws": false,
  "is_frozen": false,
  "is_sponsored": false,
  "label": "",
  "label_start_date": null,
  "label_end_date": null,
  "prices": {
    "en": {
      "offer": "List",
      "price": 0.25,
      "priceperuom": 3.84615,
      "priceperuomformatted": "£3.85/KG"
    }
  },
  "primary_taxonomy": {
    "cat_id": "1215337189632",
    "cat_name": "Food Cupboard",
    "dept_id": "1215685891269",
    "dept_name": "Noodle Pots & Instant Snacks",
    "aisle_id": "1215685891276",
    "aisle_name": "Packet Noodles",
    "shelf_id": "1215664353051",
    "shelf_name": "Packet Noodles"
  },
  "is_fto": false,
  "product_type": "STANDARD",
  "avg_rating": 3.9301,
  "rating_count": 143.0,
  "icons": [
    {
      "id": "51000002",
      "icon_name": "801_NoShellfish",
      "clickable": false,
      "image_url": "https://ui.assets-asda.com/dm/_000_Icon?&$Icon-wapp$",
      "start_date": 1551700800,
      "end_date": 1551873600,
      "priority": 10440.0
    }
  ],
  "pack_size": "65G",
  "stock": {
    "4565": 999
  },
  "max_qty": 10,
  "object_id": "856492",
  "highlight_result": {
    "id": {
      "value": "38976",
      "matchlevel": "none",
      "matchedwords": []
    },
    "cin": {
      "value": "856492",
      "matchlevel": "none",
      "matchedwords": []
    },
    "name": {
      "value": "Just Essentials <em>Chicken</em> Flavour Instant Noodles 65g",
      "matchlevel": "full",
      "fullyhighlighted": false,
      "matchedwords": [
        "chicken"
      ]
    },
    "brand": {
      "value": "JUST ESSENTIALS by ASDA",
      "matchlevel": "none",
      "matchedwords": []
    },
    "primary_taxonomy": {
      "aisle_name": {
        "value": "Packet Noodles",
        "matchlevel": "none",
        "matchedwords": []
      },
      "shelf_name": {
        "value": "Packet Noodles",
        "matchlevel": "none",
        "matchedwords": []
      }
    },
    "lifestyles": [
      {
        "value": "Suitable for Vegetarians",
        "matchlevel": "none",
        "matchedwords": []
      }
    ]
  },
  "from_url": "https://www.asda.com/groceries/search/chicken?sort=EN_PRICE-LOW-TO-HIGH&page=1"
}, // ... Many other product details
]
```

The scraper returns comprehensive product data in a structured format containing 23 distinct fields that provide complete product intelligence:

**Core Product Identification:**

- **ID**: Unique Asda product identifier for database management
- **CIN**: Customer Item Number used in Asda's internal systems
- **Name**: Complete product title including brand and specifications
- **Object ID**: Technical identifier for product object references

**Pricing and Commercial Data:**

- **Prices**: Complete pricing structure including standard price, promotional prices, and unit costs
- **Sales Type**: Indicates special pricing categories (standard, promotion, clearance)
- **Show Price CS**: Customer service pricing display flag
- **Max Quantity**: Purchase limitations per customer transaction

**Product Classification:**

- **Brand**: Manufacturer or private label brand information
- **Primary Taxonomy**: Asda's internal product categorization system
- **Product Type**: Specific product classification (food, household, personal care)
- **Pack Size**: Package dimensions, weight, or quantity specifications
- **Label**: Special product designations (organic, gluten-free, premium)

**Availability and Logistics:**

- **Status**: Product availability status (active, discontinued, seasonal)
- **Stock**: Current inventory levels or availability indicators
- **Start Date/End Date**: Product lifecycle management timestamps
- **Label Start Date/Label End Date**: Special designation validity periods

**Customer Experience Metrics:**

- **Average Rating**: Consumer satisfaction scores
- **Rating Count**: Number of customer reviews contributing to ratings
- **Icons**: Visual indicators for certifications, dietary restrictions, or special features

**Specialized Categories:**

- **Is BWS**: Beer, Wine, and Spirits category flag for age-restricted products
- **Is Frozen**: Frozen product indicator affecting shipping and storage
- **Is Sponsored**: Identifies paid promotional placements
- **Pharmacy Restricted**: Indicates products requiring pharmacy supervision
- **CS Yes**: Customer service intervention required flag
- **Is FTO**: Fair Trade Organization certification status

**Technical Fields:**

- **Image ID**: Reference to product photography in Asda's media library
- **Highlight Result**: Featured or promoted product status in search results

### How to Use the Asda.com Scraper

#### Step-by-Step Implementation

1. **URL Preparation**: Identify target Asda product categories or search result pages. Focus on specific categories like fresh produce, meat, or household items for optimal results.

2. **Configuration Setup**: Configure the JSON input with appropriate proxy settings. For UK market data, consider using UK or European residential proxies to ensure authentic pricing and availability data.

3. **Execution Parameters**: Set reasonable limits for items per URL (typically 10-50) and retry attempts (2-3) to balance thoroughness with efficiency.

4. **Data Processing**: The scraper will systematically navigate through product listings, extracting all available data points for each item found.

#### Best Practices and Tips

**Proxy Management**: Always use residential proxies from UK or nearby European countries to maintain data authenticity and avoid geo-blocking issues.

**URL Selection**: Target specific category pages rather than generic search results for more consistent data extraction. Category pages typically have more structured layouts and complete product information.

**Rate Limiting**: Implement reasonable delays between requests to maintain scraper reliability and respect Asda's server resources.

**Data Validation**: Regularly verify extracted pricing data against manual spot-checks, as promotional pricing can change frequently.

#### Common Issues and Solutions

**Incomplete Data Fields**: Some products may have missing information in specialized fields like ratings or pharmacy restrictions. This is normal for new products or items without customer reviews.

**Geographic Restrictions**: Ensure your proxy configuration matches the intended market region to access accurate pricing and availability data specific to UK customers.

**Dynamic Content Loading**: Some product details may load asynchronously. The scraper includes appropriate wait mechanisms to capture all available information.

### Benefits and Practical Applications

The Asda.com Product Search Scraper delivers significant time-saving benefits by automating what would otherwise require hundreds of hours of manual data collection. A comprehensive analysis of Asda's product catalog across multiple categories can be completed in minutes rather than weeks.

**Business Intelligence Applications:**

- **Competitive Price Monitoring**: Track pricing changes across categories to identify market trends and competitive positioning strategies
- **Product Portfolio Analysis**: Compare product ranges and identify gaps or opportunities in your own offerings
- **Market Entry Research**: Understand pricing structures and product positioning before entering the UK grocery market
- **Trend Analysis**: Monitor the introduction of new products, seasonal items, and changing consumer preferences through product availability data

**Academic and Research Value**: The comprehensive dataset enables in-depth analysis of retail market dynamics, consumer behavior patterns, and the impact of economic factors on product pricing and availability.

### Conclusion

The Asda.com Product Search Scraper represents an essential tool for anyone requiring comprehensive UK grocery market intelligence. By providing access to detailed product information from one of Britain's largest supermarket chains, this scraper enables informed business decisions and thorough market analysis. Whether you're monitoring competitive pricing, researching market trends, or analyzing product portfolios, this tool delivers the reliable, comprehensive data you need to succeed in the competitive UK retail market.

Ready to unlock valuable insights from Asda's extensive product catalog? Start extracting comprehensive grocery data today and gain the competitive edge your business needs.

## Related Actors

- [**Asda.com Product Details Scraper**](https://apify.com/ecomscrape/asda-product-details-scraper): A specialized data extraction solution engineered to harvest comprehensive product information from Asda.com's.

## Your feedback

We are always working to improve Actors' performance. So, if you have any technical feedback about Asda.com Product Search Scraper or simply found a bug, please create an issue on the Actor's Issues tab in Apify Console.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the Product list page urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped after the maximum number of retries is reached.

## `keyword` (type: `string`):

Enter the keyword to search for items

## `sort_by` (type: `string`):

Filter items by (e.g., relevance, EN_PRICE-LOW-TO-HIGH, EN_PRICE-HIGH-TO-LOW, EN_PRICE_PER_KG-LOW-TO-HIGH, EN_PRICE_PER_KG-HIGH-TO-LOW, AVG_RATING-HIGH-TO-LOW)

## `page` (type: `integer`):

Specify the page number to start scraping from

## `max_items_per_url` (type: `integer`):

Limit the number of items per URL or search filters you want to scrape

## `max_retries_per_url` (type: `integer`):

Limit the number of retries for each URL or search filters if the scrape is detected as a bot or the page fails to load

## `proxy` (type: `object`):

Select proxies to be used by your scraper.

## Actor input object example

```json
{
  "urls": [
    "https://www.asda.com/groceries/fruit-veg-flowers/fruit/view-all-fruit?page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20,
  "max_retries_per_url": 2,
  "proxy": {
    "useApifyProxy": false
  }
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.asda.com/groceries/fruit-veg-flowers/fruit/view-all-fruit?page=2"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20,
    "max_retries_per_url": 2,
    "proxy": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("ecomscrape/asda-product-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": ["https://www.asda.com/groceries/fruit-veg-flowers/fruit/view-all-fruit?page=2"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
    "max_retries_per_url": 2,
    "proxy": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("ecomscrape/asda-product-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.asda.com/groceries/fruit-veg-flowers/fruit/view-all-fruit?page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20,
  "max_retries_per_url": 2,
  "proxy": {
    "useApifyProxy": false
  }
}' |
apify call ecomscrape/asda-product-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,ecomscrape/asda-product-search-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/fIL5QcXYELp6XPnWz/builds/z0Mu9iwFSfQ8hgepW/openapi.json
