{"description":"Searches Hinta.fi like its product search page (/haku?q=...): product name, category, features, lowest price in euros, number of shops and link. First page of results (about 20 products). Returns an empty list when nothing matches.","effect":"read","id":"hinta.fi/search-price-comparison","keywords":["hinta","hinta.fi","hintavertailu","hinnat","vertailu","tuotehaku","suomi","finland","price comparison","prices","ssd","tietokone","kodinkoneet","elektroniikka"],"output":{"schema":{"properties":{"products":{"items":{"properties":{"category":{"type":["string","null"]},"description":{"description":"Key features as listed","type":["string","null"]},"name":{"type":"string"},"price_eur":{"description":"Lowest listed price in euros","type":["number","null"]},"store_count":{"description":"Number of shops with the product","type":["integer","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` && href != `null`].{name: name, category: group || `null`, description: features || `null`, price_eur: (price && to_number(replace(replace(replace(replace(price, '€', ''), ' ', ''), ' ', ''), ',', '.'))) || `null`, store_count: (store_count && to_number(store_count)) || `null`, url: join('', ['https://hinta.fi', href])}}"},"params":{"additionalProperties":false,"properties":{"query":{"description":"Product term, e.g. 'ssd 1tb', 'näytönohjain', 'imuri'","maxLength":100,"minLength":2,"type":"string"}},"required":["query"],"type":"object"},"provenance":{"method":"har","notes":"GET /haku?q=...: the server-rendered HTML has one tr.hv-prt-tr per product, with the product name in strong.hv--name, the price in the data-price attribute (e.g. '219,00 €'), and the shop count in the store-count cell. No sponsored rows were seen in the page. Hashed classes were avoided. The 'Kauppaan' store button is not followed.","recorded_at":"2026-11-08T13:10:00.000Z","recorded_by":"wield-forge (claude-haiku agent)"},"requires_login":false,"schema":"https://wield.run/schema/recipe/v1.json","site":{"country":"FI","id":"hinta.fi","language":"fi","name":"Hinta.fi","origin":"https://hinta.fi","origins":["https://hinta.fi"]},"steps":[{"description":"Server-rendered product search page /haku?q=...; read-only GET. Product rows are tr.hv-prt-tr; name from strong.hv--name, price from the row's data-price attribute, shop count from the store-count cell.","expect":{"assert":"status == `200` && contains(body, 'Tuotehaku')","content_type":"html","status":[200]},"extract":{"html_items":{"products":{"fields":{"features":{"selector":"div.hv--features"},"group":{"selector":"div.hv--group"},"href":{"attr":"href","selector":"a.hv-prt_product-a"},"name":{"selector":"strong.hv--name"},"price":{"attr":"data-price","selector":":scope"},"store_count":{"selector":"td.hv--store-count"}},"max":60,"selector":"tr.hv-prt-tr"}}},"id":"search","request":{"headers":{"Accept":"text/html"},"method":"GET","query":{"q":"{{params.query}}"},"url":"/haku"}}],"task":"Compare product prices on Hinta.fi","tos":{"notes":"Not reviewed. One search page per call, the same page a visitor loads; no basket, account or checkout calls. The site's terms on automated access were not checked.","reviewed":false},"verify":{"checks":["length(output.products) > `0`","starts_with(output.products[0].url, 'https://hinta.fi/')","length(output.products[?name != `null`]) == length(output.products)","length(output.products[?price_eur > `0`]) > `0`"],"example_params":{"query":"ssd 1tb"},"max_ms":6000},"version":1}