# Slickdeals Scraper (`normdata/slickdeals-scraper`) Actor

Scrape Slickdeals deals by search, category, store, brand or forum: price, list price, savings, discount, thumbs, views, comments, Frontpage, Popular and Fire badges. Add-on: description, coupon code, store website, categories, poster stats and comments. For deal sites and resellers.

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

## Pricing

from $11.00 / 1,000 deals

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

![Norm Data](https://raw.githubusercontent.com/FabriAV/normdata/refs/heads/main/assets/banner_norm2.png)

## 🔥 Slickdeals Scraper

Extract deals from **Slickdeals**, the biggest deal-sharing community in the US. Search by words or browse all deals, filter by category, store, brand, forum, price, discount, date, thumbs up, comments and views, and get each deal's price, list price, savings, discount %, store, thumbs up, views, comments and Frontpage, Popular and Fire badges. Turn on **Deal details** to also get exact prices to the cent, the coupon code, when the offer ends, the store website, the full description, editor notes, every category, the brand, all images, the poster's reputation and the comments (with the comment each one replies to). Goes **past Slickdeals' 1,000-result cap**, and can run on a schedule to send you **only new deals**.

### 🎯 Who uses it?

#### 🛒 Resellers and deal hunters

Catch hot deals, price mistakes and coupon codes the minute the community finds them, filtered to the stores, brands and prices you care about.

#### 📰 Deal sites, newsletters and Telegram or Discord channels

Feed your site or channel with fresh, community-voted deals, with images, coupon codes and the store link.

#### 🏷️ Brands, retailers and e-commerce analysts

See which of your products (or your competitors') get posted, at what price and discount, and what shoppers say about them in the comments.

#### 📈 Market and pricing researchers

Track discount depth, price levels and deal volume by category, store and brand over months or years.

### ✨ What it does

- **Search or browse.** Type search words, or leave them empty to get every deal, newest first. Several searches in one run.
- **Or paste links.** Deal links (`slickdeals.net/f/...`), search links (with the filters you picked on the site) or forum links. Filters are ignored with links.
- **Filters:** 293 categories and subcategories, stores and brands by name, forums (Hot Deals, Freebies, Free Digital Goods, Marketplace, Grocery, Travel, Deal Talk, Contests), minimum and maximum price, minimum discount, posted within (24 hours to 3 years), Frontpage, Popular or Fire deals only, skip expired deals, minimum thumbs up, minimum comments and minimum views.
- **8 sort orders:** newest, best match, most thumbs up, latest comment, biggest discount, price low to high, price high to low, oldest.
- **Past the 1,000 cap.** Slickdeals shows at most 1,000 deals per search. This Actor reads the search again by category and in other orders, without duplicates, to collect more.
- **Deal details add-on:** exact prices, coupon code, offer end date, store website and deal link, description, editor notes, categories, brand, images, poster stats and up to 500 comments per deal.
- **Monitoring:** run it on a schedule with **Only new deals** and each run saves only deals you haven't received yet.

### 🏆 Why this scraper

- **Every filter Slickdeals has, and more.** Store, brand, price, discount and date filters on top of the categories, forums and sorts, plus minimum comments and views.
- **Fast.** 1,000 deals in about 7 seconds. 1,000 deals with full details in about 40 seconds. 3,000 deals in about 25 seconds.
- **Exact prices.** Slickdeals' deal cards round prices ("$300" for $299.99). With Deal details on, prices come to the cent.
- **Comments you can analyse.** Each comment comes with its author, level, likes, helpful votes, date, and the comment it quotes split out on its own.
- **Clean, typed data.** Prices and savings as numbers, dates in ISO format, yes/no fields as true/false.
- **No proxy needed.** Nothing extra to set up or pay for.

### ⚖️ How it compares

Based on each Actor's public input options and output fields (October 2026).

| Capability | This actor | solidcode | thescrapelab | ahmed_jasarevic | lulzasaur |
|---|:--:|:--:|:--:|:--:|:--:|
| Search words | **yes** | yes | links only | yes | yes |
| Deal, search and forum links | **yes** | yes | yes | yes | no |
| Category filter | **293 categories** | 13 | no | yes | 11 |
| Store and brand filters | **yes** | no | no | no | no |
| Price and discount filters | **yes** | no | no | no | no |
| Posted within (date) filter | **yes** | no | no | no | no |
| Forum filter | **8 forums** | no | no | 1 forum id | no |
| Frontpage / Popular / Fire only | **yes** | no | no | Frontpage, Popular | no |
| Minimum thumbs up | **yes** | yes | no | yes | no |
| Minimum comments and views | **yes** | no | no | no | no |
| Skip expired deals | **yes** | yes | no | no | no |
| Sort orders | **8** | 3 | no | no | no |
| More than 1,000 deals per search | **yes** | no | no | no | no |
| List price, savings and discount % | **yes** | yes | no | discount % | no |
| Coupon code | **yes** | yes | no | yes | no |
| Full deal description | **yes** | no | yes | no | no |
| Comments | **up to 500, with quotes** | no | yes | no | no |
| Poster reputation and deals posted | **yes** | no | no | no | no |
| Only new deals (monitoring) | **yes** | no | no | no | no |
| Proxy needed | **no** | | | optional | optional |

### 📦 What data you get

| Field | Description |
| --- | --- |
| `imageUrl` | The deal's main image. |
| `dealId`, `title`, `additionalInfo` | Slickdeals deal ID, title, and the extra line under it (like "+ Free S/H"). |
| `price`, `priceText` | Price in US dollars as a number (0 for free deals), and as shown ("from $67.30", "2 for $5"). |
| `listPrice`, `listPriceText` | The regular price, as a number and as shown. |
| `savings`, `discountPercent` | Dollars saved and % off the list price. |
| `store`, `storeId` | Store name and Slickdeals store ID. |
| `votes`, `commentCount`, `views` | Deal score (thumbs up minus thumbs down), comments and views. |
| `forum`, `forumId` | Forum the deal is posted in (Hot Deals, Freebies, Deal Talk...). |
| `badge` | frontpage, popular or expired, as on the deal card. |
| `poster`, `lastCommentBy` | Who posted the deal and who commented last. |
| `description`, `dealNotes` | *(Deal details)* Full deal text, and the editors' notes (terms, return policy, price history). |
| `couponCode`, `offerEnds` | *(Deal details)* Coupon code and when the offer ends, when the deal mentions them. |
| `merchantDomain` | *(Deal details)* The store's website, like amazon.com. |
| `category`, `subcategory`, `brand` | *(Deal details)* Main category, subcategory and brand. |
| `dealEditor` | *(Deal details)* The Slickdeals editor who reviewed the deal. |
| `posterReputation`, `posterDealsPosted`, `posterJoined`, `posterRank` | *(Deal details)* The poster's reputation, deals posted, join date and staff rank. |
| `isFrontpage`, `isPopular`, `isFireDeal`, `isExpired`, `isStaffPost` | Deal flags (true or false). |
| `url`, `posterAvatarUrl` | Deal page and the poster's photo. |
| `dealLinkUrl` | *(Deal details)* The "See Deal" link that leads to the store. |
| `categories`, `images` | *(Deal details)* Every category path and every image. |
| `comments` | *(Deal details, with Comments per deal)* `commentId`, `author`, `authorLevel`, `text`, `quotedAuthor`, `quotedCommentId`, `quotedText`, `likes`, `helpful`, `replyCount`, `isFeatured`, `postedAt`. |
| `postedAt`, `lastActivityAt`, `lastEditedAt` | When the deal was posted, last commented on, and edited by Slickdeals editors (UTC). |
| `scrapedAt` | When the row was collected (UTC). |
| `error` | Only present when a deal's details didn't load. The base fields are still there. |

Fields marked *Deal details* only appear when that add-on is on.

#### Example row (trimmed)

```json
{
  "imageUrl": "https://static.slickdealscdn.com/attachment/1/3/0/6/8/2/0/7/450x450/21738681.thumb",
  "dealId": 20071314,
  "title": "Refurb: Sony WH-1000XM5 Wireless Noise Canceling Headphones",
  "additionalInfo": "+ Free S/H",
  "price": 149.99,
  "priceText": "$150",
  "listPrice": 299.99,
  "listPriceText": "$300",
  "savings": 150,
  "discountPercent": 50,
  "store": "eBay",
  "votes": 108,
  "commentCount": 27,
  "views": 22120,
  "forum": "Hot Deals",
  "badge": "frontpage",
  "poster": "Slick_Drone",
  "description": "Secondipity via eBay has Refurbished: Sony WH-1000XM5 Wireless Noise Canceling Headphones (3 Colors) on sale for $149.99. Shipping is free. ...",
  "dealNotes": "• Warranty:\n• Includes 2-Year Allstate Warranty (more info). ...",
  "merchantDomain": "ebay.com",
  "category": "Tech & Electronics",
  "subcategory": "Headphones, Headsets & Earbuds",
  "brand": "Sony",
  "posterReputation": 2330,
  "posterDealsPosted": 862,
  "posterJoined": "Nov 2017",
  "isFrontpage": true,
  "isPopular": true,
  "isFireDeal": true,
  "isExpired": false,
  "url": "https://slickdeals.net/f/20071314-refurb-sony-wh-1000xm5-wireless-noise-canceling-headphones-150-free-s-h",
  "categories": ["Tech & Electronics", "Tech & Electronics > Audio / Video > Headphones, Headsets & Earbuds", "Deal Type > Refurbished"],
  "comments": [
    { "commentId": 186939102, "author": "rthakur", "authorLevel": "L2: Beginner", "text": "Queue the hinge comments!!!", "quotedAuthor": null, "likes": 2, "helpful": 1, "replyCount": 1, "isFeatured": false, "postedAt": "2026-09-29T02:35:25.000Z" }
  ],
  "postedAt": "2026-09-28T18:20:25.000Z",
  "lastActivityAt": "2026-10-05T22:19:35.000Z",
  "scrapedAt": "2026-10-15T22:13:34.936Z"
}
```

### 💡 Use cases

#### 🔥 Today's hottest deals

```json
{ "dealType": "fire", "postedWithin": "day", "sortBy": "topVoted", "maxItems": 50 }
```

#### 📺 Samsung deals at Best Buy, $100 to $800, at least 20% off

```json
{ "stores": ["Best Buy"], "brands": ["Samsung"], "minPrice": 100, "maxPrice": 800, "minDiscount": 20 }
```

#### 🎟️ Coupon codes for laptops, with the deal text

```json
{ "searchQueries": ["laptop"], "postedWithin": "week", "hideExpired": true, "dealDetails": true }
```

#### 🆓 Every new freebie, every hour (schedule it)

```json
{ "forums": ["4", "54"], "onlyNew": true, "monitorName": "freebies" }
```

#### 💬 What shoppers say about a product

```json
{ "searchQueries": ["airpods pro"], "sortBy": "topVoted", "maxItems": 20, "dealDetails": true, "maxComments": 200 }
```

#### 🔗 A search you already set up on the site

```json
{ "startUrls": [{ "url": "https://slickdeals.net/search?q=laptop&sort=price_low&filters%5Bprice%5D%5Bmax%5D=500" }] }
```

### ⚙️ How the input is organised

| Section | What it's for |
| --- | --- |
| **Maximum results** | Always first, caps the whole run. Empty means no limit. |
| **What to scrape** | Search words (or none for all deals) and sort order. |
| **Filters** | Deal type, thumbs up, categories, stores, brands, forums, price, discount, date, expired, comments, views. |
| **Add-ons** | Deal details and comments per deal. |
| **Monitoring** | Only new deals, with a monitor name per schedule. |
| **Links** | Slickdeals deal, search or forum links instead of the fields above. Filters are ignored with links. |

### 💰 Pricing

Pay-per-event: a one-time **$0.003** when the run starts, plus a price per deal saved to your dataset. The price depends on your Apify plan tier:

| Your Apify plan | Price per deal |
| --- | --- |
| Free | $0.015 |
| Bronze | $0.013 |
| Silver | $0.012 |
| Gold / Platinum / Diamond | $0.011 |

Approximate total cost:

| Deals collected | Free | Bronze | Silver | Gold+ |
| --- | --- | --- | --- | --- |
| 100 | $1.50 | $1.30 | $1.20 | $1.10 |
| 1,000 | $15.00 | $13.00 | $12.00 | $11.00 |
| 10,000 | $150.00 | $130.00 | $120.00 | $110.00 |

**Deal details add-on:** when **Deal details** is on, each deal saved with its details adds one more charge, comments included, however many you ask for:

| Your Apify plan | Deal details, per deal |
| --- | --- |
| Free | $0.006 |
| Bronze | $0.005 |
| Silver | $0.0045 |
| Gold / Platinum / Diamond | $0.004 |

So 1,000 deals with details cost $15 on Gold ($11 + $4). Deals whose details didn't load pay only the base price. No proxy costs. New Apify accounts start with $5 in free credit. On the Free plan a run saves up to 10 deals.

### 🚀 Run it

1. Create a free Apify account with $5 in credit.
2. Open the Slickdeals Scraper.
3. Type search words (or keep the prefilled one), add filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (`run-sync-get-dataset-items`) or the ApifyClient for JavaScript and Python, and schedule it with Apify's built-in Scheduler to get new deals every hour.

### 🤖 Use with AI agents (MCP)

Give an AI agent live access to Slickdeals deals through the Model Context Protocol:

```
claude mcp add --transport http apify "https://mcp.apify.com?tools=normdata/slickdeals-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### 🔧 Troubleshooting

**A store or brand was skipped.**
Use the name as Slickdeals writes it ("Costco Wholesale", "Best Buy"). The log says which names Slickdeals doesn't know.

**My filters did nothing.**
Filters are ignored with links. Remove the links, or put the filters in the Slickdeals search link itself.

**Some deals have no price.**
Deals like "40% off" or "$50 off $500" have no single price. `priceText` keeps what the deal card shows. A price filter leaves them out.

**Prices differ by a few cents from the deal card.**
Slickdeals' cards round prices. Turn on Deal details to get them to the cent.

**The run stopped with "Slickdeals kept refusing this Apify server's IP address".**
Slickdeals sometimes blocks one Apify server. The Actor restarts on another server by itself; if it still fails, run it again.

**Some rows have an `error`.**
That deal's page didn't load. The base fields are complete and the details are empty.

### ❓ FAQ

| Question | Answer |
| --- | --- |
| Do I need a Slickdeals account? | No. Only public data is read. |
| Does it need a proxy? | No. |
| Can I get more than 1,000 deals? | Yes. Leave the maximum empty or set it high; the Actor reads the search by category and in other orders, without duplicates. |
| Can I get only new deals every hour? | Yes. Turn on Only new deals, give the schedule a monitor name, and schedule the run. |
| Where is the store's own product link? | `dealLinkUrl` is Slickdeals' "See Deal" link, which leads to the store, and `merchantDomain` is the store's website. |
| Are coupon codes always found? | When the deal text mentions a code, yes. Many deals have no code. |

### 🛡️ Limits & responsible use

This Actor reads only public data from Slickdeals. It never signs in, votes or posts. Comments and usernames are written by Slickdeals members: handle them in line with privacy law in your country, and use the data in line with Slickdeals' terms.

### 📧 Contact

Need a scraper for a different site, or found something wrong with this one? norm.data.scrapers@gmail.com

### 🧪 Local development

```powershell
bun install
bun run typecheck
apify run
```

Local results are stored in `storage/datasets/default`. Slickdeals refuses many home IP addresses, so test in the Apify cloud with `test/cloud.sh`.

# Actor input Schema

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

Stop after this many deals in total. Leave empty for no limit. The Apify Free plan is always capped at 10.

## `searchQueries` (type: `array`):

Like the search box on Slickdeals: "tv", "airpods", "lego star wars". One search per line. Leave empty for all deals.

## `sortBy` (type: `string`):

Order of the results (it decides which deals come first with a maximum). Default: newest first.

## `dealType` (type: `string`):

Only deals the community or the editors picked. Default: any deal.

## `minVotes` (type: `integer`):

Only deals with at least this deal score (thumbs up minus thumbs down).

## `categories` (type: `array`):

Only deals in these categories. Pick one or more.

## `stores` (type: `array`):

Store names as on Slickdeals, like "Amazon", "Best Buy", "Walmart", "Costco Wholesale". One per line.

## `brands` (type: `array`):

Brand names as on Slickdeals, like "Apple", "Samsung", "Lego", "DeWalt". One per line.

## `forums` (type: `array`):

Only deals posted in these forums. Hot Deals has most deals; expired and older ones move to Deal Talk.

## `minPrice` (type: `number`):

Only deals at or above this price in US dollars. Deals without a plain price (like "$5/month" or "40% off") are left out when a price filter is set.

## `maxPrice` (type: `number`):

Only deals at or below this price in US dollars. Free deals count as $0.

## `minDiscount` (type: `integer`):

Only deals at least this much off the list price, like 50.

## `postedWithin` (type: `string`):

Only deals posted in this time. Default: any time.

## `hideExpired` (type: `boolean`):

Leave out deals the community marked as expired.

## `minComments` (type: `integer`):

Only deals with at least this many comments.

## `minViews` (type: `integer`):

Only deals seen at least this many times.

## `dealDetails` (type: `boolean`):

Adds exact prices to the cent (deal cards round them), the full description, coupon code, when the offer ends, the store website, the deal link, editor notes, all categories, brand, all images and the poster's reputation, deals posted and join date.

## `maxComments` (type: `integer`):

With Deal details on: also save up to this many comments of each deal (author, level, text, the comment it quotes, likes, helpful votes, date), plus the featured ones. 0 = none.

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

Skip deals saved by earlier runs with the same monitor name.

## `monitorName` (type: `string`):

Runs with the same name share their history. Use a different name for each schedule.

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

Deal, search or forum links from slickdeals.net. A search link keeps the filters you picked on the site.

## Actor input object example

```json
{
  "maxItems": 10,
  "searchQueries": [
    "tv"
  ]
}
```

# Actor output Schema

## `results` (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 = {
    "maxItems": 10,
    "searchQueries": [
        "tv"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("normdata/slickdeals-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 = {
    "maxItems": 10,
    "searchQueries": ["tv"],
}

# Run the Actor and wait for it to finish
run = client.actor("normdata/slickdeals-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 '{
  "maxItems": 10,
  "searchQueries": [
    "tv"
  ]
}' |
apify call normdata/slickdeals-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,normdata/slickdeals-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/HxC85bjSRpSudYdLs/builds/lB40kwPmHdXFC5vgB/openapi.json
