Life Time Deal Aggregator
Pricing
from $2.00 / 1,000 results
Life Time Deal Aggregator
This Apify actor scrapes lifetime deal listings from multiple sources including AppSumo, DealMirror, and StackSocial. It normalizes the data into a consistent format, supports incremental runs, and can send webhook notifications for new deals.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer

HappiTap
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
LTD Deal Aggregator
Collect and normalize lifetime deal (LTD) listings from popular marketplaces into one clean dataset.
π― Overview
This Apify actor scrapes lifetime deal listings from multiple sources including AppSumo, DealMirror, and StackSocial. It normalizes the data into a consistent format, supports incremental runs, and can send webhook notifications for new deals.
π Features
- Multi-source scraping: AppSumo, DealMirror, StackSocial (PitchGround coming in Phase 2)
- Adapter pattern architecture: Easy to add new sources
- Smart filtering: Keywords, categories, price range, discount percentage
- Incremental mode: Only return new deals since last run
- Webhook notifications: Get notified when new deals are found
- Deduplication: Automatically removes duplicate deals
- Detailed scraping: Optional deep scraping of individual deal pages
π Use Cases
- Newsletter creators: Build daily LTD deal newsletters
- Affiliates: Track fresh deals with metadata for promotion
- Agencies: Scout tools for clients
- Founders: Monitor competitors and pricing trends
- Automation pipelines: Integrate with webhooks for automated workflows
π§ Input Configuration
Source Selection
- sources (array): Select which marketplaces to scrape
- Options:
appsumo,dealmirror,stacksocial,pitchground - Default:
["appsumo", "dealmirror", "stacksocial"]
- Options:
Deal Filtering
-
mode (string): Filter deals by status
- Options:
live_now,new_arrivals,ended_recently - Default:
live_now
- Options:
-
publishedLastNDays (number): Only include deals published in the last N days
- Default:
30
- Default:
-
keywords (string): Include deals containing these keywords (comma-separated)
-
excludeKeywords (string): Exclude deals containing these keywords (comma-separated)
-
categories (array): Filter by categories
- Options: AI, SaaS, DevTools, Marketing, Productivity, Design, Analytics, Sales, Customer Service, HR, Finance, Education, Health, Other
-
minDiscountPercent (number): Minimum discount percentage
- Default:
0
- Default:
-
minPrice / maxPrice (number): Price range filter
- Defaults:
0/10000
- Defaults:
-
pricingType (string): Filter by pricing type
- Options:
lifetime,annual,subscription,any - Default:
lifetime
- Options:
Crawl Controls
-
includeDetails (boolean): Scrape individual deal pages for detailed information
- Default:
true
- Default:
-
maxItems (number): Maximum number of deals to collect
- Default:
300
- Default:
-
maxPages (number): Maximum number of pages to crawl per source
- Default:
20
- Default:
Monitoring & Webhooks
-
incremental (boolean): Only return new deals since last run
- Default:
true
- Default:
-
notifyOnlyNew (boolean): Send webhook notifications only for new deals
- Default:
true
- Default:
-
webhookUrl (string): URL to send notifications to
-
webhookSecret (string): Secret for webhook authentication
-
webhookBatchSize (number): Number of deals per webhook batch
- Default:
50
- Default:
Performance Settings
-
useProxy (boolean): Use proxy for requests
- Default:
false
- Default:
-
maxConcurrency (number): Maximum number of concurrent requests
- Default:
10
- Default:
-
requestRetries (number): Number of times to retry failed requests
- Default:
4
- Default:
-
timeoutSecs (number): Timeout for individual requests
- Default:
30
- Default:
-
minDelayMs / maxDelayMs (number): Delay between requests
- Defaults:
1000/3000
- Defaults:
π Output Schema
Each deal in the dataset contains:
{"source": "appsumo","sourceDealId": "product-name-lifetime-deal","title": "Product Name","tagline": "Short product description","dealUrl": "https://appsumo.com/products/...","imageUrl": "https://...","categories": ["AI", "SaaS"],"pricing": {"listPrice": 299,"dealPrice": 49,"currency": "USD","discountPercent": 84,"isLifetime": true},"socialProof": {"rating": 4.5,"reviewCount": 120},"availability": {"status": "live","expiresAt": "2024-12-31T23:59:59.000Z"},"description": "Detailed product description...","features": ["Feature 1", "Feature 2"],"dealTiers": [{"tierName": "Tier 1","price": 49,"limits": "Up to 5 users"}],"productWebsite": "https://product.com","companyName": "Company Inc","hash": "abc123...","scrapedAt": "2024-12-27T10:00:00.000Z"}
ποΈ Architecture
Adapter Pattern
The actor uses an adapter pattern to support multiple sources:
src/βββ main.js # Main orchestration logicβββ adapters/βββ appsumoAdapter.js # AppSumo scraping logicβββ dealmirrorAdapter.js # DealMirror scraping logicβββ stacksocialAdapter.js # StackSocial scraping logic
Adapter Interface
Each adapter implements:
buildStartRequests(input)β Request[]parseListPage(ctx)β { deals, nextPages }parseDetailPage(ctx, stub)β DealNormalizedmatchesFilters(deal)β boolean
π Incremental Mode
When incremental is enabled:
- The actor loads previously seen deal hashes from state
- Only new deals (not in previous state) are returned
- State is saved after each run for next execution
This is perfect for scheduled runs to monitor new deals.
π Webhook Notifications
Configure webhooks to receive real-time notifications:
{"deals": [...],"count": 50,"timestamp": "2024-12-27T10:00:00.000Z","signature": "sha256_hash"}
The signature is generated using: SHA256(JSON.stringify(payload) + webhookSecret)
π Example Use Cases
Daily Newsletter
{"sources": ["appsumo", "dealmirror", "stacksocial"],"mode": "new_arrivals","publishedLastNDays": 1,"incremental": true,"webhookUrl": "https://your-api.com/webhook"}
AI Tools Monitor
{"sources": ["appsumo", "dealmirror"],"keywords": "AI, artificial intelligence, machine learning","categories": ["AI"],"minDiscountPercent": 50,"includeDetails": true}
Competitor Tracking
{"sources": ["appsumo"],"keywords": "project management, productivity","maxPrice": 100,"includeDetails": true}
π οΈ Development
Local Setup
# Install dependenciesnpm install# Run locallynpm start
Adding a New Source
- Create a new adapter in
src/adapters/ - Implement the adapter interface
- Register in
ADAPTER_REGISTRYinmain.js - Add to INPUT_SCHEMA enum
π° Pricing (Pay Per Event)
This actor uses pay-per-event (PPE) pricing for transparent, usage-based costs:
Pricing Events
-
Actor Start: $0.00005 per run (~$0.05 per 1,000 runs)
- Covers startup costs
- Apify provides 5 seconds of free compute per run
- Charged automatically once per run
-
Deal Found: $0.002 per deal (~$2.00 per 1,000 deals)
- Charged for each deal added to your dataset
- Covers scraping, parsing, normalization, and deduplication
- Only charged for unique deals (duplicates are free)
Example Costs
| Deals Scraped | Actor Starts | Total Cost |
|---|---|---|
| 100 deals | 1 run | $0.20 |
| 500 deals | 1 run | $1.00 |
| 1,000 deals | 1 run | $2.00 |
| 5,000 deals | 1 run | $10.00 |
Note: You only pay for successful results. Failed requests and duplicate deals are not charged.
Set Your Spending Limit
Control costs by setting a maximum spending limit per run in the Apify Console. The actor will automatically stop when your limit is reached.
π Roadmap
Phase 2 (Enrichment)
- PitchGround adapter
- Price history tracking
- AI-powered tagging
- Affiliate link templates
Phase 3 (Monitoring)
- Price drop detection
- Deal status changes
- Slack/Discord integrations
- Historical snapshots
π€ Support
For issues or feature requests, please contact support or open an issue.
π License
ISC