Search electronics on Kjell & Company.
Searches kjell.com, the Swedish electronics retailer, like its search page: product name, current price in SEK, average rating and product link. First page of results only (product tiles, not categories or brands).
- Site
- Kjell & Company, Sweden
- Version
- v1
- Runs, last 7 days
- No reports yet
- sha256
- 08cae4ff6295…
Run it with your agent
after installing WieldAsk in plain words. Your agent finds this recipe and calls it:
“Search electronics on Kjell & Company.”
Read-only: it changes nothing on the site. No login needed.
{ "tool": "run", "arguments": { "recipe_id": "kjell.com/search-products", "params": { "query": "mobilskal" } } }
Requests
sent from your browser, in order- 1GET/se/sok?qServer-rendered search results page /se/sok?q=...; read-only GET. Product tiles carry data-test-id='product-card'; name is the tile heading, the link is in data-test-id='list-item-link'.
Parameters
from your agentquerystringrequiredProduct term in Swedish or English, e.g. 'mobilskal', 'headset', 'laddare'
Returns
to your agentproductsobject[]name, price_sek, rating, ratings_count, url
querystring
Where it can send
- www.kjell.com
Anything else is blocked by the extension.
Reads from your session
Nothing. Your browser attaches the site's cookies by itself.
Used only in requests to the addresses on the left. Never sent to wield.run or your agent.
Checks
a run passes when- length(output.products) > `0`
- length(output.products[?price_sek != `null`]) > `0`
- length(output.products[?starts_with(url, 'https://www.kjell.com/se/produkter/')]) == length(output.products)
Raw recipe
Served as canonical JSON from /api/v1/recipes/kjell.com/search-products, so its sha256 matches the ETag and the index.
Check it yourself
curl -s https://wield.run/api/v1/recipes/kjell.com/search-products | shasum -a 256 # 08cae4ff62954a00442f48c47022349f91ca877773c6b0c2962dc87114185ee5
kjell.com/search-products.json, v1
{ "description": "Searches kjell.com, the Swedish electronics retailer, like its search page: product name, current price in SEK, average rating and product link. First page of results only (product tiles, not categories or brands).", "effect": "read", "id": "kjell.com/search-products", "keywords": [ "kjell", "kjell.com", "kjell & company", "elektronik", "sök", "mobilskal", "headset", "laddare", "sverige", "sweden", "electronics", "phone accessories", "chargers", "gadgets" ], "output": { "schema": { "properties": { "products": { "items": { "properties": { "name": { "type": "string" }, "price_sek": { "description": "Current price in SEK, e.g. 199 or 399.9 (the site writes 399:90)", "type": [ "number", "null" ] }, "rating": { "description": "Average stars, 0 to 5", "type": [ "number", "null" ] }, "ratings_count": { "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, price_sek: (price && to_number(replace(replace(price, ':-', ''), ':', '.'))) || `null`, rating: (rating_label && to_number(split(rating_label, ' ')[1])) || `null`, ratings_count: (rating_label && to_number(split(rating_label, ' ')[4])) || `null`, url: join('', ['https://www.kjell.com', href])}}" }, "params": { "additionalProperties": false, "properties": { "query": { "description": "Product term in Swedish or English, e.g. 'mobilskal', 'headset', 'laddare'", "maxLength": 100, "minLength": 2, "type": "string" } }, "required": [ "query" ], "type": "object" }, "provenance": { "method": "har", "notes": "GET /se/sok?q=<query> returns 200 HTML (about 1 MB) with product tiles marked data-test-id='product-card'. Name is the h3 heading, link is the anchor in data-test-id='list-item-link', price is the first <p> ('199:-'), rating is the aria-label 'Betyg: 4.5 av 5, 28 omdömen'. Category and brand tiles are different markup and are not read. Hashed classes were avoided.", "recorded_at": "2026-11-08T16:40:00.000Z", "recorded_by": "wield-forge (claude-haiku agent)" }, "requires_login": false, "schema": "https://wield.run/schema/recipe/v1.json", "site": { "country": "SE", "id": "kjell.com", "language": "sv", "name": "Kjell & Company", "origin": "https://www.kjell.com", "origins": [ "https://www.kjell.com" ] }, "steps": [ { "description": "Server-rendered search results page /se/sok?q=...; read-only GET. Product tiles carry data-test-id='product-card'; name is the tile heading, the link is in data-test-id='list-item-link'.", "expect": { "content_type": "html", "status": [ 200 ] }, "extract": { "html_items": { "products": { "fields": { "href": { "attr": "href", "selector": "[data-test-id='list-item-link'] a" }, "name": { "selector": "h3" }, "price": { "selector": "p" }, "rating_label": { "attr": "aria-label", "selector": "[aria-label^='Betyg']" } }, "max": 60, "selector": "[data-test-id='product-card']" } } }, "id": "search", "request": { "headers": { "Accept": "text/html" }, "method": "GET", "query": { "q": "{{params.query}}" }, "url": "/se/sok" } } ], "task": "Search electronics on Kjell & Company", "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_sek != `null`]) > `0`", "length(output.products[?starts_with(url, 'https://www.kjell.com/se/produkter/')]) == length(output.products)" ], "example_params": { "query": "mobilskal" }, "max_ms": 5000 }, "version": 1 }