Sign inTry it

Search computer hardware at LDLC.

Searches LDLC like its search box: product name, link, short description and price in euros. First results page (about 48 products). Returns an empty list when nothing matches.

No reports yetRead-only, no login
Site
LDLC, France
Version
v1
Runs, last 7 days
No reports yet
sha256
ee178de5ed5c…

Run it with your agent

after installing Wield

Ask in plain words. Your agent finds this recipe and calls it:

“Search computer hardware at LDLC.”

Read-only: it changes nothing on the site. No login needed.

{
  "tool": "run",
  "arguments": {
    "recipe_id": "ldlc.com/search-products",
    "params": {
      "query": "processeur"
    }
  }
}

Requests

sent from your browser, in order
  1. 1GET/recherche/{{ params.query | urlencode }}/Search results page /recherche/<term>/, server-rendered; read-only GET. Each result is li.pdt-item: the name and link in h3.title-3, the description in p.desc, the price in .basket .price .price.

Parameters

from your agent
querystringrequiredProduct, brand or model, e.g. 'processeur', 'ram ddr5', 'clavier mécanique'

Returns

to your agent
productsobject[]description, name, price_eur, url
querystring

Where it can send

  • www.ldlc.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.ldlc.com/fiche/')]) == length(output.products)
  • length(output.products[?name != `null`]) == length(output.products)

Raw recipe

Served as canonical JSON from /api/v1/recipes/ldlc.com/search-products, so its sha256 matches the ETag and the index.

Check it yourself
curl -s https://wield.run/api/v1/recipes/ldlc.com/search-products | shasum -a 256
# ee178de5ed5c6c9e8e9aa5857e4a9576e83db7965f875c1a471f35fdda4a694e
ldlc.com/search-products.json, v1
{
  "description": "Searches LDLC like its search box: product name, link, short description and price in euros. First results page (about 48 products). Returns an empty list when nothing matches.",
  "effect": "read",
  "id": "ldlc.com/search-products",
  "keywords": [
    "ldlc",
    "informatique",
    "processeur",
    "ram ddr5",
    "clavier mécanique",
    "composants",
    "high-tech",
    "france",
    "computer hardware",
    "cpu",
    "ram",
    "keyboard",
    "gaming pc"
  ],
  "output": {
    "schema": {
      "properties": {
        "products": {
          "items": {
            "properties": {
              "description": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "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` && href != `null`].{name: name, description: description || `null`, price_eur: (price && to_number(join('.', [replace(replace(split(price, '€')[0], ' ', ''), ' ', ''), split(price, '€')[1] || '00'])) ) || `null`, url: (starts_with(href, 'http') && href) || join('', ['https://www.ldlc.com', href])}}"
  },
  "params": {
    "additionalProperties": false,
    "properties": {
      "query": {
        "description": "Product, brand or model, e.g. 'processeur', 'ram ddr5', 'clavier mécanique'",
        "maxLength": 100,
        "minLength": 2,
        "type": "string"
      }
    },
    "required": [
      "query"
    ],
    "type": "object"
  },
  "provenance": {
    "method": "har",
    "notes": "GET /recherche/<term>/ answers 200 HTML titled 'Votre recherche sur LDLC : <term>' with li.pdt-item results (48 on the first page). Name and link come from h3.title-3 and its anchor (relative /fiche/… joined to the origin), description from p.desc, price text like '204€<sup>95</sup>', read as 204.95 by joining the parts around the euro sign. Only the first page is read. No cross-site hosts are called.",
    "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": "FR",
    "id": "ldlc.com",
    "language": "fr",
    "name": "LDLC",
    "origin": "https://www.ldlc.com",
    "origins": [
      "https://www.ldlc.com"
    ]
  },
  "steps": [
    {
      "description": "Search results page /recherche/<term>/, server-rendered; read-only GET. Each result is li.pdt-item: the name and link in h3.title-3, the description in p.desc, the price in .basket .price .price.",
      "expect": {
        "content_type": "html",
        "status": [
          200
        ]
      },
      "extract": {
        "html_items": {
          "products": {
            "fields": {
              "description": {
                "selector": "p.desc"
              },
              "href": {
                "attr": "href",
                "selector": "h3.title-3 a"
              },
              "name": {
                "selector": "h3.title-3"
              },
              "price": {
                "selector": ".basket .price .price"
              }
            },
            "max": 60,
            "selector": "li.pdt-item"
          }
        }
      },
      "id": "search",
      "request": {
        "headers": {
          "Accept": "text/html"
        },
        "method": "GET",
        "url": "/recherche/{{ params.query | urlencode }}/"
      }
    }
  ],
  "task": "Search computer hardware at LDLC",
  "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.ldlc.com/fiche/')]) == length(output.products)",
      "length(output.products[?name != `null`]) == length(output.products)"
    ],
    "example_params": {
      "query": "processeur"
    },
    "max_ms": 5000
  },
  "version": 1
}