Geizhals.at

v0.1.1

Search Geizhals.at (Austria) with HTTP-only autocomplete + detail-page parsing (no browser automation). Use when users want quick price checks from Geizhals....

0· 596· 2 versions· 1 current· 1 all-time· Updated 4h ago· MIT-0
byRoland Kákonyi@rolandkakonyi

Install

openclaw skills install geizhals-at

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.

Version tags

latestvk97ekr99w3pqpcqvedsdk0jtbx81bbgv