{"description":"Searches Alternate.nl, the Dutch PC hardware shop, like its listing page: product name, short spec line, price in euros, rating and number of ratings, and link. First page of results (about 24 products). Returns an empty list when nothing matches.","effect":"read","id":"alternate.nl/search-products","keywords":["alternate","alternate.nl","pc onderdelen","computer","hardware","videokaart","grafische kaart","processor","muis","gaming","laptop","netherlands","graphics card","computer parts"],"output":{"schema":{"properties":{"products":{"items":{"properties":{"name":{"description":"Brand and product name","type":"string"},"price_eur":{"type":["number","null"]},"rating":{"description":"Average stars, 0 to 5","type":["number","null"]},"ratings_count":{"type":["integer","null"]},"subtitle":{"description":"Short spec line, e.g. ports or memory","type":["string","null"]},"url":{"type":"string"}},"required":["name","url"],"type":"object"},"type":"array"},"query":{"type":"string"}},"required":["query","products"],"type":"object"},"value":"{query: params.query, products: map(&{name: name, subtitle: subtitle || `null`, price_eur: (price && to_number(replace(replace(replace(replace(price, '€', ''), ' ', ''), '.', ''), ',', '.'))) || `null`, rating: (rating_label && to_number(split(rating_label, ' ')[0])) || `null`, ratings_count: (rating_label && to_number(split(rating_label, ' ')[4])) || `null`, url: join('', ['https://www.alternate.nl', href])}, steps.search.products[?name != `null` && href != `null`] || `[]`)}"},"params":{"additionalProperties":false,"properties":{"query":{"description":"Product, brand or model term, e.g. 'videokaart', 'processor', 'muis'","maxLength":100,"minLength":2,"type":"string"}},"required":["query"],"type":"object"},"provenance":{"method":"har","notes":"One GET to /listing.xhtml?q=…, which answers 200 HTML with the first page of product tiles (a.productBox, about 24). Name is the .product-name text (brand included), price is span.price such as '€ 309,00', rating and count come from the aria-description of .ratingstars. Hrefs are relative product paths and are joined to the origin. Only the first page is returned; the page's further results are not followed.","recorded_at":"2026-11-08T15:40:00.000Z","recorded_by":"wield-forge (claude-haiku agent)"},"requires_login":false,"schema":"https://wield.run/schema/recipe/v1.json","site":{"country":"NL","id":"alternate.nl","language":"nl","name":"Alternate","origin":"https://www.alternate.nl","origins":["https://www.alternate.nl"]},"steps":[{"description":"Server-rendered listing page /listing.xhtml?q=…; read-only GET. Each product is an a.productBox tile with the product name, price span and rating span.","expect":{"content_type":"html","status":[200]},"extract":{"html_items":{"products":{"fields":{"href":{"attr":"href","selector":":scope"},"name":{"selector":".product-name"},"price":{"selector":".price"},"rating_label":{"attr":"aria-description","selector":".ratingstars"},"subtitle":{"selector":".product-name-sub"}},"max":60,"selector":"a.productBox"}}},"id":"search","request":{"headers":{"Accept":"text/html"},"method":"GET","query":{"q":"{{params.query}}"},"url":"/listing.xhtml"}}],"task":"Search Alternate PC hardware products","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_eur > `0`]) > `0`","length(output.products[?name != `null`]) == length(output.products)","length(output.products[?starts_with(url, 'https://www.alternate.nl/')]) == length(output.products)"],"example_params":{"query":"videokaart"},"max_ms":5000},"version":1}