Sign inTry it

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.

No reports yetRead-only, no login
Site
Shop Apotheke, Germany
Version
v1
Runs, last 7 days
No reports yet
sha256
d52e0b51aa75…

Run it with your agent

after installing Wield

Ask 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
  1. 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 agent
querystringrequiredProduct, active ingredient or brand term, e.g. 'ibuprofen', 'nasenspray', 'magnesium'

Returns

to your agent
productsobject[]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
}