# Mydealz & Dealabs Scraper - Pepper Deals, Prices & Votes (`scrapewise/pepper-deals-scraper`) Actor

Scrape mydealz, Dealabs, hotukdeals, Chollometro, Preisjäger, Pepper.pl, Pepper NL and Promodescuentos deals: title, price, old price, discount, shipping, voucher code, merchant, category, temperature (votes), comments, dates and image. Hot, new, search or category pages. Only-new mode.

- **URL**: https://apify.com/scrapewise/pepper-deals-scraper.md
- **Developed by:** [Scrapewise Data](https://apify.com/scrapewise) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.52 / 1,000 deal delivereds

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/actors/running/actors-in-store.md#pay-per-event

## 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

## Mydealz & Dealabs Scraper - Pepper Deals, Prices & Votes

**Scrape deals from mydealz.de, Dealabs, hotukdeals, Chollometro, Preisjäger, Pepper.pl, Pepper NL and Promodescuentos without a login: title, price, old price, discount, shipping, voucher code, merchant, category, temperature (the community vote score), comment count, publish and hot dates, image and link. Hot, new, search, category and merchant pages, with page-by-page pagination.**

For price-tracking and deal-alert tools, e-commerce teams watching how their products and competitors are discussed, affiliate publishers, and analysts studying consumer demand and price drops across Europe and Mexico.

### Pepper deals scraper at a glance

- **Price:** US$ 2.00 per 1,000 deals on the Free plan, plus US$ 0.003 per run; full description US$ 1.00 per 1,000 extra
- **Eight sites in one Actor:** mydealz (Germany), Dealabs (France), hotukdeals (UK), Chollometro (Spain), Preisjäger (Austria), Pepper.pl (Poland), Pepper NL (Netherlands), Promodescuentos (Mexico)
- **Any list page:** hot, new, search, category (group) or merchant, with the site's own filters kept in the link
- **Filters:** minimum temperature, published since a date or period, skip expired deals
- **Only-new mode** for alerts every few minutes or hours: you pay only for deals you have not received before
- **Optional description:** full text and HTML, all images and every category of each deal
- **No login, no browser.** Wrong links and empty pages return free error rows

### Quick start

```json
{
  "startUrls": ["https://www.mydealz.de/hot"],
  "maxItems": 30
}
```

Deal alert: new deals on Dealabs with at least 100° from the last 24 hours, only the ones you have not seen yet:

```json
{
  "startUrls": ["https://www.dealabs.com/nouveaux"],
  "minTemperature": 100,
  "publishedSince": "24 hours",
  "onlyNew": true,
  "maxItems": 0
}
```

Keyword search with descriptions:

```json
{
  "searchTerms": ["lego", "airpods"],
  "site": "www.hotukdeals.com",
  "includeDetails": true,
  "maxItems": 30
}
```

### Input

| Field | What it does |
|---|---|
| `startUrls` | List pages of any of the eight sites: hot, new, search, category or merchant. |
| `searchTerms` | Keywords searched on the site chosen in `site`. |
| `site` | Site for keywords: www.mydealz.de, www.dealabs.com, www.hotukdeals.com, www.chollometro.com, www.preisjaeger.at, www.pepper.pl, nl.pepper.com, www.promodescuentos.com. |
| `maxItems` | Cap per link or keyword (30 deals per site page). 0 = no cap. Default 30. |
| `maxPages` | Optional page cap per link. |
| `minTemperature` | Only deals with at least this many degrees. |
| `publishedSince` | Only deals posted since a date (`2026-10-01`) or a period (`24 hours`, `7 days`). |
| `skipExpired` | Leave expired deals out. |
| `includeDetails` | Open each deal for the full description, images and categories. |
| `onlyNew` | Remember what was delivered in earlier runs and skip it, for free. |
| `proxyConfiguration` | Apify Proxy by default. |

### Example output

A real row from a run of 23 Oct 2026 on Chollometro's popular deals:

```json
{
  "type": "deal",
  "dealId": "2040486",
  "site": "chollometro.com",
  "title": "Alex Kidd in Miracle World DX, Saga (Tomb Raider, Persona, Yakuza, STAR WARS, Valkyria Chronicles)",
  "url": "https://www.chollometro.com/ofertas/alex-kidd-in-miracle-world-dx-2040486",
  "dealType": "Deal",
  "status": "Activated",
  "isExpired": false,
  "temperature": 214.98,
  "temperatureLevel": "Hot2",
  "isHot": true,
  "commentCount": 0,
  "price": 1.9,
  "originalPrice": 19.99,
  "discountPercent": 90,
  "currency": "EUR",
  "freeShipping": false,
  "merchant": "Nintendo eShop",
  "merchantDomain": "www.nintendo.com",
  "dealLink": "https://www.chollometro.com/visit/threadmain/2040486",
  "category": "Gaming",
  "categorySlug": "consolas-y-videojuegos",
  "imageUrl": "https://static.chollometro.com/threads/raw/VkJtL/2040486_1/re/768x768/qt/60/2040486_1.jpg",
  "publishedAt": "2026-10-23T03:27:31Z",
  "hotSince": "2026-10-23T04:21:15Z",
  "sourceUrl": "https://www.chollometro.com/populares"
}
```

### What data the Pepper deals scraper returns

| Field | What it is |
|---|---|
| `dealId`, `site`, `title`, `url` | The deal and its page |
| `dealType`, `status`, `isExpired` | Deal, voucher or discussion; active or expired |
| `temperature`, `temperatureLevel`, `isHot`, `isTrending`, `hotSince` | Community vote score in degrees and when the deal became hot |
| `commentCount` | Number of comments |
| `price`, `originalPrice`, `discountPercent`, `currency` | Deal price, the reference price and the discount |
| `freeShipping`, `shippingPrice` | Shipping |
| `voucherCode` | Voucher code, when the deal has one |
| `merchant`, `merchantDomain`, `dealLink` | Shop, its domain and the site's link to the offer |
| `category`, `categorySlug` | Main category |
| `imageUrl` | Main image |
| `isLocal`, `isExclusive` | Local (in-store) and exclusive deals |
| `publishedAt`, `updatedAt`, `startsAt`, `endsAt` | Dates (UTC) |
| `description`, `descriptionHtml`, `images`, `categories` | With `includeDetails` on |
| `sourceUrl` | The page that found the deal |

The name and profile of the person who posted a deal are not collected, and neither are comments. Fields that are empty for a deal are left out of its row.

### Pricing

Pay per event, no monthly fee.

| Event | Free plan price |
|---|---|
| Deal delivered | US$ 0.002 (US$ 2.00 per 1,000) |
| Deal description (only with `includeDetails`) | US$ 0.001 (US$ 1.00 per 1,000) |
| Actor start | US$ 0.003 per run |

| Job | Cost at the Free plan price |
|---|---|
| 30 hot deals from one site | about US$ 0.06 |
| Alert every 30 minutes on one site, ~300 new deals a day, for a month | about US$ 22 |
| 1,000 deals with descriptions | about US$ 3.00 |

Error rows, duplicates, deals removed by your filters and deals skipped by only-new are never charged.

### Errors

| `errorCode` | Meaning |
|---|---|
| `INVALID_URL` | The link is not a page of one of the eight sites |
| `NO_DEALS` | The page has no deals (empty search or category) |
| `NOT_FOUND` | The page does not exist |
| `INVALID_INPUT` | A value in the input is not valid |
| `BLOCKED` | The site did not answer after several tries; run again |
| `NOT_REACHED` | The run stopped (time, spending limit) before this page |

### Integrations, scheduling and AI agents

- **Schedules:** save a Task with your pages and `onlyNew` on, then run it every 15, 30 or 60 minutes in Apify Console.
- **Export** to JSON, CSV, Excel or HTML from the dataset, or read it through the Apify API.
- **Make, n8n, Zapier** and webhooks: send each new hot deal to Telegram, Discord, Slack or Google Sheets.
- **AI agents:** the Actor works through the Apify MCP server, so an agent can ask "what are the hottest gaming deals on mydealz today?" and get structured rows back.

### FAQ

**Which pages work?** Any list page of the eight sites: hot (mydealz.de/hot, dealabs.com/hot), new (mydealz.de/new, dealabs.com/nouveaux, hotukdeals.com/new), search, category and merchant pages.

**What is the temperature?** The community vote score of the deal, in degrees. Higher means more people voted it hot.

**How fresh is the data?** Each run reads the live pages. For alerts, schedule a Task with `onlyNew` on.

**Does it need an account?** No.

**Is it legal to scrape mydealz and Dealabs?** The Actor reads public deal pages without logging in and does not collect personal data of users. You are responsible for how you use the data.

### Limitations

- Comments are counted, not collected.
- `dealLink` is the site's own link to the offer; it is not followed.
- Sites in the network not listed above are not supported yet.

If this Actor saves you time, a short review on the Store page helps other people find it.

### Related scrapers

- [Shopee Scraper](https://apify.com/scrapewise/shopee-scraper): products and prices from Shopee.
- [Google Shopping Scraper](https://apify.com/scrapewise/google-shopping): product prices across stores.
- [Trustpilot Reviews Scraper](https://apify.com/scrapewise/trustpilot-reviews-scraper): company reviews.

### Changelog

- **23 Oct 2026, 0.1:** first release. Eight Pepper sites, hot, new, search, category and merchant pages, temperature and date filters, descriptions, only-new mode.

This Actor collects only publicly available data. Independent tool, not affiliated with Pepper.com, mydealz, Dealabs or any site of the network.

# Actor input Schema

## `startUrls` (type: `array`):

Any list page of mydealz.de, dealabs.com, hotukdeals.com, chollometro.com, preisjaeger.at, pepper.pl, nl.pepper.com or promodescuentos.com: hot, new, a category (group), a merchant or a search, one per line. Filters you set on the site stay in the link.

## `searchTerms` (type: `array`):

Optional: words to search on the site chosen below, one per line, for example airpods or lego.

## `site` (type: `string`):

Which site the keywords are searched on.

## `maxItems` (type: `integer`):

Cap for each link or keyword, following the site's pagination (30 deals per page). 0 = no cap. Default 30.

## `maxPages` (type: `integer`):

Optional: stop after this many pages of each link. Empty or 0 = until the deal cap.

## `minTemperature` (type: `integer`):

Optional: only deals with at least this temperature (community votes, in degrees). Deals below are free.

## `publishedSince` (type: `string`):

Optional: only deals posted on or after a date (2026-10-01) or within a period (24 hours, 7 days).

## `skipExpired` (type: `boolean`):

On: expired deals are left out (and not charged).

## `includeDetails` (type: `boolean`):

On: opens each deal for the full description (text and HTML), all images and every category. Adds the 'Deal description' charge per deal.

## `onlyNew` (type: `boolean`):

On: remembers the deals delivered in earlier runs of the same page (in your account) and delivers only deals not seen before. Skipped deals are free.

## `proxyConfiguration` (type: `object`):

Apify Proxy by default. Change it only if you know you need to.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.mydealz.de/hot"
  ],
  "site": "www.mydealz.de",
  "maxItems": 30,
  "skipExpired": false,
  "includeDetails": false,
  "onlyNew": false,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `resultsCsv` (type: `string`):

No description

# 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 = {
    "startUrls": [
        "https://www.mydealz.de/hot"
    ],
    "maxItems": 30,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapewise/pepper-deals-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 = {
    "startUrls": ["https://www.mydealz.de/hot"],
    "maxItems": 30,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("scrapewise/pepper-deals-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 '{
  "startUrls": [
    "https://www.mydealz.de/hot"
  ],
  "maxItems": 30,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call scrapewise/pepper-deals-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapewise/pepper-deals-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/SBo2rzzrzPC2fa69D/builds/au9RXx7b9gNCGVU41/openapi.json
