finds.dev← search

// the find

badlogic/heissepreise

★ 1,034 · JavaScript · MIT · updated Feb 2026

Jo eh.

A grocery price tracker for Austrian supermarkets — Billa, Spar, Hofer, Lidl, and others — that scrapes daily and lets you search, compare, and chart price history. It got enough media attention (radio interviews included) to end up with historical data donated by two external sources. This is a weekend project that became a public utility.

The canonical JSON format is clean and well-documented, making it trivial to pull the raw data for your own analysis. The front end is vanilla HTML/JS with no build-time framework tax, so the whole thing loads fast and is easy to modify. Store scrapers are isolated per-file under stores/, so adding a new chain or fixing a broken scraper doesn't touch anything else. Docker setup covers both dev and prod with separate compose files, which is more than most side projects bother with.

The scraping layer has no resilience to store API changes — when Billa or Spar rotates an endpoint, the fetch silently returns garbage or fails and there's no alerting. It's also geographically useless outside Austria/Germany; the store list is hardcoded and there's no abstraction for adding non-DACH chains. The front-end state management is roll-your-own vanilla JS with a custom model layer that's clever but fragile — site/model/model.js is doing a lot of work with no tests. Last push was February 2026, which is concerning for a scraper that depends on third-party APIs staying stable.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →