CookAction
CookAction is a CreateAction subtype describing the act of producing or preparing food. It is not a rich-result target itself; it is used in activity streams (fitness apps, smart-kitchen platforms, cooking-class records) and as a link between a person, a recipe, and the venue where cooking happened.
Full example of schema.org/CookAction json-ld markup
The markup is verified as valid with Rich Results Test from Google.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "CookAction",
"name": "Prepared Xoo family smørrebrød for the 1945 anniversary dinner",
"agent": { "@type": "Person", "name": "Mette Kristensen" },
"recipe": {
"@type": "Recipe",
"name": "Xoo family smørrebrød (1945 recipe card)",
"recipeCategory": "Main",
"recipeCuisine": "Danish"
},
"foodEstablishment": {
"@type": "Place",
"name": "NordicKitchen Studio",
"address": { "@type": "PostalAddress", "addressLocality": "Copenhagen", "addressCountry": "DK" }
},
"foodEvent": {
"@type": "FoodEvent",
"name": "Dunmore Medical Archive — 1945 Anniversary Dinner",
"startDate": "2026-04-23T19:00:00+02:00"
},
"startTime": "2026-04-23T16:30:00+02:00",
"endTime": "2026-04-23T18:45:00+02:00",
"actionStatus": "https://schema.org/CompletedActionStatus"
}
</script>Direct properties (3)
recipe: Recipe — what was cooked.foodEstablishment: FoodEstablishment or Place — where it was cooked (restaurant kitchen, home kitchen, cooking school).foodEvent: FoodEvent — a class, dinner party, or culinary event the cooking was part of.
Use CookAction on user-cooking-log pages and recipe-app activity feeds. Combine with result (a FoodEstablishmentReservation-free meal node) or object for the ingredients consumed.
Minimal valid version
The smallest markup that still produces a valid CookAction entity. Use it as the floor. Reach for the advanced example above when you want search engines and AI agents to understand more about your content.
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "CookAction",
"agent": { "@type": "Person", "name": "Cook" },
"recipe": { "@type": "Recipe", "name": "Example recipe" }
}
</script>Google rich results this unlocks
Markup matching this example makes your page eligible for the following Google Search rich results. The primary target drives the required / recommended property classification in the advanced code block above.
- Google docsNo dedicated rich result (use Recipe for search rich results, CookAction for activity data)
Common CookAction mistakes
Mistakes that pass validation but silently fail to earn rich results or mislead consumers walking the graph. Avoid these and your markup will be ahead of most sites in the wild.
- 01
CookAction instead of Recipe for a recipe page
WrongCookAction as the main page type on a recipe articleRightRecipe as the page entity; CookAction only for logs / activity dataGoogle's recipe rich result reads Recipe, not CookAction. CookAction belongs in a user's cooking log or a cooking-class record, not on the recipe article itself.
- 02
foodEstablishment as a string
Wrong"foodEstablishment": "Home kitchen"RightPlace or FoodEstablishment node with name (+ address for public venues)Free-text collapses the home-vs-restaurant distinction that foodEstablishment is meant to carry.
- 03
Linking CookAction to a FoodEvent instead of the event linking to the Recipe
WrongFoodEvent with no recipe; CookAction carrying the recipe aloneRightRecipe on CookAction, and if the event served multiple recipes, FoodEvent with workPerformed / about pointing at each RecipeCrawlers walk FoodEvent → workPerformed to find recipes served; leaving that chain to CookAction alone hides the recipes from the event markup.
Schema properties in this example
About the example data
Mette Kristensen preparing the Xoo family smørrebrød recipe for the Dunmore Medical Archive's 1945 anniversary dinner at NordicKitchen Studio.
Comments
Loading comments...