Search online pharmacy products.
Searches the Shop Apotheke online pharmacy like its search page: product name, lowest shown price in euros and link. First page of results. Sponsored ads are dropped. Returns an empty list when nothing matches.
- Site
- Shop Apotheke, Germany
- Version
- v1
- Runs, last 7 days
- No reports yet
- sha256
- d52e0b51aa75…
Run it with your agent
after installing WieldAsk in plain words. Your agent finds this recipe and calls it:
“Search online pharmacy products.”
Read-only: it changes nothing on the site. No login needed.
{ "tool": "run", "arguments": { "recipe_id": "shop-apotheke.com/search-products", "params": { "query": "ibuprofen" } } }
Requests
sent from your browser, in order- 1GET/search.htm?qServer-rendered search page /search.htm?q=…; read-only GET. Result entries are li[data-qa-id='result-list-entry']. Sponsored entries link to an ad redirect and are dropped; organic entries have a relative product href. Price is the current price in the entry-price block (text 'ab € 3,99').
Parameters
from your agentquerystringrequiredProduct, active ingredient or brand term, e.g. 'ibuprofen', 'nasenspray', 'magnesium'
Returns
to your agentproductsobject[]name, price_eur, url
querystring
Where it can send
- www.shop-apotheke.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_eur > `0`]) > `0`
- length(output.products[?starts_with(url, 'https://www.shop-apotheke.com/')]) == length(output.products)
- length(output.products[?name != `null`]) == length(output.products)
Raw recipe
Served as canonical JSON from /api/v1/recipes/shop-apotheke.com/search-products, so its sha256 matches the ETag and the index.
Check it yourself
curl -s https://wield.run/api/v1/recipes/shop-apotheke.com/search-products | shasum -a 256 # d52e0b51aa75cef059c76961be774f25f4e47e0595b07a689052058411a01447
shop-apotheke.com/search-products.json, v1
{ "description": "Searches the Shop Apotheke online pharmacy like its search page: product name, lowest shown price in euros and link. First page of results. Sponsored ads are dropped. Returns an empty list when nothing matches.", "effect": "read", "id": "shop-apotheke.com/search-products", "keywords": [ "shop apotheke", "shop-apotheke", "apotheke", "online apotheke", "arzneimittel", "medikamente", "nasenspray", "ibuprofen", "magnesium", "vitamine", "pharmacy", "medicine", "germany", "gesundheit" ], "output": { "schema": { "properties": { "products": { "items": { "properties": { "name": { "type": "string" }, "price_eur": { "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` && starts_with(href, '/')].{name: name, price_eur: (price && contains(price, '€') && to_number(replace(replace(split(trim(split(price, '€')[1]), ' ')[0], '.', ''), ',', '.'))) || `null`, url: join('', ['https://www.shop-apotheke.com', split(href, '?')[0]])}}" }, "params": { "additionalProperties": false, "properties": { "query": { "description": "Product, active ingredient or brand term, e.g. 'ibuprofen', 'nasenspray', 'magnesium'", "maxLength": 100, "minLength": 2, "type": "string" } }, "required": [ "query" ], "type": "object" }, "provenance": { "method": "har", "notes": "GET /search.htm?q=…, server-rendered (the site's header search form points here). The HTML holds the first page of result entries (li[data-qa-id='result-list-entry']). Name and relative product href come from the serp-result-item-title link. The price is the entry-price block, read as the first euro amount. Sponsored entries link to an ad-tracking redirect and are dropped. Hashed CSS-in-JS classes are not used.", "recorded_at": "2026-11-08T16:50:00.000Z", "recorded_by": "wield-forge (claude-haiku agent)" }, "requires_login": false, "schema": "https://wield.run/schema/recipe/v1.json", "site": { "country": "DE", "id": "shop-apotheke.com", "language": "de", "name": "Shop Apotheke", "origin": "https://www.shop-apotheke.com", "origins": [ "https://www.shop-apotheke.com" ] }, "steps": [ { "description": "Server-rendered search page /search.htm?q=…; read-only GET. Result entries are li[data-qa-id='result-list-entry']. Sponsored entries link to an ad redirect and are dropped; organic entries have a relative product href. Price is the current price in the entry-price block (text 'ab € 3,99').", "expect": { "content_type": "html", "status": [ 200 ] }, "extract": { "html_items": { "products": { "fields": { "href": { "attr": "href", "selector": "[data-qa-id='serp-result-item-title']" }, "name": { "selector": "[data-qa-id='serp-result-item-title']" }, "price": { "selector": "[data-qa-id='entry-price']" } }, "max": 60, "selector": "li[data-qa-id='result-list-entry']" } } }, "id": "search", "request": { "headers": { "Accept": "text/html" }, "method": "GET", "query": { "q": "{{params.query}}" }, "url": "/search.htm" } } ], "task": "Search online pharmacy 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[?starts_with(url, 'https://www.shop-apotheke.com/')]) == length(output.products)", "length(output.products[?name != `null`]) == length(output.products)" ], "example_params": { "query": "ibuprofen" }, "max_ms": 8000 }, "version": 1 }