← back to Watches

tasks/prd-omega-daily-scraper.md

69 lines

# PRD: Daily Omega Official Price Scraper

## Introduction

Scrape official retail prices from omegawatches.com daily to build a historical price database starting today. Runs as a cron job at 6am daily.

## Goals

- Capture official Omega retail prices daily
- Build historical MSRP database over time
- Track price changes and updates
- Zero cost (direct website scraping)

## User Stories

### US-030: Create Omega Website Scraper
**Description:** Python script to scrape current prices from omegawatches.com

**Acceptance Criteria:**
- [ ] Scrape Speedmaster collection prices
- [ ] Scrape Seamaster collection prices
- [ ] Scrape Constellation collection prices
- [ ] Scrape De Ville collection prices
- [ ] Output JSON with model, reference, price, date

### US-031: Create Price Storage System
**Description:** Store daily price snapshots in JSON database

**Acceptance Criteria:**
- [ ] Create data/omega-official-prices.json
- [ ] Append daily snapshots (don't overwrite)
- [ ] Track price changes between days

### US-032: Set Up Cron Job
**Description:** Schedule daily scrape at 6am

**Acceptance Criteria:**
- [ ] Cron job runs at 6am daily
- [ ] Logs output to logs/omega-scraper.log
- [ ] Handles errors gracefully

## Technical Approach

### Scraper Script
- Use requests + BeautifulSoup
- Target omegawatches.com/en-us/watches/
- Extract: model name, reference, USD price
- Rate limit to avoid blocking

### Data Storage
```json
{
  "scrapes": [
    {
      "date": "2026-01-11",
      "timestamp": "2026-01-11T06:00:00Z",
      "prices": [
        {"model": "Speedmaster Moonwatch", "ref": "310.30.42.50.01.002", "price": 7100}
      ]
    }
  ]
}
```

### Cron Schedule
```
0 6 * * * /usr/bin/python3 /root/Projects/watches/scripts/omega-daily-scraper.py >> /root/Projects/watches/logs/omega-scraper.log 2>&1
```