← Back to Skills Marketplace
rolandkakonyi

Geizhals.at

by Roland Kákonyi · GitHub ↗ · v0.1.1
cross-platform ✓ Security Clean
584
Downloads
0
Stars
1
Active Installs
2
Versions
Install in OpenClaw
/install geizhals-at
Description
Search Geizhals.at (Austria) with HTTP-only autocomplete + detail-page parsing (no browser automation). Use when users want quick price checks from Geizhals....
README (SKILL.md)

geizhals-at

Geizhals-only lookup skill (Austria) using plain HTTP.

Behavior

  • Query Geizhals autocomplete endpoint (/acs) for product candidates.
  • Fetch top candidate detail pages.
  • Extract:
    • min_price_eur
    • shop
    • offer_count
    • price_confidence + price_source
  • Return stable JSON records with schema_version.

Constraints

  • No browser automation.
  • No JS execution.
  • Unofficial integration: HTML patterns can change and break extraction.
  • Keep request volume low.

Usage

Run commands from the geizhals-at skill directory.

uv first:

uv run scripts/geizhals.py search "iphone 15" --limit 5

JSON output:

uv run scripts/geizhals.py search "mac mini" --limit 5 --json

Debug + explicit cache dir:

uv run scripts/geizhals.py search "bosch akkuschrauber" --limit 5 --json --debug --cache-dir /tmp/geizhals-cache

Fallback without uv:

python3 scripts/geizhals.py search "iphone 15" --limit 5

Output contract

Each result includes:

  • schema_version (currently 1.0)
  • name
  • detail_url
  • min_price_eur (nullable)
  • shop (nullable)
  • offer_count (nullable)
  • price_confidence: high|medium|low|unknown
  • price_source: embedded_offer_raw_price|meta_product_price|title_ab_price|none
  • error (nullable)

Testing

Run parser tests from the skill directory:

uv run --with pytest python -m pytest tests/test_parsers.py

Fallback:

python3 -m pytest tests/test_parsers.py

Fixtures live in tests/fixtures/.

Known limitations

  • Results are Geizhals-only by design.
  • Some products may miss a shop or exact cheapest offer if page structure changes.
  • If Geizhals rate-limits, the script retries with exponential backoff but can still fail.
Usage Guidance
This is an unofficial, best-effort scraper for Geizhals.at — review the included Python source before running. It makes direct HTTP requests to geizhals.at (no external endpoints), and optionally writes cache files to a directory you supply. To reduce risk: run the script in an isolated environment (container/VM), avoid running unreviewed third-party code as root, respect Geizhals' terms/robots and rate limits, and verify tests (pytest) if you want extra assurance.
Capability Analysis
Type: OpenClaw Skill Name: geizhals-at Version: 0.1.1 The OpenClaw skill `geizhals-at` is benign. The `SKILL.md` provides clear, legitimate instructions for searching Geizhals.at without any prompt injection attempts. The core script `scripts/geizhals.py` uses standard Python libraries (`urllib.request`, `re`, `json`) to perform web scraping, making HTTP requests exclusively to `geizhals.at`. File system access is limited to caching in a user-configurable or default cache directory (`~/.cache/geizhals-skill`), which is a legitimate function. Input parameters are properly sanitized (e.g., URL encoding for queries), and there are no calls to dangerous functions like `os.system` or `eval`, nor any evidence of data exfiltration, persistence mechanisms, or other malicious behaviors. The skill's functionality is entirely aligned with its stated purpose.
Capability Assessment
Purpose & Capability
Name/description match the implementation: the code queries Geizhals autocomplete (/acs) and fetches detail pages, then extracts price/shop/offer_count and related fields. No unrelated dependencies or credentials are requested.
Instruction Scope
SKILL.md and the script direct only HTTP requests to geizhals.at, local caching (optional), parsing of returned HTML, and printing JSON or table output. The instructions do not ask the agent to read unrelated files, access other environment variables, or transmit data to third-party endpoints.
Install Mechanism
There is no install spec (instruction-only with included Python script and tests). The skill is executed as a local Python program; no downloads from remote URLs or package installs are performed by an installer.
Credentials
The skill declares no required environment variables or credentials. The only filesystem interaction is optional caching to a user-specified cache directory; no secrets or unrelated config paths are requested.
Persistence & Privilege
always is false and the skill does not attempt to modify other skills or global agent settings. It runs on demand and does not request persistent elevated privileges.
How to Use
  1. Make sure OpenClaw is installed (local or Docker)
  2. Run the install command in chat: /install geizhals-at
  3. After installation, invoke the skill by name or use /geizhals-at
  4. Provide required inputs per the skill's parameter spec and get structured output
Version History
v0.1.1
Switch to uv-first usage, remove absolute paths to avoid username/home leakage, add pyproject.toml
v0.1.0
Initial public release: HTTP-only Geizhals.at search with retries, cache, confidence fields, and parser fixtures
Metadata
Slug geizhals-at
Version 0.1.1
License
All-time Installs 1
Active Installs 1
Total Versions 2
Frequently Asked Questions

What is Geizhals.at?

Search Geizhals.at (Austria) with HTTP-only autocomplete + detail-page parsing (no browser automation). Use when users want quick price checks from Geizhals.... It is an AI Agent Skill for Claude Code / OpenClaw, with 584 downloads so far.

How do I install Geizhals.at?

Run "/install geizhals-at" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.

Is Geizhals.at free?

Yes, Geizhals.at is completely free (open-source). You can download, install and use it at no cost.

Which platforms does Geizhals.at support?

Geizhals.at is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).

Who created Geizhals.at?

It is built and maintained by Roland Kákonyi (@rolandkakonyi); the current version is v0.1.1.

💬 Comments