Pepper Deals Scraper avatar

Pepper Deals Scraper

Pricing

from $2.98 / 1,000 results

Go to Apify Store
Pepper Deals Scraper

Pepper Deals Scraper

Scrape hot and new feeds, keyword searches, category or merchant listings, and individual deal pages from seven Pepper sites. The Actor returns normalized deal records with community scores, voucher details, merchant and category data, comments, images and links.

Pricing

from $2.98 / 1,000 results

Rating

0.0

(0)

Developer

Axiom Works

Axiom Works

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Returns: one row per deal or voucher with title, price, originalPrice, temperature, voucherCode, merchantName, category, expiresAt and url. Input: {"sites": ["dealabs", "mydealz"], "feed": "hot", "maxItems": 50} Best for: deal monitoring across Pepper sites, voucher code lists, price and discount tracking.

{
"id": "dealabs-3423782",
"title": "T-shirt Homme Oversize Decathlon Elementals - S à XL Tissu Extensible, Broderie Orbit, Plusieurs Coloris",
"price": 9.99,
"originalPrice": 17.99,
"currency": "EUR",
"temperature": 118.66,
"merchantName": "Decathlon",
"expiresAt": "2026-11-14T22:59:00.000Z",
"url": "https://www.dealabs.com/bons-plans/t-shirt-homme-oversize-decathlon-elementals-tissu-extensible-broderie-orbit-plusieurs-coloris-3423782"
}

What does Pepper Deals Scraper do?

Pepper Deals Scraper collects deals from the Pepper network of deal-community sites and returns them in one normalized format. It reads public listing pages and single deal pages, so you get the same fields no matter which country you scrape. Supported sites:

Site keySiteCountryCurrency
dealabsDealabsFranceEUR
mydealzMyDealzGermanyEUR
pepper_plPepper.plPolandPLN
pelandoPelandoBrazilBRL
hotukdealshotukdealsUnited KingdomGBP
chollometroChollometroSpainEUR
preisjaegerPreisjaegerAustriaEUR

You can scrape the hottest deals, the newest deals, keyword search results, category or merchant listing pages, or individual deal pages. Every record carries the deal title, its temperature (the community vote score), the price, the voucher code when the site shows one, the merchant, the category, the comment count, an image, the posting date and links. The Actor runs without a login and does not need a browser, so runs are fast and light.

This is an independent tool. It is not affiliated with, endorsed by or connected to any of the sites listed above.

Typical uses:

Use case: Track which deals get hot on a given site and how fast. Use case: Monitor a keyword such as "lego" or "airpods" across several countries at once. Use case: Build a feed of new vouchers for a shop or a category. Use case: Compare how the same product is priced on different national sites. Use case: Feed deal data into a spreadsheet, a database, a newsletter or an AI agent.

What data can you get?

Each record is one deal or voucher. Fields that a site does not provide are returned as null, so every record has the same keys.

FieldTypeDescription
idstringStable record id, <platform>-<dealId>
sourceUrlstringDeal page URL the record came from
platformstringdealabs, mydealz, pepper_pl, pelando, hotukdeals, chollometro or preisjaeger
countrystringFR, DE, PL, BR, GB, ES or AT
dealIdstringPepper thread id or Pelando deal UUID
titlestringDeal title as posted
urlstringDeal page on the community site
typestringdeal or voucher
temperaturenumberCommunity vote score in degrees; can be negative
isHotbooleanPepper hot flag; null on Pelando
isExpiredbooleanWhether the deal is marked expired
statusstringStatus text reported by the site
pricenumberDeal price; null for vouchers and freebies
originalPricenumberNext best or previous price when the site shows one
discountPercentnumberDiscount percentage when shown
discountAmountnumberFixed discount (Pelando) when shown
currencystringEUR, PLN, GBP or BRL
shippingPricenumberShipping cost when shown
freeShippingbooleanWhether shipping is free
voucherCodestringPromo code shown on the card; null when empty or hidden behind a click
merchantNamestringShop name
merchantIdstringShop id on the community site
merchantDomainstringShop domain
categorystringCategory name
categorySlugstringCategory slug
commentCountintegerNumber of comments
imageUrlstringMain image URL
postedAtstringPosting time, ISO 8601
hotAtstringTime the deal turned hot, when shown
authorNamestringUsername of the poster (public)
dealLinkstringClick-out link to the shop through the community redirect; the Actor never follows it
productUrlstringMerchant product URL (Pelando only)
descriptionstringDeal description, only for single deal page URLs
listingUrlstringThe listing, search or API URL the item was read from
searchTermstringSearch term when the item came from a search
feedstringhot, new, search or url
scrapedAtstringScrape time, ISO 8601
expiresAtstringDeal end date, ISO 8601, when the poster set one (Pepper sites; null on Pelando)
startsAtstringDeal start date, ISO 8601, when set (Pepper sites)
isExclusivebooleanExclusive flag (Pepper sites)
isPinnedbooleanPinned by moderators (Pepper sites)
isTopDealbooleanTop deal flag (Pepper sites)
isLocalbooleanLocal rather than national deal (Pepper sites)
merchantSlugstringShop URL name on the community site (Pepper sites)
authorIdstringNumeric poster id on the community site (Pepper sites)

Temperatures are not comparable between the Pepper sites and Pelando, which uses its own scale. Pelando's list data does not include voucher codes, so voucherCode is only filled there for single deal pages when the page exposes one. Discussion threads are skipped; only deals and vouchers are returned.

How to use

  1. Open the Actor in Apify Console and go to the Input tab.
  2. Pick one or more sites. The default is Dealabs.
  3. Choose a feed (hottest or newest), or enter search terms to search each selected site.
  4. Alternatively, paste listing URLs or deal URLs into Start URLs.
  5. Set Max items and start the run.
  6. Open the Output tab to view the table, or export JSON, CSV, Excel or XML.

If you give only Start URLs, exactly those URLs are scraped and the site selection is ignored. If you give search terms as well, the terms are searched on the selected sites in addition to the URLs.

The item limit is shared between all sources. With a limit of 60 and two sources, each source gets about 30 items; if one source has fewer deals than its share, the unused part goes to the sources that follow. The run stops as soon as the limit is reached.

Supported Start URLs:

SiteURL forms
Pepper sitesHot, new, search, category (group) or merchant listing pages, any page number, and single deal URLs
PelandoThe home page or /mais-quentes (hot), /recentes (new), /busca/<term> (search), /c/<community> (community feed), /d/<slug> (single deal)

Search terms that find nothing finish the run with zero items and a clear status message instead of failing. A dead URL is logged and skipped. The Actor only fails when the input selects nothing usable, for example an unknown site and no valid URL.

Input

FieldTypeDescription
sitesarraySite keys to scrape; default ["dealabs"]
feedstringhot or new; default hot; ignored when search terms are given
searchTermsarrayKeywords to search on every selected site
startUrlsarrayListing or deal URLs on the supported sites
maxItemsintegerMaximum deals to save in total, 1 to 10000, default 50
maxPagesPerSourceintegerMaximum pages (30 deals each) or Pelando API calls (20 deals each) per source, default 10
hideExpiredbooleanDrop deals marked expired; default false
minTemperatureintegerDrop deals colder than this value
dealTypesarraydeal, voucher or both; default both
proxyConfigurationobjectApify Proxy settings; datacenter proxy by default

Example input:

{
"sites": ["dealabs", "mydealz", "pepper_pl", "pelando"],
"searchTerms": ["lego"],
"maxItems": 80,
"hideExpired": true,
"minTemperature": 50
}

Example with Start URLs:

{
"startUrls": [
"https://www.mydealz.de/hot",
"https://www.pelando.com.br/c/tech-lover"
],
"maxItems": 60
}

Output

Results are stored in the default dataset. This is a real record from a run on Dealabs:

{
"id": "dealabs-3423437",
"sourceUrl": "https://www.dealabs.com/bons-plans/lits-de-camp-pliant-amazon-basics-adultes-2070-cm-x-772-cm-sac-de-transport-noir-3423437",
"platform": "dealabs",
"country": "FR",
"dealId": "3423437",
"title": "Lits de Camp Pliant Amazon Basics - Adultes, 207.0 cm x 77.2 cm, Sac de transport, Noir",
"type": "deal",
"temperature": 101.58,
"isHot": true,
"isExpired": false,
"status": "Activated",
"price": 31.49,
"originalPrice": 56.64,
"currency": "EUR",
"shippingPrice": 3.99,
"freeShipping": false,
"voucherCode": null,
"merchantName": "Amazon",
"merchantId": "36",
"merchantDomain": "www.amazon.fr",
"category": "Sports & Plein air",
"categorySlug": "sports-plein-air",
"commentCount": 6,
"postedAt": "2026-10-01T17:46:49.000Z",
"authorName": "Dada42000",
"expiresAt": "2026-11-14T22:59:00.000Z",
"isExclusive": false,
"dealLink": "https://www.dealabs.com/visit/threadmain/3423437",
"listingUrl": "https://www.dealabs.com/hot",
"feed": "hot"
}

A Pelando record has the same keys. Here price is in BRL, merchantName and merchantId come from the store, productUrl holds the shop product URL, and isHot is null:

{
"id": "pelando-10e0cccc-3391-4cf7-995a-82b7d6561048",
"platform": "pelando",
"country": "BR",
"title": "LEGO Set Disney Stitch 43249",
"type": "deal",
"temperature": 101,
"isHot": null,
"status": "active",
"price": 237,
"currency": "BRL",
"merchantName": "Amazon",
"merchantId": "367",
"merchantDomain": "amazon.com.br",
"commentCount": 0,
"feed": "search",
"searchTerm": "lego"
}

Besides the dataset, each run stores a RUN_SUMMARY object in the key-value store. It lists every source with its pages read, items saved, whether the site showed an empty-result page, how many blocked responses were retried and any error. The run's status message names the cause whenever a source returned zero items.

How much does it cost?

The Actor is charged per result: you pay for each deal saved to the dataset and nothing for pages that return no deals. The exact rate is shown on the Pricing tab of the Actor page in Apify Console. Because the item limit is exact, you can cap spending by setting Max items. Platform usage such as proxy traffic is billed by Apify under your plan.

Use with AI agents (MCP)

You can call this Actor from an AI agent through the Apify MCP server. Add it to your MCP client configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=axiomworks/pepper-deals-scraper"
}
}
}

Example prompts:

Prompt: "Find the 20 hottest deals on Dealabs right now and list price, merchant and temperature."

Prompt: "Search MyDealz and Pepper.pl for 'lego' and show deals with a voucher code."

Prompt: "Get the newest deals from hotukdeals, Chollometro and Preisjaeger, 15 each."

Prompt: "Read this Pelando deal page and summarise the offer."

The agent sees the input fields described above, so it can choose sites, a feed, search terms and an item limit by itself.

Integrations and API

You can start the Actor from code, schedule it, or connect it to other tools through Apify integrations such as webhooks, Make, Zapier, Google Sheets and n8n.

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("axiomworks/pepper-deals-scraper").call(run_input={
"sites": ["dealabs"],
"searchTerms": ["airpods"],
"maxItems": 50,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["price"], item["currency"], item["temperature"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('axiomworks/pepper-deals-scraper').call({
sites: ['mydealz'],
feed: 'hot',
maxItems: 30,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
process.stdout.write(`${items.length}\n`);

cURL:

curl -X POST "https://api.apify.com/v2/acts/axiomworks~pepper-deals-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"sites": ["pelando"], "feed": "hot", "maxItems": 40}'

FAQ

How many deals can I get per run? Up to 10,000 in total. Pepper listing pages hold 30 deals and Pelando calls return 20, and Max pages per source limits how deep each source goes. Hot lists reorder while you read them, so the Actor removes duplicates by id.

Why is voucherCode often empty? Only some deals have a code, and some codes are hidden behind a click on the site. Hidden codes are returned as null.

Why is price empty for some deals? Vouchers, freebies and deals without a stated price have no price on the site, so the field is null.

Can I scrape a single category or merchant? Yes. Paste the category or merchant listing URL into Start URLs. For Pelando, use a /c/<community> URL.

Which proxy should I use? The default Apify datacenter proxy works for these sites. If a site keeps answering with a block page, the Actor retries with a fresh proxy session and then switches that site to residential proxy for the rest of the run.

Why did my search return zero items? The site had no results for that term. Pepper sites show recommended deals on an empty search page, and the Actor detects this and returns nothing rather than unrelated deals.

Are Pepper.it and other Pepper sites supported? Only the seven sites in the table above are supported.

Does it return personal data? Records include the public username of the poster. No other personal data is collected.

The Actor reads only public pages that load without logging in, and it does not bypass logins or CAPTCHAs. Courts in several jurisdictions have treated the collection of public web data as lawful, but the rules depend on your country, on how you use the data and on the terms of each site. Deal titles, images and descriptions may be protected by copyright, and usernames are personal data under laws such as the GDPR. Use the data responsibly, keep request volumes modest, respect the rights of the sites and their users, and get legal advice for commercial or large-scale use.

Feedback

If a field is missing, a site changes its layout or you need another source, open an issue from the Actor page in Apify Console. Include the input you used and the run ID so the problem can be reproduced.