geizhals-at
v0.1.1Search Geizhals.at (Austria) with HTTP-only autocomplete + detail-page parsing (no browser automation). Use when users want quick price checks from Geizhals.at and accept unofficial/best-effort scraping limits.
Installation
Please help me install the skill `geizhals-at` from SkillHub official store.
npx skills add rolandkakonyi/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_eurshopoffer_countprice_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(currently1.0)namedetail_urlmin_price_eur(nullable)shop(nullable)offer_count(nullable)price_confidence:high|medium|low|unknownprice_source:embedded_offer_raw_price|meta_product_price|title_ab_price|noneerror(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.