Back to case studies
ScrapingRetailEdge

PriceWatch Scraper

Distributed price monitoring system scraping 50 competitor websites and 10,000 product prices daily — with proxy rotation, delta detection, and webhook delivery.

50
Sites Monitored
including 12 Cloudflare-protected sites
10,000+
Prices Updated Daily
4× per day, 6-hour refresh cycle
90%
Analyst Time Freed
from 8 hrs/day manual work to 45 min/day oversight
97%
SLA Achievement
above the agreed 95% per-cycle success rate
About the client

Client background

RetailEdge is a Cologne-based e-commerce analytics company that provides competitive intelligence tools to mid-size online retailers in the DACH region. Their flagship product is a price comparison dashboard — but the data feeding it was collected manually by a full-time analyst.

The problem

The challenge

One analyst was spending 8 hours per day manually visiting 50 competitor websites, copying prices into a spreadsheet, and uploading the CSV to a dashboard. This allowed only a once-per-day refresh and covered fewer than 5% of the products their clients wanted to track. Two competitors had already launched automated solutions; RetailEdge was losing clients who wanted real-time data.

How we started

Discovery & planning

1

Site Inventory Review

Client provided a spreadsheet of 50 target websites. We audited each for anti-bot protections: 32 used basic headers, 12 used Cloudflare, and 6 used advanced JS fingerprinting challenges.

2

Anti-Bot Assessment

We ran test scrapers against all 50 sites. 38 could be scraped with standard Playwright. 12 required residential proxy rotation. Shared detailed report with bypass strategy per site.

3

SLA & Frequency Agreement

Client needed a 6-hour refresh cycle (4× per day). We agreed on a 95% success rate SLA — defined as ≥95% of target product pages returning a price per cycle.

4

Delivery Format Design

Designed the PostgreSQL schema and webhook payload format. Client's existing dashboard would consume a REST API endpoint — we delivered the spec and they confirmed compatibility in day 3.

What we built

Technical solution

We built a distributed scraping system using a Redis job queue that dispatches scrape tasks to a pool of Playwright workers running in Docker containers. Jobs rotate between residential (Bright Data) and datacenter proxies based on the target site's protection level. Completed prices are compared against the previous run — only changed prices trigger a webhook to RetailEdge's dashboard. A monitoring dashboard shows job health, proxy usage, and per-site success rates.

Playwright workers with browser fingerprint randomisation and human-like interaction patterns
Bright Data residential proxy rotation for high-protection sites; datacenter proxies for others
Redis-backed job queue with priority levels, retry logic (up to 3 attempts), and dead-letter queue
Delta detection — only price changes trigger downstream webhooks, reducing noise by ~85%
Per-site health monitoring: success rate, last successful scrape time, and error categorisation
Automatic site-structure change detection — alerts when a CSS selector returns no result
REST API + webhook delivery: pricing data available within 5 minutes of a successful scrape
Technologies used

Tech stack

PythonPlaywrightScrapyBeautifulSoupPostgreSQLRedisDockerAWS LambdaAWS EC2Bright DataFastAPICelery
Project phases

Timeline

Phase 1
Scraper Development
Weeks 1–2

Playwright scrapers for all 50 sites, proxy rotation setup, Bright Data account config, initial accuracy tests

Phase 2
Queue & Infrastructure
Week 3

Redis job queue, Docker containerisation, AWS EC2 deployment, auto-scaling config, monitoring dashboard

Phase 3
Delta Detection & API
Week 4

Price comparison logic, webhook delivery system, FastAPI endpoint, client dashboard integration testing

Phase 4
Testing & Handover
Week 5

72-hour full-cycle test run, SLA verification (97% success rate achieved), documentation, analyst handover

Impact

Results & outcomes

50
Sites Monitored
including 12 Cloudflare-protected sites
10,000+
Prices Updated Daily
4× per day, 6-hour refresh cycle
90%
Analyst Time Freed
from 8 hrs/day manual work to 45 min/day oversight
97%
SLA Achievement
above the agreed 95% per-cycle success rate
We now have real-time competitive pricing intelligence that used to take a full work day to compile. The delta detection was a brilliant touch — our dashboard only updates when something actually changes, so our analysts trust the data immediately.
M
Markus WeberCTO, RetailEdge
Next case study
TabBoost Chrome Extension
ProWork
Start your project
Want something similar?

Book a free call and we'll scope your project in 30 minutes.

Book a free call