Recipe Structured Data

You can mark up your recipe content with structured data to provide rich results and host-specific lists for your recipes, such as reviewer ratings, cooking and preparation times, and nutrition information. Use recipe structured data for content about preparing a particular dish.

To enable your recipe for guidance with the Google Assistant on Google Home and smart displays, make sure you add recipeIngredient and recipeInstructions. If your recipe doesn't have these properties, the recipe isn't eligible for guidance, but may still be eligible to appear in Search results.

Example in JSON-LD

<script type="application/ld+json">
{
"@context": "https://schema.org/",
"@type": "Recipe",
"name": "Party Coffee Cake",
"image": [
"https://example.com/photos/1x1/photo.jpg",
"https://example.com/photos/4x3/photo.jpg",
"https://example.com/photos/16x9/photo.jpg"
],
"author": {
"@type": "Person",
"name": "Mary Stone"
},
"datePublished": "2018-03-10",
"description": "This coffee cake is awesome and perfect for parties.",
"prepTime": "PT20M",
"cookTime": "PT30M",
"totalTime": "PT50M",
"keywords": "cake for a party, coffee",
"recipeYield": "10 servings",
"recipeCategory": "Dessert",
"recipeCuisine": "American",
"nutrition": {
"@type": "NutritionInformation",
"calories": "270 calories"
},
"recipeIngredient": [
"2 cups of flour",
"3/4 cup white sugar",
"2 teaspoons baking powder",
"1/2 teaspoon salt",
"1/2 cup butter",
"2 eggs",
"3/4 cup milk"
],
"recipeInstructions": [
{
"@type": "HowToStep",
"text": "Preheat the oven to 350 degrees F. Grease and flour a 9x9 inch pan."
},
{
"@type": "HowToStep",
"text": "In a large bowl, combine flour, sugar, baking powder, and salt."
},
{
"@type": "HowToStep",
"text": "Mix in the butter, eggs, and milk."
},
{
"@type": "HowToStep",
"text": "Spread into the prepared pan."
},
{
"@type": "HowToStep",
"text": "Bake for 30 to 35 minutes, or until firm."
},
{
"@type": "HowToStep",
"text": "Allow to cool."
}
],
"review": {
"@type": "Review",
"reviewRating": {
"@type": "Rating",
"ratingValue": "4",
"bestRating": "5"
},
"author": {
"@type": "Person",
"name": "Julia Benson"
},
"datePublished": "2018-05-01",
"reviewBody": "This cake is delicious!",
"publisher": "The cake makery"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "5",
"ratingCount": "18"
},
"video": [
{
"@type": "VideoObject",
"name": "How to make a Party Coffee Cake",
"description": "This is how you make a Party Coffee Cake.",
"thumbnailUrl": [
"https://example.com/photos/1x1/photo.jpg",
"https://example.com/photos/4x3/photo.jpg",
"https://example.com/photos/16x9/photo.jpg"
],
"contentUrl": "http://www.example.com/video123.mp4",
"embedUrl": "http://www.example.com/videoplayer?video=123",
"uploadDate": "2018-02-05T08:00:00+08:00",
"duration": "PT1M33S",
"interactionCount": "2347",
"expires": "2019-02-05T08:00:00+08:00"
}
]
}
</script>

Required Properties

  1. image (URL or ImageObject): Image of the completed dish.

  2. name: The name of the dish

  3. recipeIngredient: An ingredient used in the recipe. Include only the ingredient text that is necessary for making the recipe. Don't include unnecessary information, such as a definition of the ingredient.

  4. recipeInstructions: The steps to make the dish. There are multiple options for setting the value of recipeInstructions.

Recommended Properties

  1. aggregateRating: Annotation for the average review score assigned to the item.

  2. author (Person): Creator of the recipe.

  3. cookTime: The time it takes to actually cook the dish. You can use min and max as child elements to specify a range of time.

  4. datePublished: The date the recipe was published.

  5. description: A short summary describing the dish.

  6. keywords: Other terms for recipe such as the season (“summer”), the holiday (“Halloween“), or other descriptors (“quick”, “easy”, “authentic”). Separate multiple entries with commas. Don't add category or Cuisine.

  7. nutrition.calories (Energy): The number of calories in each serving.

  8. prepTime: The length of time it takes to prepare the dish. You can use min and max as child elements to specify a range of time. Always use in combination with cookTime.

  9. recipeCategory: The type of meal or course your recipe is about. For example: "dinner", "entree", or "dessert, snack".

  10. recipeCuisine: The region associated with your recipe. For example, "French", Mediterranean", or "American".

  11. recipeYield: The quantity produced by the recipe. For example: number of people served, or number of servings.

  12. review: A review of the dish.

  13. totalTime: The total time it takes to prepare and cook the dish. You can use min and max as child elements to specify a range of time. Use totalTime or a combination of both cookTime and prepTime.

  14. video (VideoObject): An array of video properties that depict the recipe on the page.

Recipe Instructions

HowToStep

You can specify the exact text for each step sentence by setting the value of each HowToStep.

HowToSection

Use only if a recipe has multiple sections. This is used to group steps into multiple sections.

Provide the section name in its name field (for example, “Make the crust”) and specify each HowToStep as an itemListElement. Set the text field of each HowToStep. For example, a pizza recipe may have one section of steps for making the crust, one for preparing the toppings, and one for combining and baking.

Single or repeated field of text

A block of text that includes one or more steps. Google treats all steps as being in a single section. For best results, unambiguously specify individual step sentences with HowToStep.

Additional Guidelines

  • Don't include metadata that belongs elsewhere. Use the author field to specify the author, recipeCuisine for cuisine, recipeCategory for category, and keywords for other keywords.

  • Include only text on how to make the recipe and don't include other text such as “Directions”, “Watch the video”, “Step 1”. Those phrases should be specified outside of the structured data.