Structured data for recipes: Getting content read out loud

Do you have a recipe site? If so, you might already be using structured data to mark up your recipes so they can get highlighted in the search results. Good work! But, Google recently made some changes that might make your implementation incomplete. It also expanded the possibilities of structured data for recipes by bringing guidance into the mix. The result? Google Home can now read your structured data powered recipes out loud!

Structured data, recipes and Google Home

Google is betting big on voice search. While voice search is still in its infancy, there are signs that we are moving towards a future where we are relying much less on our screens. There are many instances where talking to your digital assistant makes much more sense than typing commands. What’s more, the AI in digital assistants will become smarter and more apt at entering into a natural dialogue with you. We’re talking about a real natural language interface here.

A lot is going on right now. Take for instance that Google Duplex demo, showing a digital assistant calling a hairdresser to make an appointment. Joost wrote a post about Google Duplex and the ethics and implications. If AI is this smart, we need to take note.

To get voice search and actions to work, Google relies on structured data. Structured data makes it immediately clear what all the different parts of a page mean so search engines can use that to do cool stuff with. Google Actions, the big database featuring things you can let Assistant do, uses structured data. For instance, here is Google’s page on recipe actions — which is the same as the regular structured data for recipes documentation.

If you want to learn all about structured data, please read our Ultimate Guide to Structured Data and check our visual guide on rich results, structured data and Schema. Want to really master structured data? Check out our Structured data training which is part of the Yoast SEO Academy training subscription!

New rules, new results

In May 2018, Google announced a new and improved way of targeting people who search for recipes. By adding the correct structured data, you can get your recipes read out loud. Google even said that by implementing this you might: “receive traffic from more sources, since users can now discover your recipes through the Google Assistant on Google Home.”

But, when throwing random recipes from some of the largest recipe sites in the world into the Structured Data Testing Tool, you’ll find that hardly any fully comply with these new rules yet. What’s more, even the implementation of the recipe Schema.org itself is widely different between sites. That being said, there’s still a lot to win, even for the big boys.

As of now, Google recommends four new properties in addition to the ones you probably already use:

  • keywords: additional terms to describe the recipe
  • recipeCategory: in which category does the recipe fit?
  • recipeCuisine: from which region is the recipe?
  • video: use this if you have a video showing to make the recipe
warnings structured data testing tool

You’ll see the recommendations in Google’s Structured Data Testing Tool:

Guidance: reading it out loud

How cool would it be if your Google Home could assist while you were cooking? Not by setting timers and the like, but by reading the recipe for you. That’s now possible thanks to guidance. In addition to the four new recommended properties for structured data for recipes, Google states that:

“To enable your recipe for guidance with the Google Home and Google Assistant, 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.”

To get your Google Home to pronounce the steps of your recipes correctly, you need to set the value of recipeInstructions using HowToStep or HowToSection. The latter, of course, should be used if your recipe instructions consist of multiple parts or sections. You can also keep everything in one block of recipeInstruction, but then you are at the mercy of Google as it has to try and work everything out itself. If you have distinct steps, please use HowToStep and/or HowToSection.

Hello keywords, we meet again

In a move straight out of 1997, we see keywords pop up again. Google now recommends using the keyword property to add context for your recipes. Now, this shouldn’t be confused with the recipeCategory and recipeCuisine properties. It is an extra way of describing your articles using words that don’t relate to a category or type of cuisine. We’ll just have to wait and see if the spammers can keep themselves under control.

One of the coolest ways to discover content is the swipeable carousel you see when you search for certain types of content on mobile. To greaten the chance of your site appearing in this overview you can add an ItemList with one or more ListItems to your content.

Now, Google is quick to add that it might not be necessary to add this if you only want to appear in the regular search carousel. If you throw several well-known recipes sites into the Structured Data Testing Tool you will see that hardly any have added ItemList to their pages. Still, they rank high and appear in the carousel. If, however, you want to have site-specific entries — like your list of 5 best chocolate cheesecake recipes, or another type of landing page with recipes — into that carousel you need to add the ItemList structured data. There are several ways of doing this; you can find out more on Google’s documentation pages.

Applying structured data for recipes

If you look at Schema.org/Recipe, you might be starting to go a little bit green around the gills. Where do you even start? It’s massive! These are all the properties you could add, but that doesn’t mean that you should. Google requires just a couple but recommends a lot more.

These are the required properties:

  • @context: set to Schema.org
  • @type: set to Recipe
  • image: can be a URL or a ImageObject
  • name: name of the dish

That’s it! But, as you might have guessed, this won’t get you very far. By providing Google with as much data about your recipe as possible, you increase the chance that Google ‘gets’ your recipe. After that, it can apply the rich results and corresponding Actions accordingly.

Here are the recommended properties:

  • aggregateRating: average review score for this recipe
  • author: who made it? Use Schema.org/Person
  • cookTime: the time it takes to cook the recipe
  • datePublished: when was the recipe published?
  • description: a description of the recipe
  • keywords: terms to describe the recipe
  • nutrition.calories: the number of calories. Use Schema.org/Energy
  • prepTime: how long do the preparations take?
  • recipeCategory: is it breakfast, lunch, dinner or something else?
  • recipeCuisine: where in the world is the recipe from originally?
  • recipeIngredient: every ingredient you need to make the recipe. This property is required if you want Google Home to read your recipe out loud.
  • recipeInstructions: mark up the steps with HowToStep or HowToSection with embedded ItemistElement with a HowToStep.
  • recipeYield: for how many servings is this?
  • review: add any review you might have
  • totalTime: how long does it all take?
  • video: add a video showing how to make the recipe, if applicable

To show you how this all translates to code, we need an example. So, here’s Googles example recipe in JSON-LD format. You’ll see that it is all obvious and pretty easy to understand. If you want to implement JSON-LD code on your page, Google Tag Manager might be your best bet.

<!doctype html>
<html amp lang="en">
  <head>
    <meta charset="utf-8">
    <title>Party Coffee Cake</title>
    <link rel="canonical" href="http://example.ampproject.org/recipe-metadata.html" />
    <meta name="viewport" content="width=device-width,minimum-scale=1,initial-scale=1">
    <script type="application/ld+json">
     {
      "@context": "http://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": [
     {
    "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.flv",
    "embedUrl": "http://www.example.com/videoplayer.swf?video=123",
    "uploadDate": "2018-02-05T08:00:00+08:00",
    "duration": "PT1M33S",
    "interactionCount": "2347",
    "expires": "2019-02-05T08:00:00+08:00"
   }
  ]
}
</script>
  </head>
  <body>
    <h1>The best coffee cake you’ll ever try!</h1>
  </body>
</html>

Conclusion: Got a recipe site? Add structured data now!

Recipe sites are in a very cool position. It seems that they get everything first. By marking up your recipes with structured data, you can get Google to do a lot of cool stuff with your recipes. You can get them to pronounce it via Google Home or try to find other ways of interacting with them with Actions via the Assistant database. And this is probably only the beginning.

Read more: Structured data: the ultimate guide »

Coming up next!


18 Responses to Structured data for recipes: getting content read out loud