Search cooking recipes with rating, difficulty and preparation time.
Searches Chefkoch, Germany's largest recipe site, like the site's own search: title, short description, star rating and number of votes, difficulty, preparation time, video flag, whether it is paywalled (Chefkoch Plus), image and link. Sponsored brand recipes are dropped by default.
- Site
- Chefkoch, Germany
- Version
- v1
- Runs, last 7 days
- No reports yet
- sha256
- 743f29e04b34…
Requests
sent from your browser, in order- 1GETapi.chefkoch.de/v2/search-gateway/recipes?limit&offset&queryChefkoch's public search gateway, cross-origin from www.chefkoch.de (CORS allows it). The one-item foreach only computes the offset.
Parameters
from your agentinclude_sponsoredbooleanKeep brand-campaign recipes (marked sponsored) = false
limitenum 10 | 20 | 50 = 20
pageinteger = 1
querystringrequiredDish or ingredients, e.g. 'lasagne', 'kürbissuppe', 'vegan schnell'
Returns
to your agentpageinteger
querystring
recipesobject[]difficulty, has_video, id, image_url, plus_only, prep_time_min, rating, sponsored, subtitle, title, url, votes
totalinteger
Where it can send
- api.chefkoch.de
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) > `5`
- output.total > `100`
- output.recipes[0].rating > `0`
- starts_with(output.recipes[0].url, 'https://www.chefkoch.de/rezepte/')
- length(output.recipes[?sponsored]) == `0`
Raw recipe
Served as canonical JSON from /api/v1/recipes/chefkoch.de/search-recipes, so its sha256 matches the ETag and the index.
Check it yourself
curl -s https://wield.run/api/v1/recipes/chefkoch.de/search-recipes | shasum -a 256 # 743f29e04b34bbf5149e98d5f38e46d2c76910feb6c8b6760276ebf7ce470473
chefkoch.de/search-recipes.json, v1
{ "description": "Searches Chefkoch, Germany's largest recipe site, like the site's own search: title, short description, star rating and number of votes, difficulty, preparation time, video flag, whether it is paywalled (Chefkoch Plus), image and link. Sponsored brand recipes are dropped by default.", "effect": "read", "id": "chefkoch.de/search-recipes", "keywords": [ "chefkoch", "rezept", "rezepte", "kochen", "backen", "abendessen", "vegetarisch", "lasagne", "recipe", "recipes", "cooking", "what to cook", "dinner ideas" ], "output": { "schema": { "properties": { "page": { "type": "integer" }, "query": { "type": "string" }, "recipes": { "items": { "properties": { "difficulty": { "enum": [ "simple", "normal", "advanced", null ] }, "has_video": { "type": "boolean" }, "id": { "type": "string" }, "image_url": { "type": [ "string", "null" ] }, "plus_only": { "description": "Full recipe needs a Chefkoch Plus subscription", "type": "boolean" }, "prep_time_min": { "description": "Active preparation time in minutes", "type": [ "integer", "null" ] }, "rating": { "description": "0-5 stars", "type": [ "number", "null" ] }, "sponsored": { "type": "boolean" }, "subtitle": { "type": [ "string", "null" ] }, "title": { "type": "string" }, "url": { "format": "uri", "type": "string" }, "votes": { "type": "integer" } }, "type": "object" }, "type": "array" }, "total": { "type": "integer" } }, "required": [ "query", "total", "recipes" ], "type": "object" }, "value": "let $sp = params.include_sponsored in {query: params.query, total: steps.search[0].total, page: params.page, recipes: steps.search[0].recipes[?$sp || !sponsored]}" }, "params": { "additionalProperties": false, "properties": { "include_sponsored": { "default": false, "description": "Keep brand-campaign recipes (marked sponsored)", "type": "boolean" }, "limit": { "default": 20, "enum": [ 10, 20, 50 ], "type": "integer" }, "page": { "default": 1, "maximum": 20, "minimum": 1, "type": "integer" }, "query": { "description": "Dish or ingredients, e.g. 'lasagne', 'kürbissuppe', 'vegan schnell'", "maxLength": 100, "minLength": 2, "type": "string" } }, "required": [ "query" ], "type": "object" }, "provenance": { "method": "browser-inspect", "notes": "spikes/chefkoch.md. Public JSON search gateway used by chefkoch.de; CORS allows https://www.chefkoch.de (with credentials) and no cookies or tokens are needed, so credentials omit. Non-null campaign = brand-sponsored recipe; isPlus = paywalled. difficulty 1/2/3 = simpel/normal/pfiffig.", "recorded_at": "2026-11-07T12:27:00+01:00", "recorded_by": "C4" }, "requires_login": false, "schema": "https://wield.run/schema/recipe/v1.json", "site": { "country": "DE", "id": "chefkoch.de", "language": "de", "login_url": "https://www.chefkoch.de/benutzer/einloggen", "name": "Chefkoch", "origin": "https://www.chefkoch.de", "origins": [ "https://api.chefkoch.de" ] }, "steps": [ { "description": "Chefkoch's public search gateway, cross-origin from www.chefkoch.de (CORS allows it). The one-item foreach only computes the offset.", "expect": { "assert": "body.results != null", "content_type": "json", "status": [ 200 ] }, "extract": { "json": { "recipes": "results[].recipe.{id: id, title: title, subtitle: subtitle || `null`, rating: rating.rating || `null`, votes: rating.numVotes || `0`, difficulty: difficulty == `1` && 'simple' || (difficulty == `2` && 'normal' || (difficulty == `3` && 'advanced' || `null`)), prep_time_min: preparationTime || `null`, has_video: hasVideo == `true`, plus_only: isPlus == `true`, sponsored: campaign != `null`, image_url: previewImageUrlTemplate && replace(previewImageUrlTemplate, '<format>', 'crop-480x360') || `null`, url: siteUrl}", "total": "count" } }, "foreach": { "as": "pg", "in": "[{offset: (params.page - `1`) * params.limit}]", "max": 1 }, "id": "search", "request": { "credentials": "omit", "headers": { "Accept": "application/json" }, "method": "GET", "query": { "limit": "{{params.limit}}", "offset": "{{pg.offset}}", "query": "{{params.query}}" }, "url": "https://api.chefkoch.de/v2/search-gateway/recipes" } } ], "task": "Search cooking recipes with rating, difficulty and preparation time", "tos": { "notes": "Chefkoch's terms restrict automated use of its content. One user-initiated search at a time from the user's browser (1 request); recipe texts stay on chefkoch.de via the link.", "reviewed": false }, "verify": { "checks": [ "length(output.recipes) > `5`", "output.total > `100`", "output.recipes[0].rating > `0`", "starts_with(output.recipes[0].url, 'https://www.chefkoch.de/rezepte/')", "length(output.recipes[?sponsored]) == `0`" ], "example_params": { "limit": 10, "query": "lasagne" }, "max_ms": 3000 }, "version": 1 }