Sign inTry it

Find recipes on Marmiton.

Searches Marmiton, France's largest recipe site, like its search page: recipe title, course (plat principal, dessert, …), star rating out of 5 and number of reviews, whether it has a video, image and link. The first 15 results in Marmiton's order, with the total number of matches. Cooking times are on the recipe pages, not in the results.

No reports yetRead-only, no login
Site
Marmiton, France
Version
v1
Runs, last 7 days
No reports yet
sha256
1b18eba32219…

Run it with your agent

after installing Wield

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

“Find recipes on Marmiton.”

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

{
  "tool": "run",
  "arguments": {
    "recipe_id": "marmiton.org/search-recipes",
    "params": {
      "query": "lasagnes"
    }
  }
}

Requests

sent from your browser, in order
  1. 1GET/recettes/recherche.aspx?aqtMarmiton's search page (/recettes/recherche.aspx?aqt=…), server-rendered from its Algolia search: 15 cards in ul.search-list.

Parameters

from your agent
querystringrequiredPlat ou ingrédients, e.g. 'lasagnes', 'gâteau au chocolat', 'poulet curry'

Returns

to your agent
querystring
recipesobject[]course, has_video, image, rating, reviews, title, url
totalinteger

Where it can send

  • www.marmiton.org

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.recipes) == `15`
  • output.total > `100`
  • length(output.recipes[?starts_with(url, 'https://www.marmiton.org/recettes/recette_')]) == length(output.recipes)
  • length(output.recipes[?rating != `null` && rating <= `5`]) > `10`
  • length(output.recipes[?reviews > `0`]) > `10`

Raw recipe

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

Check it yourself
curl -s https://wield.run/api/v1/recipes/marmiton.org/search-recipes | shasum -a 256
# 1b18eba32219c52491fbe63a58bf9e05e6320d408d1ccb2546bb3a055004a52f
marmiton.org/search-recipes.json, v1
{
  "description": "Searches Marmiton, France's largest recipe site, like its search page: recipe title, course (plat principal, dessert, …), star rating out of 5 and number of reviews, whether it has a video, image and link. The first 15 results in Marmiton's order, with the total number of matches. Cooking times are on the recipe pages, not in the results.",
  "effect": "read",
  "id": "marmiton.org/search-recipes",
  "keywords": [
    "marmiton",
    "recette",
    "recettes",
    "cuisine",
    "plat",
    "dessert",
    "gâteau",
    "dîner",
    "facile",
    "recipe",
    "recipes",
    "french cooking"
  ],
  "output": {
    "schema": {
      "properties": {
        "query": {
          "type": "string"
        },
        "recipes": {
          "items": {
            "properties": {
              "course": {
                "description": "e.g. Plat principal, Dessert, Entrée",
                "type": [
                  "string",
                  "null"
                ]
              },
              "has_video": {
                "type": "boolean"
              },
              "image": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "rating": {
                "description": "0–5",
                "type": [
                  "number",
                  "null"
                ]
              },
              "reviews": {
                "type": "integer"
              },
              "title": {
                "type": "string"
              },
              "url": {
                "type": "string"
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "total": {
          "type": [
            "integer",
            "null"
          ]
        }
      },
      "required": [
        "query",
        "recipes"
      ],
      "type": "object"
    },
    "value": "{query: params.query, total: (steps.search.total_text && to_number(split(replace(replace(steps.search.total_text, ' ', ''), `\"\\u00a0\"`, ''), 'r')[0])) || `0`, recipes: map(&{title: title, course: course || `null`, rating: (rating && to_number(split(rating, '/')[0])) || `null`, reviews: (reviews && to_number(split(reviews, ' ')[0])) || `0`, has_video: video != `null`, image: image || `null`, url: join('', ['https://www.marmiton.org', href])}, steps.search.recipes[?href != `null`] || `[]`)}"
  },
  "params": {
    "additionalProperties": false,
    "properties": {
      "query": {
        "description": "Plat ou ingrédients, e.g. 'lasagnes', 'gâteau au chocolat', 'poulet curry'",
        "maxLength": 100,
        "minLength": 2,
        "type": "string"
      }
    },
    "required": [
      "query"
    ],
    "type": "object"
  },
  "provenance": {
    "method": "browser-inspect",
    "notes": "The search page /recettes/recherche.aspx?aqt=<query> is server-rendered: h1.page-search__title, then a subtitle '<n> résultats', then ul.search-list with 15 li.search-list__item cards (Algolia object ids): a.card-content__title (title, /recettes/recette_<slug>_<id>.aspx), .image-label (course), .rating__rating ('4.8/5'), .rating__nbreviews ('1429 avis'), an item-type-icon--recipe-video marker, img. No sponsored cards were in the list. A search without results answers HTTP 404 with an HTML page and no list; the recipe treats it as zero results. Images are links to assets.afcdn.com (never called).",
    "recorded_at": "2026-11-07T22:17:00+01:00",
    "recorded_by": "C4"
  },
  "requires_login": false,
  "schema": "https://wield.run/schema/recipe/v1.json",
  "site": {
    "country": "FR",
    "id": "marmiton.org",
    "language": "fr",
    "name": "Marmiton",
    "origin": "https://www.marmiton.org",
    "origins": [
      "https://www.marmiton.org"
    ]
  },
  "steps": [
    {
      "description": "Marmiton's search page (/recettes/recherche.aspx?aqt=…), server-rendered from its Algolia search: 15 cards in ul.search-list.",
      "expect": {
        "content_type": "html",
        "status": [
          200,
          404
        ]
      },
      "extract": {
        "html": {
          "total_text": {
            "selector": ".page-search__title + .paragraph p"
          }
        },
        "html_items": {
          "recipes": {
            "fields": {
              "course": {
                "selector": ".image-label"
              },
              "href": {
                "attr": "href",
                "selector": "a.card-content__title"
              },
              "image": {
                "attr": "src",
                "selector": "img"
              },
              "rating": {
                "selector": ".rating__rating"
              },
              "reviews": {
                "selector": ".rating__nbreviews"
              },
              "title": {
                "selector": "a.card-content__title"
              },
              "video": {
                "attr": "class",
                "selector": ".item-type-icon--recipe-video"
              }
            },
            "max": 15,
            "selector": "ul.search-list > li.search-list__item"
          }
        }
      },
      "id": "search",
      "request": {
        "headers": {
          "Accept": "text/html"
        },
        "method": "GET",
        "query": {
          "aqt": "{{params.query}}"
        },
        "url": "/recettes/recherche.aspx"
      }
    }
  ],
  "task": "Find recipes on Marmiton",
  "tos": {
    "notes": "robots.txt allows /recettes/recherche.aspx?aqt=… and disallows its paged variants (page, start), so the recipe reads the first page only. One request per call; no recipe pages, cookbook or comment actions.",
    "reviewed": false
  },
  "verify": {
    "checks": [
      "length(output.recipes) == `15`",
      "output.total > `100`",
      "length(output.recipes[?starts_with(url, 'https://www.marmiton.org/recettes/recette_')]) == length(output.recipes)",
      "length(output.recipes[?rating != `null` && rating <= `5`]) > `10`",
      "length(output.recipes[?reviews > `0`]) > `10`"
    ],
    "example_params": {
      "query": "lasagnes"
    },
    "max_ms": 3000
  },
  "version": 1
}