Supermarket Deals (DE)

v1.1.0

Search German supermarket flyers (Aldi, Lidl, REWE, EDEKA, Kaufland) for product deals via Marktguru. Results ranked by best price per litre (EUR/L). No API...

1· 415·0 current·0 all-time
byBen Miller@benmillerat
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
The name/description (search German supermarket flyers via Marktguru) matches the implementation: the code queries api.marktguru.de using API keys it extracts from https://www.marktguru.de. There are no unrelated credentials, external services, or unexpected binaries required.
Instruction Scope
SKILL.md and the CLI behaviour are scoped to fetching Marktguru data, caching keys, and writing a local config. The runtime instructions and code only reference the Marktguru homepage and API endpoints and local files under ~/.supermarket-deals. There is input validation and ID sanitization to avoid URL injection. The skill does cache extracted API keys to keys.json (cached 6h) as documented.
Install Mechanism
This is an instruction+source package (no platform install spec). The README recommends npm install and tsc build; package.json lists only devDependencies and the code uses only Node built-ins, so runtime npm install is not strictly necessary unless building from TypeScript. No downloads from arbitrary URLs or extract steps are present. Consider that running npm install will install development packages from the public npm registry.
Credentials
The skill requests no environment variables or external credentials. It does store extracted Marktguru API keys and client keys in ~/.supermarket-deals/keys.json and user config in ~/.supermarket-deals/config.json. Caching those keys locally is proportionate to the claimed behaviour but users should be aware these are credentials harvested from the site (not user secrets) and are stored on disk.
Persistence & Privilege
The skill does persist data to the user's home directory (~/.supermarket-deals) but does not request always:true or any elevated platform privileges. It does not modify other skills or system-wide settings. Local persistence is limited to its own config and cached keys files.
Assessment
This skill appears to do what it says: it fetches Marktguru pages to extract ephemeral API keys, uses those keys to call api.marktguru.de, and caches keys and user config under ~/.supermarket-deals. Before installing, consider: (1) review the two files it writes (~/.supermarket-deals/keys.json and config.json) and their filesystem permissions; (2) be aware npm install will install dev packages (the project is TypeScript) — build in a sandbox if you prefer; (3) verify that extracting API keys from the Marktguru homepage is acceptable under Marktguru's terms of service if you plan to use this at scale; and (4) if you want to avoid local caching of keys, you can modify the code to avoid saving keys to disk. Overall the package is internally consistent and proportional to its stated purpose.

Like a lobster shell, security has layers — review code before you run it.

latestvk970bpap25pw64hx3fvzk18san82g8h3
415downloads
1stars
2versions
Updated 1mo ago
v1.1.0
MIT-0

supermarket-deals

Search German supermarket flyers for product deals via the Marktguru API. Results are ranked by best price per litre.

What this skill does

  • Fetches Marktguru API keys automatically from the homepage (no registration needed, keys are cached 6h)
  • Searches current Prospekte (flyers) by product query + ZIP code
  • Supports multiple search terms in one call (merged + deduplicated)
  • Filters by store, ranks by EUR/L
  • Returns a direct Marktguru link for each deal
  • The skill is intentionally "dumb" — it fetches and formats data. Your agent applies smart filtering and formatting for notifications.

Setup

cd path/to/supermarket-deals
npm install
npm run build

Optionally set your defaults:

node dist/index.js config set zip 85540
node dist/index.js config set stores "Lidl,REWE,EDEKA,ALDI SÜD,Kaufland"

Usage

# Single search term
node dist/index.js search "Cola Zero" --zip 85540

# Multiple terms (merged + deduped, useful for product aliases)
node dist/index.js search "Cola Zero" "Coke Zero" --zip 85540

# Broad search — let your agent do the filtering
node dist/index.js search "Cola" --zip 85540

# Filter by specific stores
node dist/index.js search "Monster Energy" --zip 80331 --stores "Lidl,ALDI SÜD"

# JSON output for agent/cron use
node dist/index.js search "Cola" --zip 85540 --json

# Show config
node dist/index.js config

Agent pattern (recommended)

Use a broad search term and let your agent filter intelligently:

node dist/index.js search "Cola" --zip 85540 --json

Then instruct your agent to:

  • Include deals where description says "versch. Sorten" (these bundle all variants incl. Zero)
  • Include deals that explicitly mention Coca-Cola, Coke Zero, etc.
  • Exclude deals that only mention Powerade, Fuze Tea, Sprite-only, etc.
  • Rank by EUR/L and highlight the best deal

This approach catches deals that Marktguru lists as generic "Cola category" without naming every variant.

Output columns

ColumnDescription
DescriptionProduct description from flyer
StoreRetailer name
SizeVolume × quantity (e.g. 6×0.33l, 1.5l)
PriceTotal price
EUR/LPrice per litre (calculated or from API reference price)
ValidDeal validity dates
URLDirect link to Marktguru offer page

Notes

  • Prospekte refresh on Mondays and Thursdays
  • Results are cached by Marktguru for ~15 minutes
  • Some regional store branches may not submit flyers to Marktguru — broad queries catch more
  • API keys rotate and are fetched fresh at runtime (cached 6h in ~/.supermarket-deals/keys.json)

Comments

Loading comments...