Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Auction Watchlist

A self-hosted dashboard for monitoring Indonesian online auctions. Scrapes listings from multiple sites, displays them in a Steam-style dark UI, and sends push notifications when watchlist items appear.

Supported Sites

Site Method
lelang.go.id REST API (KPKNL state auctions)
ibid.astra.co.id REST API (Astra vehicle auctions)
timedauction.jba.co.id DOM scraping

Features

  • All listings, no guessing — fetches every lot across categories; keywords are badge labels, not filters
  • Watchlist keywords — highlight matching items and receive push notifications when new ones appear
  • Sidebar filters — opt-in brand and model checkboxes, resets cleanly when switching categories
  • Three view modes — Grid (4-column), List, Compact
  • Configurable page size — 20 / 50 / 100 / 200 / 500 / All items per page
  • Thumbnail caching — images downloaded via browser session at scrape time, served locally
  • Web Push notifications — VAPID-based, works in Chrome/Edge without an app
  • Auto-refresh — configurable interval with countdown timer

Requirements

  • Python 3.10+
  • Playwright Chromium browser
  • A modern browser for the UI

Setup

git clone https://github.com/wisnuub/auction-watchlist
cd auction-watchlist

pip install -r requirements.txt
playwright install chromium

Usage

Start the web server:

python3 server.py

Open http://localhost:8765 in your browser.

Run the scraper manually (CLI):

python3 watchlist.py              # all sites
python3 watchlist.py --site lelang   # one site: lelang | ibid | jba
python3 watchlist.py --discover   # print API calls for debugging

The web UI has a ⟳ Refresh button that runs the scraper in the background and reloads results automatically.

Watchlist Keywords

Edit keywords directly in the UI: open the Watchlist tab → Edit keywords. One keyword per line. Keywords are matched case-insensitively against item titles and highlighted as badges on matching cards.

Keywords are saved to watchlist.json and used on the next scrape.

Push Notifications

Click the 🔔 bell button in the top bar and allow notifications. The server sends a push when new watchlist-matching items appear after a scrape.

Project Structure

auction-watchlist/
├── watchlist.py      # scraper (lelang, ibid, jba)
├── server.py         # Flask web server + image proxy + push
├── watchlist.json    # keyword list (editable via UI)
├── static/
│   ├── index.html
│   ├── app.js
│   ├── style.css
│   └── sw.js         # service worker for push notifications
└── results/          # scrape output JSON + thumbnail cache (git-ignored)

Notes

  • lelang.go.id and file.lelang.go.id block server-side HTTPS (TLS fingerprinting). Thumbnails are fetched through a headless Chromium session at scrape time and cached locally.
  • ibid.astra.co.id uses a subscription key embedded in the page — it is discovered automatically by intercepting browser requests on startup.
  • The VAPID keys in server.py are pre-generated. Regenerate them for your own deployment with py_vapid.

About

Self-hosted dashboard for monitoring Indonesian online auctions (lelang.go.id, ibid.astra.co.id, jba.co.id) with push notifications

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages