A CLI tool for shopping on Nemlig.com (Danish online grocery store). Parse recipes, search products, and add items to your cart.
# Install from PyPI
uv tool install nemlig-shopper
# Or run directly with uvx
uvx nemlig-shopper --help# Log in to Nemlig.com
nemlig-shopper login
# Parse a recipe to see ingredients
nemlig-shopper parse "https://www.valdemarsro.dk/pasta-carbonara/"
# Search for products
nemlig-shopper search "mælk"
# Add a product to cart (by product ID from search results)
nemlig-shopper add 701015
# View your cart
nemlig-shopper cart| Command | Description |
|---|---|
login |
Authenticate with Nemlig.com |
logout |
Clear saved credentials |
parse <url> |
Parse recipe and display ingredient list |
search <query> |
Search Nemlig products |
add <product_id> |
Add product to cart |
cart |
View current cart contents |
# From URL (supports 100+ recipe sites)
nemlig-shopper parse "https://www.valdemarsro.dk/lasagne/"
# From text input
nemlig-shopper parse --text "500g hakket oksekød
1 løg
2 fed hvidløg
400g hakkede tomater"# Basic search
nemlig-shopper search "økologisk mælk"
# Limit results
nemlig-shopper search "ost" --limit 5# Add single item
nemlig-shopper add 701015
# Add with quantity
nemlig-shopper add 701015 --quantity 2Credentials can be provided via:
-
Environment variables (
.envfile):NEMLIG_USERNAME=your-email@example.com NEMLIG_PASSWORD=your-password -
Saved credentials: Run
nemlig-shopper loginto save credentials locally
Credentials are stored in ~/.nemlig-shopper/credentials.json (chmod 600).
Uses recipe-scrapers supporting 100+ sites including:
- Valdemarsro (Danish)
- Mummum (Danish)
- AllRecipes
- BBC Good Food
- Serious Eats
- And many more...
# Clone and install
git clone https://github.com/mhattingpete/nemlig-shopper.git
cd nemlig-shopper
uv sync
# Run tests
uv run pytest
# Run CLI locally
uv run nemlig --helpThis CLI is designed to be agent-friendly. An LLM agent (Claude Code, custom agents, etc.) can drive the full shopping workflow by chaining CLI commands.
- Install the CLI (see Installation)
- Set up credentials via environment variables or
nemlig-shopper login - Point your agent at
SKILL.mdfor the full command reference
A shopping list can contain a mix of recipe URLs and plain ingredients. The agent workflow is:
Shopping List (URLs + plain items)
├─ Recipe URLs → nemlig-shopper parse <url> → extract ingredients
├─ Plain items → use directly
↓
For each ingredient:
→ nemlig-shopper search "<danish ingredient name>" → get product IDs
→ nemlig-shopper add <product_id> --quantity <n> → add to cart
↓
nemlig-shopper cart → verify final cart
# 1. Parse a recipe URL to get ingredients
nemlig-shopper parse "https://www.valdemarsro.dk/pasta-carbonara/"
# Output: list of ingredients with quantities and units
# 2. Search for each ingredient (Danish names work best)
nemlig-shopper search "spaghetti"
nemlig-shopper search "pancetta"
nemlig-shopper search "æg"
nemlig-shopper search "parmesan"
# 3. Add selected products by ID
nemlig-shopper add 701015 --quantity 1
nemlig-shopper add 503220 --quantity 1
nemlig-shopper add 100042 --quantity 1
nemlig-shopper add 504100 --quantity 1
# 4. Verify the cart
nemlig-shopper cart- Translation: Nemlig.com is Danish. Translate English ingredient names to Danish before searching (e.g., "milk" → "mælk", "onion" → "løg", "chicken" → "kylling").
- Product selection: Search results include product ID, name, price, size, and stock status. Pick products that are in stock and match the needed quantity/size.
- Quantities: The
parsecommand outputs quantities and units per ingredient. Use these to determine how many units of a product to add. - Multiple recipes: Process each recipe URL separately with
parse, then search and add all ingredients. - Plain items: Items like "mælk" or "rugbrød" that aren't from a recipe can be searched directly without parsing.
- Skill file: See
SKILL.mdfor the complete agent-readable command reference.
- Uses an unofficial Nemlig.com API
- Danish ingredient/product names work best
- Product IDs are shown in search results
MIT License - See LICENSE file for details