Sensabeauty Price Tracker avatar

Sensabeauty Price Tracker

Under maintenance

Pricing

$1.00 / 1,000 results

Go to Apify Store
Sensabeauty Price Tracker

Sensabeauty Price Tracker

Under maintenance

Comp prices

Pricing

$1.00 / 1,000 results

Rating

0.0

(0)

Developer

PayAI

PayAI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

9 days ago

Last modified

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 dependencies
npm install
# Test locally
npm test
# Login to APIFY
apify login --token apify_api_1Z5ffM5PqQSRz2LOl5SWbdbsPvbkkg35ssUx
# Deploy
apify push

Environment Variables

Set these in APIFY Console:

  • SUPABASE_URL = https://iuyxjwgklxhxqtqjwvrq.supabase.co
  • SUPABASE_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

  1. APIFY Dataset: All scraped price data (always saved)
  2. Supabase Tables (if updateDatabase: true):
    • competitor_prices: Individual price records
    • product_price_analytics: Calculated statistics
    • scrape_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_prices
WHERE scraped_at > NOW() - INTERVAL '24 hours';

Support

For issues or questions, contact support or check the integration documentation.