What is structured data and Schema.org

María Navarro

Written by María Navarro

What is structured data?

Structured data is a series of markup elements used to describe content located on a website. This data makes it easier for search engines to know what they are going to index, and it also provides information in a highly-organised manner, much like we can find in most databases.

When we are organised, we can usually find things much more swiftly. Same thing happens with structured data: if information is structured and predictable, it will be easier for search engines to understand and classify what they are indexing, leading to semantic search, and thus making search results increasingly more precise.

Let’s look at it with a simple example: imagine we have a box full of books, unordered and with no visible titles on them, and right in front of this box we have a bookshelf with books, with the appropriate titles and coherently organised. Where is it going to be easier to find the book we are looking for? Which option is going to provide us more information at a glance? The answer is obvious, so it’s pretty clear we should always use structured data on our website, too.

What do we need for search engines to understand structured data on our website?

The only thing we need for search engines to understand this data is a vocabulary that they can easily interpret, and this is where Schema.org comes in.

What is Schema.org?

Schema.org is a Google, Bing and Yahoo! collaborative initiative launched in 2011, whose purpose was to save work for webmasters and to make data from the many search engines more universally consistent.

Schema.org is a universal markup language, which enables us to mark and enrich content we find on the Internet, contributing to the improvement of search engines’ comprehension of our pages, all of which leads to better user experience.

The markup language developed by Schema.org is composed of a set of HTML tags, which we include within our website’s code, and they are used to describe content, providing it with a rich semantic language. This language is understood, organised and displayed by search engines in their search results, something that increases our website’s visibility and, by extension, organic positioning.

Schema.org provides a hundred different semantic markup schemas, which can be used to create rich snippets. These snippets are obtained through specific microdata defined for each type of content (products, films, books, restaurants, places, events, reviews, etc.).

How to implement structured data using Schema.org?

There are various methods we can use to implement structured data: some of them use Schema.org, whilst other do not. This article is only going to explain those methods which do use it, because I don’t think it’s a good idea to use other markup methods that aren’t based on Schema.org.

Microdata and RDFa method

Here’s a clear example of HTML code without microdata, and immediately below it we have an example with the same code excerpt, only this time it is tagged with Local Business microdata:

Code excerpt without microdata

<p><strong>CONTACT US</strong></p>
<li style=”font-size:16px;”>
<span>Centro Manuel Escudero</span>
<div>C/Ferraz, nº31 – 1ºA</div>
<span>Madrid </span>
<span>915 422 859</span>
<span>915 473 186</span>
<a href=”mailto:informacion@manuelescudero.com”> informacion@manuelescudero.com</a>

Code excerpt using Schema.org markup

<p><strong>CONTACT US</strong></p>
<li style=”font-size:16px;” itemscope itemtype=”http://schema.org/LocalBusiness”>
<span itemprop=”name”> Centro Manuel Escudero</span>

<div itemprop=”address” itemscope itemtype=”http://schema.org/PostalAddress”>
<div itemprop=”streetAddress”>C/Ferraz, nº31 – 1ºA</div>
<span itemprop=”postalCode”>28008</span>
<span itemprop=”addressLocality”>Madrid</span>
<span itemprop=”addressCountry”>Spain</span>
<span itemprop=”telephone” class=”paint-accent-color”>915 422 859</span>
<span itemprop=”telephone”>915 473 186</span>
<a itemprop=”email” class=”paint-accent-color” href=”mailto:informacion@manuelescudero.com”> informacion@manuelescudero.com</a><br/>
<meta content=”https://www.manuelescudero.com/wp-content/uploads/2017/02/logo-manuel-escudero.jpg” itemprop=”image”>

This code indicates that we’re using Local Business schema, and it includes: name of the business, postal address, and contact information.

Tags used in bold font:

  • Itemscope – indicates that we’re talking about something (an item) within the <li> block.
  • Itemtype – indicates that this “something” –in this particular example– is a local business with an address.
  • Itemprop – indicates its characteristics (name, street, image, telephone number…)

JSON-LD method

We’re going to use the same example, but this time using JSON-LD method (JavaScript Object Notation for Linked Data), or, in other words, a standardised system to indicate relationships between data using JSON objects.

Structured data code excerpt using JSON-LD

<script type=”application/ld+json”>
“@context”: “http://schema.org”,
“@type”: “LocalBusiness”,
“image”: “https://www.manuelescudero.com/wp-content/uploads/2017/02/logo-manuel-escudero.jpg”,
“name”: “Centro Manuel Escudero”,
“address”: {
“@type”: “PostalAddress”,
“streetAddress”: “C/Ferraz, nº31 – 1ºA”,
“addressLocality”: “Madrid”,
“addressRegion”: “NY”,
“postalCode”: “28008”,
“addressCountry”: “Spain”
“url”: “https://www.manuelescudero.com/contacto”,
“telephone”: “915 422 859”,
“telephone”: “915 473 186”,
“email”: “informacion@manuelescudero.com”


This method is easier to implement, but it has one disadvantage. If we need to tag a lot of data on our website, JSON-LD forces you to repeat the content that is going to be tagged, which will make our content grow, eventually slowing down our download speed.

It’s also important to mention that Google and Bing do not yet support JSON-LD in all types of data.

Even though Google currently recommends JSON-LD markup (without understanding it 100%), I’m always more inclined to use microdata.

Structured data markup with Google Search Console

Another way of implementing structured data, which will probably be particularly useful to those whose coding knowledge is lacking, is with Google Search Console.

Here’s a little guide on how to implement structured data using GSC:

1. Go to the Google Search Console property of the website on which you want to implement structured data.

2. On the left sidebar, click on “Search Appearance” and then “Data Highlighter”.

Structured data in Google Search Console

3. At the bottom of this page there’s a button saying “Start Highlighting“. Click on it.

Structured data markup in GSC

4. A pop-up window will appear, where we will be able to enter:

URL markup in GSC

  • URL address where we want to implement structured data.
  • Choose what type of information you want to tag.

Information markup in GSC

  • Choose if you only want to tag this page, or you also want to do it with other similar ones. For example, if you are tagging products of an online store, it’s better to select “Tag this page and others like it”, than going one by one, as it would save you a considerable amount of time. If you only wish to tag information of a local business, then select “Tag just this page” and you’re good to go.
  • Once you’ve finished, hit “OK”.

5. If we’ve selected “Tag just this page”

A new window will open to start with the tagging process. We are going to select with our cursor the elements we want to tag, one by one, and a drop-down menu will appear, where we will have to indicate the type of element (name, address, telephone number…). On the right sidebar we’ll see data that we’re tagging.

In the following example we have selected the address, and in the drop-down menu we’re going to hit “Address”, to indicate that it’s our local business’ location.

Tagging an address with GSC

6. If we’ve selected “Tag this page and others like it”

Here is pretty much the same as in the previous example. The only difference is that this time, in the highlighting tool page, there will appear a progress bar of sorts, at the very top. Once again, we will select all the information we want to tag and hit “Publish”.

Progress bar at the top of data highlighting page in GSC

Once it’s done, a pop-up window will appear, where we will have to select pages that are going to use the same microdata. You will see two options: in the first one, Google automatically detects similar pages.

Tagging similar pages in GSC

The second one allows us to manually enter the directory, on which we want to use the same tags.

Schema.org markup for similar pages in GSC

Choose whichever option suits you best, and then click “Create page set”.

To make sure our selection is correct, Google will show us a series of page examples, which we should verify manually.

7. After we finished tagging all necessary data and we’re done with the process, we will click on “Publish”, in the top right corner.

8. Once published, we can proceed to tag other pages, or to edit the existing ones.

How can I check that my structured data markup is correct?

Structured data’s syntax is complex and we might make some mistakes during the tagging process. To ensure that everything is correctly implemented, Google provides a structured data testing tool, for both microdata and JSON-LD implementations.

This structured data testing tool enables us to check and modify our markup code in several different ways to see whether it is correct.

It’s also very easy to use:

  1. Enter the URL or a code snippet.
  2. Click on “Run test” and it will analyse structured data of the requested URL or code snippet, depending on the option we’ve chosen.

In the following screen capture we show you the information provided by this tool after it has analysed our microdata. The code we used for this analysis is the same example we’ve been using throughout this post.

Running a structured data test

On the left we see the code excerpt that we’ve entered using a URL. You can edit it. On the right, we see the results of the test. In our case, there are 0 errors and 1 warning. The warning recommends adding a price range for the business’ services. In our case, we’ve decided not to.

You must keep in mind that if there is one or several errors in the code, the implementation will be completely useless.

Incorrect use of Schema.org

As the saying goes, every law has its loophole. In the SEO industry there are also inappropriate tactics that may work or may have worked at some point, but using them puts us at risk of receiving a Google penalty.

Schema.org, as we’ve previously stated, was created to be a great segmentation tool for the purpose of improving information organisation and results. However, some people have turned it into a means to obtain better rankings through questionable techniques, and as per usual, Google goes out on the hunt to catch and penalise them.

Keep in mind that any attempt of manipulation with fraudulent, irrelevant or invisible content can result in a penalty.

Additional resources

If you need more information on structured data markup for Google and other search engines, you can visit:

María Navarro
Autor: María Navarro
Search Marketing consultant and web developer at Human Level.

Leave a comment

Your email address will not be published. Required fields are marked *