# StackSocial Scraper (`piotrv1001/stacksocial-scraper`) Actor

The StackSocial Scraper extracts product listings and enriched data, capturing product names, prices, retail prices, discount percentages, ratings, categories, descriptions, images, brand info, and customer reviews — ideal for deal tracking, price monitoring, and software market research.

- **URL**: https://apify.com/piotrv1001/stacksocial-scraper.md
- **Developed by:** [FalconScrape](https://apify.com/piotrv1001) (community)
- **Categories:** Lead generation, E-commerce, Developer tools
- **Stats:** 2 total users, 0 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 product listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

### 🛍️ StackSocial Lifetime Deals Scraper

Extract product listings and details from [StackSocial](https://www.stacksocial.com) collections. The **StackSocial Lifetime Deals Scraper** uses pure HTTP requests (no browser required) to gather structured deal data fast — ideal for price tracking, deal discovery, and market research.

### ✨ Features

- 🏷️ **Comprehensive Deal Data**: Retrieve product names, prices, retail prices, discount percentages, ratings, categories, and more.
- 📄 **Multi-Collection Support**: Scrape any StackSocial collection — lifetime deals, best sellers, ending soon, and more.
- 🔍 **Optional Detail Scraping**: Visit individual product pages to extract full descriptions, images, brand info, and customer reviews.
- ⚡ **Fast & Efficient**: Pure HTTP scraping via CheerioCrawler — no browser overhead. All 237 lifetime deals scraped in ~3 seconds.
- 💰 **Pay-Per-Event Billing**: Only pay for what you scrape — listing products and detail products are billed separately.

### 🛠️ How It Works

1. **Choose Collections** – Specify one or more StackSocial collection slugs (e.g. `lifetime-subscriptions`, `best-sellers`).
2. **Configure Options** – Set a max item limit and choose whether to scrape full product detail pages.
3. **Run the Scraper** – The Actor fetches listing pages, extracts product data from embedded `__NEXT_DATA__` JSON, and optionally visits each product page to enrich results with descriptions and reviews.

### 📥 Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `collectionSlugs` | `string[]` | `["lifetime-subscriptions"]` | StackSocial collection slugs to scrape. |
| `maxItems` | `integer` | `100` | Max products per collection. `0` = no limit. |
| `scrapeDetails` | `boolean` | `false` | Visit each product page for description, images, and reviews. |
| `maxReviewsPerProduct` | `integer` | `10` | Max reviews per product. Only applies when `scrapeDetails` is enabled. `0` = no limit. |
| `proxyConfiguration` | `object` | `{ useApifyProxy: false }` | Optional proxy settings. No proxy required for typical volumes. |

#### Available Collection Slugs

| Slug | Description |
|------|-------------|
| `lifetime-subscriptions` | Lifetime deals only (~237 products) |
| `lifetime-deals` | Broader lifetime category |
| `best-sellers` | Top sellers across all categories |
| `ending-soon` | Deals expiring soon |
| `newest-sales` | Most recently added |
| `apps-software` | Software category |
| `apps-software/security` | Security subcategory |

### 📊 Sample Output Data

#### Listing Mode (`scrapeDetails: false`)

```json
{
    "name": "AdGuard Family Plan: Lifetime Subscription",
    "title": "Protect Every Device in Your Household with a Lifetime License Covering Up to 9 Devices",
    "url": "https://www.stacksocial.com/sales/adguard-family-plan-lifetime-subscription",
    "slug": "adguard-family-plan-lifetime-subscription",
    "price": 19.97,
    "retailPrice": 169.99,
    "discountPct": 88,
    "ratingAvg": 4.9,
    "ratingCount": 3590,
    "categories": "Security",
    "databaseId": 25094,
    "collection": "lifetime-subscriptions"
}
```

#### Detail Mode (`scrapeDetails: true`)

All listing fields above, plus:

```json
{
    "description": "<p>Block ads and trackers across all your devices with a single lifetime license...</p>",
    "images": [
        "https://cdnp0.stackassets.com/.../product_shot1.jpg",
        "https://cdnp1.stackassets.com/.../product_shot2.jpg"
    ],
    "brand": "AdGuard",
    "availability": "InStock",
    "priceValidUntil": "2026-12-31",
    "breadcrumbs": ["Apps & Software", "Security"]
}
```

#### Review Records (`scrapeDetails: true`)

```json
{
    "type": "review",
    "productSlug": "adguard-family-plan-lifetime-subscription",
    "productName": "AdGuard Family Plan: Lifetime Subscription",
    "rating": 5,
    "text": "Works great, easy to install on all our devices...",
    "author": "John D.",
    "date": "2026-02-14T09:23:11Z"
}
```

### 💳 Pricing

This Actor uses **Pay-Per-Event** billing — you are only charged for the data you actually collect.

| Event | Trigger | Description |
|-------|---------|-------------|
| `product-listing` | Per product scraped in listing-only mode | Charged when `scrapeDetails` is `false` and a product is extracted from a collection page. Includes name, price, discount, rating, and categories. |
| `product-detail` | Per product scraped with full details | Charged when `scrapeDetails` is `true` and a product detail page is processed. Includes description, images, brand, availability, and reviews. |

> Reviews are included in the `product-detail` event at no extra charge.

If the billing limit is reached mid-run, the Actor stops cleanly and saves all data collected up to that point.

# Actor input Schema

## `category` (type: `string`):

The deal category to scrape.

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

Maximum number of products to scrape. Set to 0 for no limit.

## `scrapeDetails` (type: `boolean`):

If enabled, the Actor will visit each product page to extract the full description, images, and reviews. Slower but produces richer data.

## `maxReviewsPerProduct` (type: `integer`):

Maximum number of reviews to collect per product. Only applies when "Scrape product detail pages" is enabled. Set to 0 for no limit.

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

Optional proxy settings. No proxy is required for this site — datacenter proxies are sufficient if needed for scale.

## Actor input object example

```json
{
  "category": "lifetime-subscriptions",
  "maxItems": 100,
  "scrapeDetails": false,
  "maxReviewsPerProduct": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `products` (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": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/stacksocial-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": 100 }

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/stacksocial-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 '{
  "maxItems": 100
}' |
apify call piotrv1001/stacksocial-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ykzpDR9jsddivkRlb/builds/Gs7xPKwzZJL6pasEr/openapi.json
