sold-shadow builds a corpus of real eBay UK sold prices from the free Browse API: you tell it what to watch, it checks those listings every day and records the ones that sold. I've written a proper setup guide and GitHub tests it weekly.
The honest bit first
There's no backfill. eBay's search only returns live listings. Anything that sold before you started watching is gone, so a fresh install shows nothing for days or weeks. The most useful thing you can do with it is start it today and leave it.
The token trap the guide fixes
The tool reads a ready-made eBay application token from EBAY_TOKEN. Those expire after a couple of hours, so a token pasted into a cron line works once and then every daily sweep fails. The repo now ships scripts/ebay-token.sh, which mints a fresh one from your keyset each run:
export EBAY_CLIENT_ID="your App ID" EBAY_CLIENT_SECRET="your Cert ID" EBAY_TOKEN=$(scripts/ebay-token.sh) python3 -m soldshadow sweep CI checks the helper fails cleanly without keys and reads a token response from a fake endpoint. It never calls eBay.
Short version
Python 3.11+, nothing to install, a free eBay developer keyset:
git clone https://github.com/casareanderson/sold-shadow && cd sold-shadow python3 -m unittest python3 -m soldshadow track "Casio fx-CG50" python3 -m soldshadow track "Casio FX-CG50 graphing calculator" Two or three phrasings per product, each eight words or fewer: one phrasing only sees a slice of what's listed. Then a daily sweep from cron, and comps once things start selling.
Full guide, including why best-offer sales are only a ceiling: docs/SETUP.md.
Anyone else building their own price data instead of paying for it? What did you track first?
🤖 Drafted with AI assistance from my own homelab notes, logs and repos, then reviewed and edited before publishing.


