{"description":"Searches the Toppreise.ch price comparison like its search page: product name, lowest price in CHF with shipping as shown, number of offers and link to the comparison page. First page of results. Returns an empty list when nothing matches.","effect":"read","id":"toppreise.ch/search-price-comparison","keywords":["toppreise","toppreise.ch","preisvergleich","preise","schweiz","suisse","price comparison","switzerland","chf","produkte","elektronik","smartphone","tv","shopping"],"output":{"schema":{"properties":{"products":{"items":{"properties":{"name":{"type":"string"},"offers":{"description":"Number of offers","type":["integer","null"]},"price_chf":{"description":"Lowest offer price in CHF, shipping included as shown","type":["number","null"]},"url":{"type":"string"}},"required":["name","url"],"type":"object"},"type":"array"},"query":{"type":"string"}},"required":["query","products"],"type":"object"},"value":"{query: params.query, products: steps.search.products[?name != `null` && link != `null`].{name: name, price_chf: (price && to_number(replace(price, `\"'\"`, `\"\"`))) || `null`, offers: (offers && to_number(split(trim(offers), ' ')[0])) || `null`, url: join('', ['https://www.toppreise.ch', link])}}"},"params":{"additionalProperties":false,"properties":{"query":{"description":"Product term, brand or model, e.g. 'iphone 15', 'samsung tv', 'dyson'","maxLength":100,"minLength":2,"type":"string"}},"required":["query"],"type":"object"},"provenance":{"method":"har","notes":"GET /produktsuche?q=…, server-rendered. The HTML holds the first page of product items (div.Plugin_Product with data-entity-id and data-link). Name from the bold link, price from the Plugin_Price element (CHF, inkl. Versandkosten), offer count from the offers block. Product images are lazy-loaded and not returned.","recorded_at":"2026-11-08T16:30:00.000Z","recorded_by":"wield-forge (claude-haiku agent)"},"requires_login":false,"schema":"https://wield.run/schema/recipe/v1.json","site":{"country":"CH","id":"toppreise.ch","language":"de","name":"Toppreise","origin":"https://www.toppreise.ch","origins":["https://www.toppreise.ch"]},"steps":[{"description":"Server-rendered product search /produktsuche?q=…; read-only GET. Product items are div.Plugin_Product[data-entity-id] with the link in data-link and the name in a.bold. Price is the first Plugin_Price in the item, in CHF.","expect":{"content_type":"html","status":[200]},"extract":{"html_items":{"products":{"fields":{"link":{"attr":"data-link","selector":":scope"},"name":{"selector":"a.bold"},"offers":{"selector":".offers"},"price":{"selector":".Plugin_Price"}},"max":50,"selector":"div.Plugin_Product[data-entity-id]"}}},"id":"search","request":{"headers":{"Accept":"text/html"},"method":"GET","url":"/produktsuche?q={{params.query | urlencode}}"}}],"task":"Compare Swiss product prices","tos":{"notes":"Not reviewed. One search page per call, the same page a visitor loads. The site's terms on automated access were not checked.","reviewed":false},"verify":{"checks":["length(output.products) > `0`","length(output.products[?price_chf > `0`]) > `0`","length(output.products[?starts_with(url, 'https://www.toppreise.ch/preisvergleich/')]) == length(output.products)","length(output.products[?name != `null`]) == length(output.products)"],"example_params":{"query":"iphone 15"},"max_ms":8000},"version":1}