Ranking Rich Results for SEO (With Structured Data Examples)

Share this post

We are far from the 10 blue links. Rich results are dominating the search engine result pages (SERPs). There are 4 main ways SEOs and webmasters can use to rank for rich results in Google:

  1. Having the proper HTML tags,
  2. Validating your business in Google Business Profile
  3. Adding Structured data,
  4. Building your own Knowledge graph.

In this post, we will show how you can leverage structured data to rank for rich results in the SERP.

What are Rich Results?

Rich results in Google are search results that go beyond the standard 10 blue links. They stem from structured data and are listed within the Search Gallery.


Subscribe to my Newsletter


The way rich results are officially defined by Google is:

Rich results are experiences on Google surfaces, such as Search, that go beyond the standard blue link. Rich results can include carousels, images, or other non-textual elements.

Source: Rich results testing tool

For example, Google For Jobs, Flights, Knowledge Panel, Hotels, Reviews and a lot more SERP features have come into the market. However, they are not “officially” all named “rich results”.

For the sake of this article, I will go beyond the rich results as they are officially defined and talk about any SERP enrichment that go beyond the regular 10 blue links.

The new anatomy of the SERP

How to get FAQ Snippets

FAQ Rich Results have been launched post-Google I/O 2019 and they are simply amazing.

You can go nuts and add content, but also links and emojis in them.

This might help increase CTR and SERP visibility. (see comment below)

Add FAQ Structured Data for SEO
Add FAQ Structured Data for SEO

Update: Google now shows only 2 results

Google now has a filter to limit the number of FAQ results to 2 per web page.

Microformat Example

Here is a code snippet you can use to add the structured data inline in your HTML. You can see the code by going to my original blog post on Python SEO.

<div class="faq-list" itemscope="" itemtype="https://schema.org/FAQPage">
    <div class="faq-list__question" itemscope="" itemprop="mainEntity" itemtype="https://schema.org/Question">
        <h3 class="faq-list__title" itemprop="name">
            <span class="faq-list__title__text">How to Learn Python for SEO?</span>
        </h3>
    </div>
    <div class="faq-list__answer" itemscope="" itemprop="acceptedAnswer" itemtype="https://schema.org/Answer">
        <div class="faq-list_answer__content" itemprop="text">
            To learn Python for SEO, learn <a href="https://www.jcchouinard.com/learn-python/">Python basics</a>.
        </div>
    </div>
    <div class="faq-list__question" itemscope="" itemprop="mainEntity" itemtype="https://schema.org/Question">
             <!-- ... add all the questions you want -->
    </div>
</div>

Side note.

I have seen a lot of websites replicating the emojis in the structured data after Loren Baker talked about it.

After a while, the emojis started to disappear from Search results. Whether Google removed them on purpose, or simply that the user interactions were lower on results with emojis, the fact is, they are gone (at least on my site).

How to modify Google’s Sitelinks

Sitelinks are links to pages of your website that are different from the main page that is ranking in the SERPs.

According to Google official documentation, what you need is a good internal linking structure and relevant alt attribute.

Sitelinks example 2
Sitelinks example 2

This is why you want to be careful with the anchor text you use on internal links.

Sitelinks Fail
Sitelinks Fail

How to add a sitelink Search Box

If you have a search engine on your website, the Sitelinks Search Box rich result is super easy to implement using JSON LD.

All you need to do is to add a WebSite markup to each page.

<html>
  <head>
    <title>The title of the page</title>
    <script type="application/ld+json">
    {
    "@context":"http://schema.org",
    "@type":"WebSite",
    "url":"https://www.seek.com.au",
    "potentialAction":{
        "@type":"SearchAction",
        "target":"https://www.seek.com.au/{search_term_string}-jobs",
        "query-input":"required name=search_term_string"
        }
    }
    </script>
  </head>
  <body>
  </body>
</html>

Answers (Q&A) Rich Results

Q&A Rich Snippet is fantastic.

Answers Example
Answers Example 1
Answers Example 2

How to rank in Google For Job – Job Postings Snippets

Why not talk about Google For Jobs?

To be in it, you need to implement JobPosting structured data.

Is it worth it?

If you are a small player. Definitely. You will easily rank where you would never have a chance otherwise!

As for bigger organisations, I will let you the fun of tracking revenue wins and loss linked to Google For Jobs arrival.

Some recommendations.

  • Make sure that the logo is a standard format (1:1, 2:3, 3:4) in png or jpg;
  • Make sure the address fits what you find in Google Maps;
  • Don’t use the unit, suite, or cp number in the address;
  • Connect to the indexing API to update results in real-time;
  • Beware of the content you send with the indexing API, might take all your crawl budget;
  • Use the Structured data preview tool to test your ads. (deprecated, replace with rich result testing tool)

Here is a well-structured template to use.

<html>
  <head>
    <title>The title of the page</title>
    <script type="application/ld+json">
        {
            "@context":"http://schema.org",
            "@type":"JobPosting",
            "url":"https://example.com/structured-data-expert",
            "industry":"Search Engine Optimization",
            "salaryCurrency":"CAD",
            "title":"Structured Data Expert",
            "description":"Best Freaking Job Ever",
            "employmentType":"FULL_TIME",
            "jobBenefits":"<ul><li>Unlimited Fame</li><li>Endless praise from your parents</li><li>Admiration of your friends</li></ul>",
            "skills":"<p>As you can see...<br> you can use HTML to format your job posting in the Structured Data</p>",
            "educationRequirements":" 2 years certification from the International Google SEO Academy",
            "experienceRequirements":" 15 years ",
            "validThrough":"2020-06-25",
            "datePosted":"2020-05-27",
            "image":"https://example.com/Google/logo.jpg",
            "hiringOrganization":
                {
                    "@type":"Organization",
                    "url":"https://example.com/Google",
                    "legalName":"Employer A",
                    "name":"Employer A",
                    "logo":"https://example.com/Google/logo.jpg"
                },  
            "jobLocation":
                {
                    "@type":"Place",
                    "address":
                    {
                        "type":"PostalAddress",
                        "postalCode":"94043",
                        "streetAddress":"1600 Amphitheatre Pkwy",
                        "addressLocality":"Mountain View",
                        "addressRegion":"CA",
                        "addressCountry":"US"
                    },
                    "geo":
                    {
                        "@type":"GeoCoordinates",
                        "latitude":37.4219999,
                        "longitude":-122.0840575
                    },
                    "url":"https://www.google.com/maps/place/Googleplex/@37.4219999,-122.0840575,15z/data=!4m5!3m4!1s0x0:0x6c296c66619367e0!8m2!3d37.4219999!4d-122.0840575"
                },
            "baseSalary": {
                "@type": "MonetaryAmount",
                "currency": "USD",
                "value": {
                "@type": "QuantitativeValue",
                "value": 40.00,
                "unitText": "HOUR"
                }
            }
        }
    </script>
  </head>
  <body>
  </body>
</html>


How to Show Star Rating in Google? Ratings Structured Data

The Review Snippet is easy to implement.

All you need is to have real user-generated reviews on your website and add the structured data.

<html>
  <head>
    <title>The title of the page</title>
    <script type="application/ld+json">
    {
        "@context": "https://schema.org/",
        "@type": "CreativeWorkSeries",
        "name": "Understand Google Tag Manager Data Layers",
        "aggregateRating": {
            "@type": "AggregateRating",
            "ratingValue": "5",
            "bestRating": "5",
            "ratingCount": "1"
        }
    }
    </script>
  </head>
  <body>
  </body>
</html>

If you just want to add structured data reviews for each of your blog posts, there are a bunch of free WordPress plugins like kk Star Ratings to help you with that.

How-to Rich Results

How-to rich results are cool because they allow you to have image “carrousels” on mobile.


You can view how I implemented this using microdata by looking at the HTML of my dummy blog post whose only value is to showcase structured data: how to become a SEO Analyst. Alternatively, Google’s documentation is well built to allow you to implement FAQ structured data.

<html>
  <head>
    <title>How to tie a tie</title>
    <script type="application/ld+json">
    {
      "@context": "https://schema.org",
      "@type": "HowTo",
      "image": {
        "@type": "ImageObject",
        "url": "https://example.com/1x1/photo.jpg"
      },
      "name": "How to tie a tie",
      "totalTime": "PT2M",
      "video": {
        "@type": "VideoObject",
        "name": "Tie a Tie",
        "description": "How to tie a four-in-hand knot.",
        "thumbnailUrl": "https://example.com/photos/photo.jpg",
        "contentUrl": "http://www.example.com/videos/123_600x400.mp4",
        "embedUrl": "http://www.example.com/videoplayer?id=123",
        "uploadDate": "2019-01-05T08:00:00+08:00",
        "duration": "P1MT10S"
      },
      "supply": [
        {
          "@type": "HowToSupply",
          "name": "A tie"
        }, {
          "@type": "HowToSupply",
          "name": "A collared shirt"
        }
      ],
      "tool": [
        {
          "@type": "HowToTool",
          "name": "A mirror"
        }
      ],
      "step":[
        {
          "@type": "HowToStep",
          "name": "Preparations",
          "text": "Button your shirt how you'd like to wear it, then drape the tie around your neck. Make the thick end about 1/3rd longer than the short end. For formal button down shirts, it usually works best with the small end of the tie between 4th and 5th button.",
          "image": "https://example.com/1x1/step1.jpg",
          "url": "https://example.com/tie#step1"
        }, {
          "@type": "HowToStep",
          "name": "Crossing once",
          "text": "Cross the long end over the short end. This will form the basis for your knot.",
          "image": "https://example.com/1x1/step2.jpg",
          "url": "https://example.com/tie#step2"
        }, {
          "@type": "HowToStep",
          "name": "Second crossing",
          "text": "Bring the long end back under the short end, then throw it back over the top of the short end in the other direction.",
          "image": "https://example.com/1x1/step3.jpg",
          "url": "https://example.com/tie#step3"
        }, {
          "@type": "HowToStep",
          "name": "Loop in",
          "text": "Now pull the long end through the loop near your neck, forming another loop near your neck.",
          "image": "https://example.com/1x1/step4.jpg",
          "url": "https://example.com/tie#step4"
        }, {
          "@type": "HowToStep",
          "name": "Pull and tighten",
          "text": "Pull the long end through that new loop and tighten to fit!",
          "image": "https://example.com/1x1/step5.jpg",
          "url": "https://example.com/tie#step5"
        }
      ]
    }
    </script>
  </head>
  <body>
  </body>
</html>

Image Thumbnails

If you are interested by image thumbnails, I suggest that you read Brodie Clark’s coverage of image thumbnails.

Here are a few insights from his study:

  • Google will only ever show 4 results with Multi-Image Thumbnails. When there are 4 web pages showing the thumbnails, if a page qualify for the enrichment, it needs to rank higher to claim a listing.
  • Image relevance to the query, image quality, alt attribute may all impact image thumbnails
  • Having more than 8 images on page helps securing multi-image thumbnails
  • No evidence of structured data impacting multi-image thumbnails, but some example impacting single-image thumbnail
  • Should limit images with transparent backgrounds

To see if your images qualifies for image thumbnails, a simple tip is to perform site search including a query that satisfies the image query intent threshold.

site:domain + image

In the example below, I see that only one of my posts has an image that qualifies.

Site search with query that satisfies image intent

Uploaded By…

This one is about removing a search result snippet.

After uploading a YouTube Video iframe, I get the “Uploaded By” snippet showing the name of the video author, which seems to be a broken desktop snippet.

The trick is to add “data-nosnippet” to the div, span or section that you want to be removed from the SERP. This may remove the video snippet from Google Video Search. To be confirmed…

Show a Table in Google SERP

Sometimes, you will see a table showing in the SERPs like the example below.

This is not about structured data, but rather by using the <table> HTML tag. If the table is relevant to the user (or even when it is not like in my example), Google may choose to show the table specifications.

Not All Tables Will Show in SERP

Interestingly, in some cases, the table wouldn’t show.

Table will show depending on:

  • The query
  • The quality of the table
  • The rank of the page and of the table

To understand why some tables show and some don’t, the research paper “Applying WebTables in Practice” can give cues.

How Google Know What a Good Table Looks Like?

The paper tells us that Google tries to identify which tables contain useful information. For instance, often the table HTML tag is used for formatting only.

To identify “good” tables, Google trained a machine learning classifier on a set of 100s of millions of user-enhanced of tables. This model is what is used to identify if the table on you page is valid.

Hence, only general guidelines and testing can help you ensure a place of your table in the SERP.

The general description of a “good” table goes like this:

[…] should contain multiple rows, where each row corresponds to data about a particular entity in the world (e.g., a location or a movie), and the columns of the table describe attributes of the row’s entity.

Google research paper

Best practices for tables

  • Avoid empty tables or tiny tables with less than three rows and two columns (critical)
  • Forget about irrelevant tables such as calendar tables, password tables and table-of-contents (critical)
  • Prioritise tables containing entities. The ability to match table element to KG or Google Maps entities is mentioned in the paper as a highly effective signal of table quality (Important)
  • Table values should represent the same semantic class. Don’t talk about presidents, computers and vegetables in the same table.
  • Don’t add your table into a boilerplate section of the site
  • Have a low ratio of empty cell for the table
  • Have relatively similar number of character per cell (Google looks at mean/variance character per cell)
  • Use table headings (<th>) to add labels to the columns they head
  • Surround your table with relevant text and captions
  • Target the fact seeking queries inside the table
  • Have a clearly defined “subject” columns. E.g in a GDP table with countries and values by country, the “country” column will become the subject in Google’s eyes.
Example of subject and subject properties listed in “Table search using recovered semantic information”

To understand the best practices listed above, just know that the semantic and structural features that were used to train the machine learning models were:

  • Whether or not the table is inside boilerplate content
  • Label of the topic of each column in the table
  • Number of rows and columns
  • Mean/variance of the number of characters per cell
  • Fraction of non-empty cells
  • Fraction of cells that are generated using <th> tags
  • Number of distinct tokens in a table
  • Percentage of cells matched to the same KG class is one of the most important semantic feature

Finally, tables are ranked within the search system.

Google Business Profile

This is not structured data per se, but if you want to get a Knowledge Panel for your business, nothing is simpler. Submit your business to Google My Business.

Rich Results Shown Using Knowledge Graph

OK, now we’re are moving out of the scope of this post: knowledge graph. Google’s Knowledge Graph (KG) is the structured collection of information that Google knows about the world and how they are interconnected. Rich Results that come from Google’s KG are way more complex to implement.

In a nutshell, to influence Google’s knowledge graph, you need a strategy and build your way inside authoritative sources.

Here are a few investigations just for fun.

Content Navigation Bar: Lists of entities

I have not managed to make my website appear in the content navigation bar.

I tried to create Wikidata cards to try to give an entity to my website, but they were rejected. I doubt, this is an option though, I have done that in the past without success.

I also asked around people that were getting these results.

Previewing image.png

I received one answer by Neal Schaffer that was showing how these results are organic.

More than likely due to Google’s understanding of entities.

The post Ranked Entities in Search Results at Google by Bill Slawski provides an answer to when these lists of entities are shown to the user and how they are ranked.

I thought that being listed in enough websites on page 1 for the query would help my blog be shown.

But, when I looked at the top 10 search results for the query “Best SEO blogs”, I couldn’t find SEO book, nor SEO news, nor TagliaBlog listed anywhere. Not on a single of these sites were listed. To be continued…

Google’s Knowledge Panel

Google’s Knowledge Panel is shown on the right-hand side of the SERP.

There are two ways to get inside the knowledge panel:

  1. Google Business Profile (easy)
  2. Building your own knowledge Graph (long and hard)

For instance, if you want to get a knowledge panel for being a significant person (like below), it is not simple.

I would suggest you read Jason Barnard’s post on How to Get Your Brand in Google’s Knowledge Graph Without a Wikipedia Page to get an idea of how you can do that. He shares a list of trusted sources to help you get there. I don’t plan on doing all the work… sorry.

If someone has done it and written about it, send me the link, I will link it back to you.

One thing got me intrigued though 🤔…

How does Bill Slawski get the title “American author”?

Turns out you just can’t do it the way he did it anymore. Thanks, Bill for clarifying this for me.

If you want to learn more about ranking for rich results and owning your knowledge graph, you should follow:

  • Bill Slawski
  • The Brand SERP guy – Jason Barnard
  • Andrea Volpini

Additional Quick Facts on Structured Data

Debugging Rich Results

Sometimes, you add the structured data to some pages, and the rich results will not appear in Google. Common causes are structured data technical issues, policy violations, trust.

Technical Issue

In order to show the rich results, your markup must be valid. Just debug your code using the Rich Results Testing Tool. Alternatively, Schema.org have built their own schema validator.

Policy Compliance Issue

Google has a set of policies that you should follow to be shown in rich results.

Not following those policies might not only get you out of rich results but can also be translated into manual actions.

Make sure that you read the guidelines, when implementing the structured data on a page.

Trust Issue

Rich results might not be shown in Google depending on the quality of a site. If Google does not trust the domain, it might not show the results.

According to John Mueller, use the site: search operator to inspect the SERP.

If the rich results appear on the site search, but not on the query search, there might be a trust issue with your site. A good way to know if google likes your site or not.

How to Prevent Google from Showing a Snippet in the SERP

According to Google’s documentation, you can opt-out of featured snippets in one of two ways:

  1. Using the nosnippet tag
  2. Using the data-nosnippet tag

The nosnippet tag will allow you to block all snippets from being shown (regular and featured snippets). Officially, it allows to “not show a text snippet or video preview in the search results for this page”.

It can be added in the header of the page this way:

<meta name="googlebot" content="nosnippet">

Alternatively, the “data-nosnippet” HTML attributes can be applied to the “div”, “span” and “section” HTML tags to prevent Google from showing a featured snippet in the SERP.

Below is an example of the data-nosnippet tag.

<div>
    <div>Text to be shown in the featured snippets or rich results.</div>
    <div data-nosnippet>Hide this content from the featured snippets</div>
</div>

Patents Related to Rich Results

The Google related patents that I have found that may be related to enriching search results are:

There are a few insights to get from a patent named “enriching search results”:

  • Enrichment information is stored on its own database.
  • Enrichment information is refreshed more often than the Index. Thus, search results can be enriched with more up-to-date information than the one that is stored in the index.
  • Search results are enriched with information relevant to the search query. e.g. “Flights American Airlines” may trigger a list of flights, whereas “tomorrow flight aa” may trigger delays for the flights.
  • The patent mentions that Google may “register” publishers with frequently updated content so that the frequently updated sections of the content could be used for enriching results.
  • Google may query the enriched results in real-time before presenting search results

The patent also refers of featured snippets as “answer boxes”. Another patent refer to those as “OneBox”.

An answer box is a formatted presentation of a particular type of content that is relevant to the query. For example, if the query refers to weather in a particular location, a weather answer box can include a forecast of weather in the particular location

Definition of an “answer box” according to the “enriching search results” patent.

Conclusion

This is it. There are tons of other uses cases of structured data, and I will keep posting here as I work on more uses cases. Good luck with getting rich results using structured data and SEO.

4/5 - (3 votes)