Sensabeauty Price Tracker
Pricing
$1.00 / 1,000 results
Go to Apify Store
Pricing
$1.00 / 1,000 results
Rating
0.0
(0)
Developer
PayAI
Maintained by Community
Actor stats
0
Bookmarked
2
Total users
2
Monthly active users
9 days ago
Last modified
Categories
Share
SensaBeauty Price Tracker - APIFY Actor
Automated competitor price tracking for SensaBeauty products.
Features
- 3 Competitor Sites: Jomashop, FragranceNet, Maxaroma
- Smart Filtering: Automatically scrapes 998 fragrance products (excludes skincare)
- Intelligent Matching: Fuzzy search with SKU prioritization
- Real-time Analytics: Automatic price statistics calculation
- Supabase Integration: Direct database updates with confidence tracking
- Match Quality Scores: Confidence scoring (0.00 - 1.00)
- Statistics Logging: Scrape run performance metrics and analytics
Deployment
Prerequisites
- APIFY account
- APIFY CLI installed:
npm install -g apify-cli - Supabase credentials
Deploy to APIFY
# Install dependenciesnpm install# Test locallynpm test# Login to APIFYapify login --token apify_api_1Z5ffM5PqQSRz2LOl5SWbdbsPvbkkg35ssUx# Deployapify push
Environment Variables
Set these in APIFY Console:
SUPABASE_URL=https://iuyxjwgklxhxqtqjwvrq.supabase.coSUPABASE_SERVICE_KEY= [your service role key]
Usage
Input Schema
{"mode": "full", // "full", "sample", or "specific""productIds": [], // Array of product IDs (for "specific" mode)"competitors": [ // Which sites to scrape"jomashop","fragrancenet","maxaroma"],"maxConcurrency": 3, // Number of parallel pages"updateDatabase": true // Whether to update Supabase}
Run via API
curl -X POST "https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"mode":"sample"}'
Run via GitHub Actions
The actor is automatically triggered daily at 2 AM UTC by the GitHub Actions workflow in .github/workflows/price-sync.yml.
Output
Data Schema
Each product scrape outputs structured JSON:
{"productId": "uuid", // Product UUID from Supabase"productName": "Product Name", // SensaBeauty product name"productSku": "SKU123", // Product SKU/UPC code"competitor": "jomashop.com", // Competitor domain"competitorName": "Jomashop", // Human-readable name"price": 89.99, // Current price (USD)"originalPrice": 89.99, // MSRP price"currency": "USD", // Currency code"availability": "in_stock", // Stock status"url": "https://...", // Direct product URL"matchedTitle": "...", // Matched product title"matchConfidence": 0.85, // Match score (0.00-1.00)"scrapedAt": "2025-10-24T...", // ISO 8601 timestamp"status": "success" // success|not_found|error}
Storage Destinations
- APIFY Dataset: All scraped price data (always saved)
- Supabase Tables (if
updateDatabase: true):competitor_prices: Individual price recordsproduct_price_analytics: Calculated statisticsscrape_runs: Run statistics and performance metrics
Run Summary
Available via Actor.getValue('OUTPUT'):
{"runId": "...","mode": "full","competitors": ["jomashop", "fragrancenet", "maxaroma"],"productsAttempted": 100,"productsMatched": 85,"matchRate": 85.00,"databaseUpdated": true,"completedAt": "2025-10-24T...","status": "completed"}
Product Filtering
The actor automatically filters products to only scrape fragrances:
- ✅ 998 fragrance products (category = "all")
- ❌ Excludes 2 skincare products (Serums, Cleansers)
This filtering ensures:
- Higher match rates (fragrances are sold on competitor sites)
- Faster run times (no wasted requests on skincare)
- More accurate pricing data
Performance
- Products: 998 fragrances (automatically filtered)
- Estimated Match Rate: 40-60% (niche fragrances have lower availability)
- Duration: ~20-25 hours for full catalog (998 × 3 competitors)
- Concurrency: 3 pages (adjustable, recommended: 3)
- Rate Limiting: Auto-adjusts based on CPU and response codes
Monitoring
Check scrape quality:
SELECT * FROM scrape_runs ORDER BY completed_at DESC LIMIT 5;
View price updates:
SELECT COUNT(*) FROM competitor_pricesWHERE scraped_at > NOW() - INTERVAL '24 hours';
Support
For issues or questions, contact support or check the integration documentation.