# newolddkprice **"Should I buy it used?"** — DBA vs PriceRunner price comparator with verdicts. Searches [DBA](https://www.dba.dk) for used listings and [PriceRunner](https://www.pricerunner.dk) for new prices, then gives you a side-by-side comparison with a **buy / wait / buy-new** recommendation. ## Quick start ```bash python3 -m venv .venv && source .venv/bin/activate pip install -r requirements.txt # The go-to command: python3 dba_pricerunner_scraper.py "playstation 5 konsol" --pricerunner --compare --verdict ``` Output: ``` ================================================== SHOULD I BUY IT USED? — playstation 5 konsol ================================================== 🤔 DECENT DEAL Used is only 12% cheaper (~3,500 kr vs 3,995 kr new). Decent savings but you lose warranty & returns. savings: [███░░░░░░░░░░░░░░░░░░░░░░░░░░░] 12% new: 3,995 kr used median: 3,500 kr range: 198–4,500 kr ================================================== ``` ## Verdicts | Verdict | When | Meaning | |---------|------|---------| | ✅ **BUY USED** | ≥20% savings | Great deal, buy used | | 🤔 **DECENT DEAL** | 5–20% savings | Some savings, but you lose warranty | | 🏷️ **BUY NEW** | <5% savings | Barely any savings — new is worth the premium | | ⏳ **WAIT** | Used ≥ new | Something's off, wait for better deals | ## Options | Flag | Description | |------|-------------| | `--pricerunner` | Also fetch PriceRunner (new) prices | | `--compare` | Show side-by-side comparison table | | `--verdict` | Add the "should I buy it used?" recommendation | | `--format` | `text` (default), `markdown`, or `grid` | | `--top N` | Show top N results | | `--min-price` / `--max-price` | Filter by price (e.g. `--min-price 2000`) | | `--from` | Your location for distance calculation (e.g. `--from Farum`) | | `--json` | Output raw JSON | | `--engine selenium` | Use Selenium instead of requests (for JS-heavy pages) | ## Examples ```bash # Quick check: is it worth buying used? python3 dba_pricerunner_scraper.py "iphone 15" --pricerunner --verdict # Full comparison with markdown table (great for pasting into docs) python3 dba_pricerunner_scraper.py "samsung galaxy s24" --pricerunner --compare --verdict --format markdown # Filter out accessories: only look at items 2000–5000 kr python3 dba_pricerunner_scraper.py "playstation 5 konsol" --pricerunner --compare --verdict --min-price 2000 --max-price 5000 # Show distances from your location (e.g. Farum) python3 dba_pricerunner_scraper.py "iphone 15" --from "Farum" --pricerunner --compare --verdict # ASCII grid for terminal python3 dba_pricerunner_scraper.py "xbox series x konsol" --pricerunner --compare --verdict --format grid # Just top 5 DBA listings (no PriceRunner) python3 dba_pricerunner_scraper.py "playstation 5" --top 5 ``` ## How it works 1. **DBA** — scrapes search results via `requests` (or Selenium). Extracts title, price, location, and URL from each `
` card. 2. **PriceRunner** — extracts embedded product JSON from the search results page. Gets the lowest new price for each product. 3. **Verdict** — compares the **median used price** (DBA) against the **lowest new price** (PriceRunner) and computes savings %. > **Tip:** Use specific search terms (e.g. "playstation 5 konsol" not "playstation 5") to avoid accessories and games polluting the comparison. ## Requirements - Python 3.10+ - `requests`, `beautifulsoup4`, `lxml` (see `requirements.txt`) - Optional: `selenium` + `webdriver-manager` for the `--engine selenium` path ## License MIT — do whatever you want with it.