# Veepee Product Search Scraper (`stealth_mode/veepee-product-search-scraper`) Actor

Scrape product listings from VeePee.fr and partner domains with precision. Capture pricing, brand details, media assets, sale IDs, and 14+ fields per product — perfect for ecommerce researchers, marketplace analysts, and price intelligence platforms.

- **URL**: https://apify.com/stealth\_mode/veepee-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

## VeePee Product Search Scraper: Extract Flash Sale Inventory Instantly
---

### What Is VeePee?

VeePee (formerly Vente Privée) is a leading European flash sales and private shopping platform featuring time-limited deals on premium brands. Operating across multiple domains (VeePee.fr, VeePee.com, and regional variants), it hosts thousands of product listings organized by category and promotional event. Extracting this product data manually is inefficient — the **VeePee Product Search Scraper** automates large-scale collection, delivering structured product records from search results pages in seconds.

---

### Overview

The **VeePee Product Search Scraper** extracts product information from VeePee search and category pages, turning unstructured listings into machine-readable data. It is ideal for:

- **Price intelligence** platforms monitoring flash sale pricing and inventory
- **Ecommerce researchers** analyzing product trends and brand performance
- **Competitive analysts** tracking competitor product assortments and promotions
- **Data aggregators** building multi-source product catalogs

Key features include multi-domain support, configurable item limits, robust error handling via `ignore_url_failures`, and extraction of media assets alongside structured data.

---

### Input Format

The scraper accepts a JSON configuration specifying target URLs and collection parameters:

```json
{
  "urls": [
    "https://www.veepee.fr/gr/c/maison/meuble-11087?page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
````

| Field | Type | Description |
|---|---|---|
| `urls` | Array | Direct links to VeePee product search or category pages. Supports pagination parameters (e.g., `?page=2`). Can include international domains (VeePee.com, regional variants). |
| `max_items_per_url` | Integer | Maximum products to extract per URL (e.g., `200`). Useful for controlling data volume on large category pages. Default: `20`. |
| `ignore_url_failures` | Boolean | If `true`, the scraper continues when URLs fail; if `false`, execution stops. Recommended: `true` for batch operations. |

> **Tip:** Use category-level URLs with pagination for comprehensive product collection. Example: `/c/fashion/robes?page=1`, `/c/maison/meuble-11087?page=2`.

***

### Output Format

**Sample Output Record:**

```json
{
  "pricing": {
    "label": "À partir de",
    "currency": {
      "symbol": "€",
      "code": "EUR"
    },
    "price": {
      "value": 119.99,
      "postfix": ""
    },
    "retail_price": {
      "tooltip": {
        "description": "* Comparaison de prix : Prix pratiqué par un ou plusieurs professionnels autre que le vendeur www.recabedding.com"
      },
      "value": 639,
      "postfix": ""
    },
    "discount": 81,
    "retailer_price_type": 0
  },
  "is_locked": false,
  "sale_id": "meuble-11087",
  "sale_slug": "maison",
  "sub_name": "Gris",
  "slug": "sommier-perflex-cadre-de-lit-metallique-lattes-reglables-flexibles-7-pieds-inclus-resistant-et-confortable",
  "description": "Sommier Perflex | Cadre de lit métallique | Lattes réglables flexibles | 7 Pieds Inclus | Résistant et Confortable",
  "catalog_id": "bpm42649",
  "brand": "RECA BEDDING",
  "display_mode": 1,
  "sale_source": 8,
  "name": "Sommier Perflex | Cadre de lit métallique | Lattes réglables flexibles | 7 Pieds Inclus | Résistant et Confortable",
  "medias": [
    {
      "thumb": "https://media.veepee.com/v1/media/28ba51c5-7be8-4b3e-b569-4b62d3539708?width=304&height=304",
      "url": "https://media.veepee.com/v1/media/28ba51c5-7be8-4b3e-b569-4b62d3539708?width=700&height=700",
      "type": 0,
      "zoomable": true
    },
    {
      "thumb": "https://media.veepee.com/v1/media/b3b67ff1-d08e-44e8-b9c4-ccdc211b0d09?width=304&height=304",
      "url": "https://media.veepee.com/v1/media/b3b67ff1-d08e-44e8-b9c4-ccdc211b0d09?width=700&height=700",
      "type": 0,
      "zoomable": true
    },
    {
      "thumb": "https://media.veepee.com/v1/media/62b4f4c7-ef5f-4980-b4ea-80aefcb6a390?width=304&height=304",
      "url": "https://media.veepee.com/v1/media/62b4f4c7-ef5f-4980-b4ea-80aefcb6a390?width=700&height=700",
      "type": 0,
      "zoomable": true
    },
    {
      "thumb": "https://media.veepee.com/v1/media/b297b29f-ac04-4255-9f94-6129a079b16f?width=304&height=304",
      "url": "https://media.veepee.com/v1/media/b297b29f-ac04-4255-9f94-6129a079b16f?width=700&height=700",
      "type": 0,
      "zoomable": true
    }
  ],
  "id": "bppf78021315",
  "from_url": "https://www.veepee.fr/gr/c/maison/meuble-11087?page=2"
}
```

Each product record contains 14 core fields capturing pricing, metadata, brand, and media information:

#### Product Identification

| Field | Meaning | Example |
|---|---|---|
| `ID` | Unique VeePee product identifier | `"prod_12345678"` |
| `Name` | Product title as displayed on the listing | `"Premium Leather Jacket"` |
| `Slug` | URL-friendly product identifier | `"premium-leather-jacket"` |
| `Description` | Full product description including features, materials, and care instructions | `"100% genuine leather, Italian crafted..."` |

#### Pricing & Availability

| Field | Meaning | Example |
|---|---|---|
| `Pricing` | Current sale price and original price structure | `{"salePrice": 89.99, "originalPrice": 199.99}` |
| `Is Locked` | Whether the product is locked (requiring membership or specific criteria to purchase) | `false` or `true` |

#### Sale & Catalog Data

| Field | Meaning | Example |
|---|---|---|
| `Sale ID` | Identifier for the flash sale or promotional event containing this product | `"sale_flash_45678"` |
| `Sale Slug` | URL-friendly version of the sale event | `"brand-spotlight-week-2"` |
| `Catalog ID` | Product catalog or inventory reference number | `"cat_789456"` |

#### Brand & Category

| Field | Meaning | Example |
|---|---|---|
| `Brand` | Product brand or manufacturer name | `"Nike"`, `"IKEA"` |
| `Sub Name` | Product subcategory or collection within the sale | `"Spring Collection"`, `"Limited Edition"` |

#### Display & Source

| Field | Meaning | Example |
|---|---|---|
| `Display Mode` | How the product is displayed (e.g., grid, featured, carousel) | `"grid"`, `"featured"` |
| `Sale Source` | Origin domain or region of the sale (multi-domain support) | `"veepee.fr"`, `"veepee.com"` |

#### Media Assets

| Field | Meaning | Example |
|---|---|---|
| `Medias` | Array of product images and video URLs for catalog enrichment | `[{"type": "image", "url": "..."}, {"type": "video", "url": "..."}]` |

***

### How to Use

1. **Identify target pages** — Browse VeePee.fr or partner domains and find product category or search results pages you want to scrape.
2. **Prepare URLs** — Copy the full page URL (including pagination parameters like `?page=2`) into the `urls` array.
3. **Set item limits** — Adjust `max_items_per_url` based on your needs. Use `200` for large-scale collection or lower values for sampling.
4. **Enable error tolerance** — Set `ignore_url_failures: true` to ensure the scraper continues if a URL encounters issues (e.g., page unavailable, timeout).
5. **Run the scraper** — Execute the actor and monitor the logs in real-time.
6. **Export and process** — Download results as JSON, CSV, or Excel; import into your database or analytics platform.

**Best practices:**

- Test with 1–2 URLs before running batch operations.
- Use pagination parameters to organize large collections across multiple runs.
- Schedule regular runs to capture inventory changes and new flash sales.

***

### Use Cases & Business Value

- **Price intelligence:** Monitor VeePee's daily pricing, discount rates, and inventory turnover
- **Competitive monitoring:** Track brand presence and product assortment across flash sales
- **Market research:** Analyze product trends, seasonal promotions, and popular categories
- **Catalog management:** Enrich product databases with VeePee listings and media assets
- **Affiliate platforms:** Automate product feeds for ecommerce or deal aggregator websites

By automating product extraction, you eliminate manual data entry, reduce human error, and gain real-time visibility into VeePee's ever-changing inventory—enabling faster decision-making and deeper market insights.

***

### Conclusion

The **VeePee Product Search Scraper** provides a reliable, scalable solution for extracting flash sale product data from VeePee.fr and partner domains. With 14 fields spanning pricing, branding, media, and sale metadata, it delivers the intelligence needed for competitive analysis, price monitoring, and catalog enrichment. Start scraping today and unlock actionable insights from Europe's largest flash sales platform.

# 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://www.veepee.fr/gr/c/maison/meuble-11087?page=2"
  ],
  "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://www.veepee.fr/gr/c/maison/meuble-11087?page=2"
    ],
    "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/veepee-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.veepee.fr/gr/c/maison/meuble-11087?page=2"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/veepee-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://www.veepee.fr/gr/c/maison/meuble-11087?page=2"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/veepee-product-search-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Veepee Product Search Scraper",
        "description": "Scrape product listings from VeePee.fr and partner domains with precision. Capture pricing, brand details, media assets, sale IDs, and 14+ fields per product — perfect for ecommerce researchers, marketplace analysts, and price intelligence platforms.",
        "version": "0.0",
        "x-build-id": "1uRmYnKIaubpxdsi9"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~veepee-product-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-veepee-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~veepee-product-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-veepee-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~veepee-product-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-veepee-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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
