# Vicedeal Product Search Scraper (`stealth_mode/vicedeal-product-search-scraper`) Actor

Scrape product listings from Vicedeal.com effortlessly. This scraper collects titles, prices, variants, images, wishlist status, and 14+ fields per product — perfect for price monitoring, competitor analysis, and inventory aggregation.

- **URL**: https://apify.com/stealth\_mode/vicedeal-product-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Vicedeal Product Search Scraper: Extract Product Listings Instantly

---

### What Is Vicedeal.com?

Vicedeal.com is a dynamic e-commerce platform specializing in computer hardware, office equipment, and related products. With thousands of SKUs across multiple categories, it serves both individual shoppers and businesses. Tracking product prices, availability, and updates manually is labor-intensive — the **Vicedeal Product Search Scraper** automates data collection, delivering structured product intelligence at scale.

---

### Overview

The **Vicedeal Product Search Scraper** extracts product listings from Vicedeal category and search pages, transforming raw catalog data into clean, structured records. It is designed for:

- **Price monitoring services** tracking product changes and competitive pricing
- **E-commerce aggregators** building multi-source product feeds
- **Market researchers** analyzing computer and office equipment trends
- **Retailers** benchmarking competitor inventory and pricing strategies

Key strengths include bulk URL processing, configurable item limits, and robust error handling that keeps runs alive even when individual URLs fail.

---

### Input Format

The scraper accepts a JSON configuration object with three core parameters:

```json
{
  "urls": [
    "https://vicedeal.com/collections/computer-kantoor"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
````

| Parameter | Type | Description |
|---|---|---|
| `urls` | Array | Direct links to Vicedeal product search or category pages. Supports multiple URLs for bulk scraping (e.g., different categories or search queries). |
| `ignore_url_failures` | Boolean | If `true`, the scraper continues running if one or more URLs fail. Set to `false` to halt on any failure. Default: `true`. |
| `max_items_per_url` | Integer | Maximum number of products extracted per URL (e.g., `200`). Useful for controlling data volume and run time. |

**Example use cases:**

- Single URL: `https://vicedeal.com/collections/computer-kantoor`
- Search query: `https://vicedeal.com/search?q=laptop`
- Multiple categories: paste 5–10 category URLs to one run

> **Tip:** Start with `max_items_per_url: 20` for testing, then increase to `200` for production runs.

***

### Output Format

**Sample output**

```json
{
  "aggregates": {
    "__typename": "ProductListingAggregates",
    "reviews_count": 0,
    "reviews_rating_average": 0.0
  },
  "alert": null,
  "compare_at_price_range": {
    "__typename": "ProductPriceRange",
    "max_variant_price": {
      "__typename": "MoneyV2",
      "amount": "30.09",
      "currency_code": "EUR"
    },
    "min_variant_price": {
      "__typename": "MoneyV2",
      "amount": "30.09",
      "currency_code": "EUR"
    }
  },
  "handle": "druksolenoide-n75-boost-vacuumklep-voor-bora-passat-c5-a-6-b6-a-4-1-8t",
  "id": "UHJvZHVjdDoyMzg4NzgyMzI",
  "image": {
    "__typename": "Image",
    "id": "SW1hZ2U6NTE3NzU5Njg",
    "original_src": "https://images.nexusapp.co/assets/3a/28/ee/229589861.jpg"
  },
  "in_wishlist": null,
  "inserted_at": "2025-05-09T05:23:28.234242",
  "options": [
    {
      "__typename": "ProductOption",
      "id": "UHJvZHVjdE9wdGlvbjoxZmM1M2ZjYy01ZDI5LTQ0ZDUtOGJkNy00NjFkYWE0YzI3Mjk",
      "name": "Title",
      "values": [
        "Default Title"
      ]
    }
  ],
  "price_range": {
    "__typename": "ProductPriceRange",
    "max_variant_price": {
      "__typename": "MoneyV2",
      "amount": "22.79",
      "currency_code": "EUR"
    },
    "min_variant_price": {
      "__typename": "MoneyV2",
      "amount": "22.79",
      "currency_code": "EUR"
    }
  },
  "title": "Druksolenoïde  n75 boost vacuümklep voor bora passat  c5 a 6 b6 a 4 1.8t",
  "updated_at": "2026-06-04T18:16:28.781233",
  "variants": {
    "__typename": "ProductVariantConnection",
    "edges": [
      {
        "__typename": "ProductVariantEdge",
        "node": {
          "__typename": "ProductVariant",
          "barcode": "8720453112625",
          "compare_at_price": {
            "__typename": "MoneyV2",
            "amount": "30.09",
            "currency_code": "EUR"
          },
          "id": "UHJvZHVjdFZhcmlhbnQ6OTQ0MzIwNzgx",
          "image": {
            "__typename": "Image",
            "id": "SW1hZ2U6NTE3NzU5NzM",
            "original_src": "https://images.nexusapp.co/assets/cc/5a/c9/229586880.jpg"
          },
          "position": 0,
          "price": {
            "__typename": "MoneyV2",
            "amount": "22.79",
            "currency_code": "EUR"
          },
          "selected_options": [
            {
              "__typename": "SelectedOption",
              "name": "Title",
              "value": "Default Title"
            }
          ],
          "title": "Default Title"
        }
      }
    ],
    "page_info": {
      "__typename": "PageInfo",
      "end_cursor": "YXJyYXljb25uZWN0aW9uOjA=",
      "has_next_page": false,
      "has_previous_page": false,
      "start_cursor": "YXJyYXljb25uZWN0aW9uOjA="
    }
  },
  "from_url": "https://vicedeal.com/search?q=a"
}
```

Each scraped product returns a rich record with 14 key fields:

#### Product Identification

| Field | Meaning | Example |
|---|---|---|
| `ID` | Unique Vicedeal product identifier | `prod_abc123xyz` |
| `Title` | Product name as displayed on the listing | `Dell XPS 13 Laptop - Silver` |
| `Handle` | URL-friendly identifier used in product slug | `dell-xps-13-laptop-silver` |
| `Image` | Primary product image URL | `https://cdn.vicedeal.com/products/...` |

#### Pricing & Comparisons

| Field | Meaning | Example |
|---|---|---|
| `Price Range` | Current selling price range | `€899–€1,299` |
| `Compare At Price Range` | Original or MSRP price range (before discount) | `€1,299–€1,699` |

**Note:** When `Price Range` is lower than `Compare At Price Range`, the product is discounted.

#### Product Attributes

| Field | Meaning | Example |
|---|---|---|
| `Variants` | Available product variations (color, size, storage, etc.) | `["Silver - 512GB", "Gold - 256GB", "Space Gray - 1TB"]` |
| `Options` | Customization choices offered at checkout | `["Screen Size", "Processor", "RAM"]` |

#### Engagement & Status

| Field | Meaning | Example |
|---|---|---|
| `In Wishlist` | Boolean indicating if the product is in high demand or wishlisted | `true` / `false` |
| `Alert` | Availability or price alert status | `true` (if restocking soon) |
| `Aggregates` | Aggregated metrics (e.g., review count, rating) | `{"reviews": 245, "rating": 4.7}` |

#### Timestamps

| Field | Meaning | Example |
|---|---|---|
| `Inserted At` | When the product was first added to Vicedeal | `2024-01-15T10:30:00Z` |
| `Updated At` | Last modification timestamp (price, description, inventory) | `2024-03-20T14:22:15Z` |

***

### How to Use

1. **Gather URLs** — Navigate to Vicedeal.com, open product category or search pages, and copy the full URL.
2. **Prepare input** — Add URLs to the `urls` array in JSON format.
3. **Set limits** — Choose `max_items_per_url` (e.g., `50–200` for standard runs).
4. **Enable error handling** — Keep `ignore_url_failures: true` to prevent interruptions.
5. **Start the scraper** — Trigger the run and monitor progress in the log.
6. **Download results** — Export as JSON, CSV, or Excel for analysis.

**Best practices:**

- Test with a single URL and `max_items_per_url: 10` before scaling.
- Use distinct runs for different categories to organize results.
- Schedule recurring runs to track price changes and inventory updates over time.

**Common issues:**

- If no products are returned, verify the URL points to a product listing page (not a static page).
- Increase `max_items_per_url` gradually; very high values may timeout.

***

### Use Cases & Business Value

- **Price monitoring:** Track Vicedeal product prices daily and alert on significant changes
- **Competitive intelligence:** Compare your pricing against Vicedeal's catalog
- **Product aggregators:** Ingest Vicedeal listings into your own product database or marketplace
- **Market analysis:** Identify trending computer and office products, stock availability patterns
- **Dropshipping:** Monitor supplier inventory and pricing for real-time product syncing

The Vicedeal Product Search Scraper eliminates tedious manual browsing, delivering structured product data that feeds directly into pricing engines, analytics platforms, and integration workflows.

***

### Conclusion

The **Vicedeal Product Search Scraper** is a reliable, efficient tool for anyone who needs to monitor or aggregate product listings from Vicedeal.com. With detailed output across 14+ fields and flexible configuration, it accelerates competitive research, price tracking, and inventory synchronization. Start scraping today and gain actionable product intelligence.

# Actor input Schema

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

Add the URLs of the product search list 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.

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

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://vicedeal.com/collections/computer-kantoor"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# 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://vicedeal.com/collections/computer-kantoor"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/vicedeal-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://vicedeal.com/collections/computer-kantoor"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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://vicedeal.com/collections/computer-kantoor"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/vicedeal-product-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=stealth_mode/vicedeal-product-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Vicedeal Product Search Scraper",
        "description": "Scrape product listings from Vicedeal.com effortlessly. This scraper collects titles, prices, variants, images, wishlist status, and 14+ fields per product — perfect for price monitoring, competitor analysis, and inventory aggregation.",
        "version": "0.0",
        "x-build-id": "rJHCcEH0QkEd10OuD"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~vicedeal-product-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-vicedeal-product-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/stealth_mode~vicedeal-product-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-vicedeal-product-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/stealth_mode~vicedeal-product-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-vicedeal-product-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "urls": {
                        "title": "URLs of the product search list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the product search list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
