Skip to content

crastatelvin/ecommerce-price-tracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

12 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ‘οΈ E-COMMERCE PRICE TRACKER

Product Scraper Engine β€” Multimodal Price Intelligence With Glassmorphism UI

Node Playwright Express Crawlee Apify License: MIT


E-commerce Price Tracker is a production-ready price tracking and scraping platform. Input store URLs, execute automated scheduled scrapes, and extract structured product name, price, and stock availability β€” all rendered in a premium glassmorphic dark dashboard with dynamic grid card views and direct Excel/CSV downloads.


Extraction Realtime Automation Exports


πŸ“‹ Table of Contents


🧠 Overview

E-commerce Price Tracker provides a local and cloud-compatible workflow for product price intelligence. The backend launches headless Playwright instances via Crawlee, scrolls to execute dynamic content loading, parses multiple structured data layouts (JSON-LD schemas, OpenGraph, or CSS Selectors), and serves the real-time dataset to a dark glassmorphic client-side dashboard.

Users can:

  • Paste single/multiple product and listing URLs to crawl stores.
  • Toggle advanced scraping features (Apify rotating proxies, infinite scrolls, and category product enqueuing).
  • Monitor progress live and view real-time metrics (Total found, in-stock count, average market price).
  • Switch between interactive layout view presentation modes (Table List vs. Card Grid).
  • Download dataset exports on-demand in .json, .csv, or formatted Excel .xlsx spreadsheets.

πŸ–ΌοΈ Application Preview

1) Volcanic Dark Dashboard View

Dashboard View


2) Tracked Products View

Tracked Products View


Feature Description
πŸ›οΈ Multi-Source Scraping Crawls e-commerce websites utilizing headless browser execution via Playwright
πŸ”„ Crawling & Enqueuing Discovers and crawls product pages inside collection listings automatically
⏱️ Infinite Scroll Support Simulates scrolls to capture lazy-loaded dynamic image assets and layout content
πŸ›‘οΈ Proxy Rotation Integrated proxy rotation support to prevent IP blocking and rate limits
πŸ“Š Dynamic Metrics Live panel computing average catalog prices, in-stock counts, and total products
πŸŽ›οΈ Dual View Layout Toggle layout view presentation between a tabular data list and interactive cards
πŸ’Ύ Scrape Run History Persists execution results to disk so users can review past datasets
🧹 New Search Reset Reset configuration forms, dashboard counters, and database status immediately
πŸ“… Cron Automations Node-cron scheduling frequencies (Hourly, Daily, Weekly, or Custom Cron patterns)
πŸ“₯ Multi-Format Exports Real-time backend sheet exporter producing clean CSV, JSON, and Microsoft Excel sheets
πŸš€ Dual Run Target Runs locally as a standalone Web Service or on the Apify Cloud Platform as a Batch Actor

πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                      Glassmorphism Dashboard                      β”‚
β”‚                                                                   β”‚
β”‚  UrlInputs ──► SegmentedTabs ──► ViewToggles (Table / Cards Grid) β”‚
β”‚      β”‚              β”‚                    β”‚                        β”‚
β”‚      └────── POST /api/scrape β—„β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜                        β”‚
β”‚             GET /api/status                                       β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                               β”‚
                               β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚                          Express Backend                          β”‚
β”‚                                                                   β”‚
β”‚  Middleware: CORS + Static Assets Router + JSON Parser            β”‚
β”‚                                                                   β”‚
β”‚  /api/scrape ─► scraper.js ───────► PlaywrightCrawler (Crawlee)    β”‚
β”‚                                  β”œβ–Ί JSON-LD Schema Extractor      β”‚
β”‚                                  β”œβ–Ί Meta OG/Twitter Fallbacks     β”‚
β”‚                                  β””β–Ί CSS Selector Fallbacks        β”‚
β”‚                                                                   β”‚
β”‚  /api/config ─► storage/config.json (Persistent configuration)   β”‚
β”‚  /api/export ─► xlsx-exporter / csv-generator / json-stream       β”‚
β”‚                                                                   β”‚
β”‚  node-cron triggers scheduled background crawls on active URLs    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

πŸ› οΈ Tech Stack

Layer Technology
Backend Node.js, Express, Crawlee, Playwright
Provider Apify SDK & CLI compatibility layers
Parser Engine JSON-LD schema search, OpenGraph, custom CSS fallback matchers
Scheduler Node-cron
Persistence File-based local store (storage/config.json, storage/datasets/)
Frontend Vanilla HTML5/CSS3 (Inter Font, Volcanic HSL Glassmorphism, animations)
Sheet Engine xlsx node package, CSV string stream generators

πŸ“ Project Structure

ecommerce-price-tracker/
β”‚
β”œβ”€β”€ .actor/
β”‚   └── input_schema.json          # Apify Actor Console Inputs configuration
β”‚
β”œβ”€β”€ public/
β”‚   β”œβ”€β”€ index.html                 # Main dashboard structural layouts
β”‚   β”œβ”€β”€ style.css                  # Volcanic theme visual styles & animations
β”‚   └── app.js                     # Dashboard state, metrics, and search logic
β”‚
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ scraper.js                 # Crawlee/Playwright engine with scroll & parsing
β”‚   └── server.js                  # Express API Router, exports, and cron scheduler
β”‚
β”œβ”€β”€ screenshots/
β”‚   β”œβ”€β”€ 01-dashboard.png           # Dashboard configuration view screenshot
β”‚   └── 02-tracked-products.png    # Tracked product results grid view screenshot
β”‚
β”œβ”€β”€ storage/                       # Local database stores (gitignored)
β”‚   β”œβ”€β”€ config.json                # Local persistent configurations
β”‚   β”œβ”€β”€ history/                   # Persistent scraping history records
β”‚   └── datasets/                  # Scraped items dataset runs
β”‚
β”œβ”€β”€ apify.json                     # Apify Platform integration configuration
β”œβ”€β”€ package.json                   # NPM script pathways and dependency versions
β”œβ”€β”€ .gitignore                     # Git track rules
└── README.md                      # Service setup and schema guide

πŸš€ Installation

1) Clone

git clone https://github.com/crastatelvin/ecommerce-price-tracker.git
cd ecommerce-price-tracker

2) Setup and Startup

Install project dependencies and boot the local Express server:

npm install
npm start

Dashboard Access: http://localhost:3000


πŸ’» Usage

  1. Open the local dashboard page in your web browser.
  2. Enter target store homepage or product URLs into the configuration box.
  3. Configure your automated tracking schedule using the Segmented Tab Bar.
  4. Click Run Tracker Now to trigger the scraper.
  5. Filter, search, and analyze catalog details in the results grid.
  6. Export datasets using the download panels.

πŸ“‘ API Reference

Method Endpoint Description
GET /api/config Load persistent scraper configuration
POST /api/config Save scheduling and advanced options configurations
POST /api/scrape Trigger manual scraping run immediately
GET /api/status Fetch running job state and scraped dataset results
POST /api/clear Reset active job state to idle
GET /api/history Get list of historical run metadata
GET /api/history/:id Retrieve detailed scraped products from a past run
GET /api/export/json Export results dataset as JSON
GET /api/export/csv Export results dataset as CSV
GET /api/export/xlsx Export results dataset as Microsoft Excel Spreadsheet

βš™οΈ Configuration

Scraper inputs are stored locally in storage/config.json. When deployed to Apify, configurations map directly to the Actor Console Input schema:

{
  "urls": ["https://zivanche.com"],
  "schedule": "daily",
  "customCron": "0 9 * * *",
  "useProxy": false,
  "crawlLinks": true,
  "maxScrolls": 1
}

🧭 Design Decisions

  • Playwright Crawler & Headless Mode: Crawlee with Playwright ensures full execution of JS components to scrape dynamic client-rendered products.
  • Three-Tier Product Data Parser: Structured JSON-LD schema parsing is used first. If absent, fallback extraction matches Meta OG tags or CSS selectors to maximize data capture.
  • Deduplicated Category Traversal: Category crawling enqueues sub-links into Crawlee's Request Queue, which handles de-duplication automatically to prevent scrapers from visiting identical pages.
  • Local SQLite-free File Persistence: Using JSON files inside /storage provides a lightweight data layer without the overhead of setting up a SQL database.

License

This project is licensed under the MIT License. See LICENSE if present.

Built by Telvin Crasta Β· Production-ready Β· Live today
               ⭐ If this helped you track e-commerce prices faster, star the repo.

About

E-commerce Price Tracker is a production-ready price monitoring platform. Input store URLs, run scheduled scrapes, and extract product names, prices, and stock status in a premium glassmorphic dark dashboard with Excel/CSV exports.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages