Skip to content
Tech News
← Back to articles

Show HN: CLI to order groceries via reverse-engineered REWE API (Haskell)

read original get Smart Grocery Shopping Assistant → more articles
Why This Matters

This CLI tool demonstrates how developers can leverage reverse-engineered APIs to streamline grocery shopping, offering automation and integration possibilities for consumers and the tech industry. By enabling programmatic access to REWE's ordering system, it highlights the potential for more personalized, efficient shopping experiences through custom tools and automation.

Key Takeaways

// korb

The korb CLI allows using the REWE APIs programmatically to create baskets and order them for pickup to your local REWE market.

The CLI is handwritten in Haskell, but designed to be a CLI mostly used by agents to organise your REWE shopping on your behalf. All output is JSON.

korb_demo.mp4

// My e2e flow

My current E2E flow (I use claude to run korb) is as follows:

Add grocery when I think of it A Siri shortcut appends items to a shared markdown file. I say "Add oat milk to the shopping list" in the kitchen and it's on the list. Weekly Order Tell the agent "use korb to buy groceries, I need X,Y,Z". It begins from a default template (my usual items and quantities, created with korb orders history ) and checks the shopping list file and my input for anything extra. Adjust template suggestion I tell the agent what to skip, change, or add. It searches products via korb search / korb favorites search and adds them with korb basket add . Review & confirm The agent prints the full basket and a selected timeslot. After I confirm, it runs korb checkout order . Clean shopping list Ordered items get ticked off in the shopping list.

In the directory that store the shopping list file I also have a claude.md explaining this process. The magic is the generated template of what I always order. Just tell an agent to use korb orders history to identify commonly ordered items.

// Installation

Binary (recommended)

... continue reading