SCHEMA.ORG – Structured Data – Basic Markup

WebSite - Help Dictionary:

The main purpose of SCHEMA.ORG is to create a universal vocabulary that will structure the individual elements of a web site and give them semantic meaning in a way that can be recognized by search engines such as Google, Bing and Yandex. Thus, structured data may have a diverse and individual purpose, depending on how exactly it is tagged, what are the purposes of the website and its owner.

Accordingly, search engines can group together and better index the elements of the site so that they can be submitted exactly as results to one or another search. For example, if a user searches for a vocabulary, does not get one in another language, or a glossary describing the terms in heart surgery. The goal is to index items so that they are recognizable as products, movie premieres, addresses, or many other variants that can be used by one or another Internet application. Sometimes, depending on the purpose, one or another recording pattern may be more convenient or even mandatory, so it is good to get to know the site administrator with these types of markup: RDFa. Microdata and JSON-LD.

It then follows when such an administrator has to decide exactly which items he wants to tag on his site for the search engines and what purpose these markers want to achieve.
When creating such markings, two important factors – types of tagged data and the hierarchy of the marking – must be considered:

  1. The type of data serves to structure the submitted data in a certain way so that the search engines can understand exactly what is described. For example, if the highlighted attribute is a name or a description, the type is most likely a text and almost any type of record will be acceptable. However, if the attribute is a URL, then the value of the tagged item must be an Internet address. If it is not, this mark will be marked as invalid. The result can be verified with a single structural page test. This type of data may and is often another mark (if we have one product, then we would like to mark its price as an offer, which is a separate label with its own characteristics).
  2. The individual pages we mark often consist of many elements that often consist of other elements that characterize themselves, and they themselves may consist of a third type of elements with their markings. Markings describing markings describe markings and form the data hierarchy on the site. Basically, it should be retained that more internal markings describe part of the contents and define their characteristics. If this does not apply to an object on your site, it must either be taken out of the hierarchical structure or included in the description that it is an exception.

WebSite – Help Dictionary:

WebSite is a list of pages or a complete site and its individual elements relevant to the current topic. Can index the currently viewed site or link a site to another one or a separate item – search engine, playlist, video …

Example from our site:


The result is exported from the Structured Data Testing tool using the Google SDTT {Structure Data Testing Tool}.

The current JSON script is:

<script type='application/ld+json'>
"name":"SEO Агенция Serpact™",
"alternateName":"SEO Агенция Serpact™",
"potentialAction":{"@type":"SearchAction","target":"https:\/\/\/?s={search_term_string}","query-input":"required name=search_term_string"}}

In our case, it generates automatically from WORDPRESS and, depending on the topic you use, can be generated for other sites you want to tag. As you can see, we will identify the name, url of the site, a possible alternative name, and the element and action of our internal site search engine.

WebPage – Help Dictionary:

Web page. Specifies explicitly a page and its elements. By default, search engines assume that any part of the content of the page you are viewing is part of it, so if the footer element, for example, is outside the block covered by WebPage, they will still understand that it is part of it. It is used to explicitly describe individual elements of it, for example if you want “Title” to be different from the one shown on the screen (not enough space, different design requirements or other reasons). This is the way to tag that marking.

Example with JSON:

<script type = "application / ld + json">
"@context": "", 
"@type": "WebPage",
"name": "SEO Agency Serpact",
"description": "SEO Agency Serpact | Leader in Search Engine Optimization"


An example of RDFa would be:

<body vocab = "" typeof = "WebPage">
<h1 property = "name"> SEO Agency Serpac </ h1>
<p property = "description"> SEO Agency Serpact | Leader in Search Engine Optimization </ p>
</ body>

or for Microdata:

<body itemscope = "" itemtype = "">
<h1 itemprop = "name"> SEO Agency Serpac </ h1>
<p itemprop = "description"> Serpact SEO Agency Leader in Search Engine Optimization </ p>
</ body>

Often different SEO applications to individual systems (like YOAST for WORDPRESS) use similar markup to edit important items. Another time you can see them embedded in the visual themes used.

WebPageElement – Help Dictionary:

Means the individual elements of a separate page – images, video files, table, or whole blocks – to which we want search engines to have special meaning, indexing a value that is not otherwise displayed, or just rewriting a value for them. A typical example would be WPHeader or WPFooter markings (WebPageElement varieties), which we could tag an individual headline title or copy a Footer item, as well as anything else contained in them.

Example with JSON:

<script type = "application / ld + json">
"@context": "",
"@type": "WPHeader",
"headline": "Who defeats - content or link?" News "Serpact ™",
"description": "Unfortunately, the question of what is more important is the content or link not exactly the answer?" Links and content go hand in hand, but why?
</ script>

SiteNavigationElement – Help Dictionary:

Specifies navigation elements on your site (for example, menus). It helps search engines crawl the site.


Microdata Marking:

<nav id = "div_header_menu" class = "menu_wrapper relative solid-inherit" itemscope itemtype = "">

Microdata and RDFa are the easiest options for adding this type of tagging. You can add additional marking to individual elements, even if you add itemprop = “position” you can create a kind of hierarchy, but the search engines are clever enough to understand the link structure correctly described by the element.

BreadcrumbList – Help Dictionary:

A navigation element variant usually serves to create a sheet of page addresses to display the “path” of crush pages that can be accessed from the main page of the site to the current page view. The effect of this mark can be traced directly to a Google search:


Example RDFa Marking:

<ul id = “breadcrumbs” class = “breadcrumbs” vocab = “” typeof = “BreadcrumbList”>
<property = “itemListElement” typeof = “ListItem” class = “item-home”> <meta property = “position” content = “1” link bread-home “> <span property =” name “> Home </ span> </a> </ li>
<property = “itemListElement” typeof = “ListItem” class = “item-cat”> <a property = “item” typeof = “WebPage” href = //”><span property = “name”> News </ span> </a> </ li>
<li property = “itemListElement” typeof = “ListItem” class = “item-current item-16206”> <strong property = “bread-current bread” -16206 “title =” Who defeats the content or the link? “> Who defeats the content or the link? </ Strong> </ li>
</ ul>

for Microdata Marking:

<ul id = “breadcrumbs” class = “breadcrumbs” itemscope itemtype = “”>
<li itemprop = “itemListElement” itemscope itemtype = “” class = “item-home”> <meta itemprop = “position” content = “1”> <a itemprop = itemtype = “” class = “bread-link bread-home” href = “” title = “Home”> <span itemprop = “name” / span> </a> </ li>
<li itemprop = “itemListElement” itemscope itemtype = “” <meta itemprop = “position” content = “2”> <a itemprop = “item” itemtype = “”

href = “”> <span itemprop = “name”> News </ span> </a> </ li>
<li itemprop = “itemListElement” itemscope itemtype = “”> <strong itemprop = “<meta itemprop =” position “content =” 3 ” “Who defeats the content or the link?”> Who defeats the content or the link? </ strong> </ li>
</ ul>

In this case, the Breadcrumb mark is displayed for one of our publications and the URL path that one user would access when navigating through a browser – Main Page> News> Who Wins …. It can be noted the consecutive listing of individual URLs and WebPage tagging them in a contextual sheet understandable by Google, as well as their position in it (via “position” if it is necessary to specify or if the site design requires the elements to be displayed in a different order, otherwise the search engine indexes the sequence according to ordering of elements in the HTML code).
It is also worth noting the mark, which is a simpler version of BreadcrumbList. Used by Yoast.

Organization – Help Dictionary:

Creates a mark of an organization – a company, a school, a club, a corporation, an agency, etc. It gives basic data that indexes it in search engines: name, logo, address, phone, email, internet address, social networking pages, founder, goals, members and many others that the marker wants to be published and visible.


Example of implementing this JSON mark:

<script type = 'application / ld + json'> {"@ context": "http: \ / \ /"
"@type": "Organization",
"url": "http: \ / \ / \ / koy-pobezhdava-sydyrzhanieto-ili-line \",
"sameAs": ["https: \ / \ / \ / Serpact-1690639484486081 \", "https: \ / \ / \ / company \ / serpact"
"https: \ / \ / \ / u \ / 0 \ / + SerpactBg \ / posts"
"https: \ / \ / \ / channel \ / UC4zZj6YPC5yU4bkH6OOO-aQ"
"https: \ / \ / \ / serpact \",
"https: \ / \ / \ / serpact"],
"@id": "# organization"
"name": "SEO Agency Serpact ™",
"logo": "http: \ / \ / \ / wp-content \ / uploads \ / 2016 \ / 03 \ /serpact-small.png"}
</ script>

In this case, Organization Markup uses a JSON script. JSON is particularly suitable for this type of tagging because of the comparative simplicity of the script when the structured data is not variable. For simple marking, you can use YOAST again if your site is built on WORDPRESS. For a more complex and specific markup you would have to enter it manually.

LocalBusiness – Help Dictionary:

One of the more important markings, especially when the site presents a local business or business is done through the site electronically. Represents the structured data for a distinct physical entity performing a business or local branch of such an organization (a shop, a restaurant, a local branch of a restaurant chain, a warehouse, a bank branch, and many others. Virtually every local business can get such a mark and it is taken into account when submitting search engine responses to any such targeted search, especially when they find that the search engine and the business have a compatible location.


The parameters that define a Local Business are numerous. They are often also rarely changed, so JSON is suitable for this type of marking.

Example JSON:

<script type = "application / ld + json">
"@context": "",
"@type": "LocalBusiness",
"address": {
"@type": "PostalAddress",
"addressLocality": "Svilengrad",
"addressRegion": "BG",
"postalCode": "6500";
"streetAddress": "7, D. Blagoev St."
"telephone": "+359 885-014-972"

"email": "",
"url": "",
"sameAs": ["", ""],
"description": "SEO Agency Serpact makes its clients profitable, selling and popular! We are competent in SEO optimization, On-Page / Off-Page SEO and PPC.",
"name": "SEO Agency Serpact",
"alternateName": "Serpact",
"legal name": "Serpact Ltd."
"branchCode": "Serpact BG",
"taxID": "202477340",
"openingHours": "Monday-Friday 8: 00-17: 00",
"priceRange": "1000-2600 BGN",
"geo": {
"@type": "GeoCoordinates",
"latitude": "41.7676176",
"longitude": "26.202593"
"hasMap": ",26.2004043,17z/data=! 3m1! 4b1! 4m5! 3m4! 1s0x0: 0x4df134a68b714c27! 8m2! 3d41.7676176! 4d26 .202593 ",
"logo": "",
"image": ""
"award": "",
"contactPoint": [
"@type": "ContactPoint",
"contactType": "customer service",
"telephone": "+359 885-014-972",
"email": "",
"productSupported": "SEO Optimization, SEO Analysis"
"currenciesAccepted": "BGN, GBP, USD, EUR",
"paymentAccepted": "Banking",
"founder": [{"@type": "Person"
"name": "Nikola Minkov",
"nationality": "Bulgarian";
"jobTitle": "CEO",
"gender": "male"
"sameAs": ["", ""]]],
"founding date": "2012",
"foundingLocation": "Dimitrovgrad"
</ script>

The correct LocalBusiness markup has an effect on getting a similar result in a search:


LocalBusiness – Variations:

Because of the many different types of business that can be developed, this mark exists in a variety of variations describing particular features of a business type that are not applicable to another business (such as Store, Dentist, Hotel, Restaurant …).Because of this, many of these types of businesses have their own markup that inherits many of the features of LocalBusiness, but also adds attributes specific to them. If they are tagged with such a specific tag, search engines index the sites accordingly and add them to their respective directories so they can respond to searches for specific categories – when searching for a hotel or a place to stay in a particular area. The search engines will know that the site complies with these specific conditions and will submit it as a response, for example.
As we used “Hotel” for example, let’s describe how it works.

Help Dictionary:

<script type="application/ld+json">
"@context": "",
"@type": "Hotel",

Because it is a variety of LocalBusiness, this marker uses many of the attributes described above, but it also has some hotel-specific features, for example:

"availableLanguage": "Bulgarian, English",
"checkinTime": "12:00",
"checkoutTime": "10:00",
"petsAllowed": "Yes",
"starRating": "4.6",

In this case, the attributes described above describe languages ​​that you can understand at the hotel, time of check in and check out, whether pets are allowed, and how the hotel is rated. All these attributes are hotel-specific and meet as criteria for a possible correct search.
Such markings are, for example, and They, as well as “Hotel”, have their own properties. Others, such as ExerciseGym, Store, PetStore and CafeOrCoffeeShop, are standard varieties of LocalBusiness and have no such additions. However, the difference in @type tagging is enough to get search engines to differentiate their type of activity.

Product – Help Dictionary:

Introducing a particular business would have little effect if products such as computers, clothes, toys, event tickets and many others were not presented. Structured data of this type of item when it is desired to be indexed as a product type is done with this mark. Example:


This sample mark describes a laptop sold in iZone. Because a business seldom sells only one product, data submitted on the site and structured data, respectively, are dynamic, making JSON marking uncomfortable. Microdata and RDFa are better choices in this case. For this reason, most e-commerce platforms have the markings embedded in their code. The above example uses Woocommerce to generate its product pages and Microdata, which marks the individual elements of the structured date. Here’s a part of the HTML code responsible for this:
Microdata Marking:

<div itemscope itemtype="" id="product-8077" class="post-8077 product type-product .... product-type-simple"> ...
<a href="https://_____/wp-content/uploads/2017/01/DSC_0443.jpg" itemprop="image" class="woocommerce-main-image zoom" id="woocommerce-product-main-image" title="" data-rel="prettyPhoto[product-gallery]">....</a>
<div itemprop=“offers“ itemscope=““ itemtype=““> <p class=“price“><span class=“woocommerce-Price-amount amount“>229<span class=“woocommerce-Price-currencySymbol“>лв.</span></span></p> <meta itemprop=“price“ content=“229″ /> <meta itemprop=“priceCurrency“ content=“BGN“ /> <link itemprop=“availability“ href=““ /> </div>
.<h1 itemprop = "name" class = "product_title entry-title"> HP EliteBook 6930p </ h1> <div class = "woocommerce-product-rating" itemprop =

"aggregateRating" itemscope itemtype = " / AggregateRating "> <div class =" star-rating "title =" Estimated 5 of 5 "> <span> .…
<span> <span> HP EliteBook 6930p </ span> </ span> </ span> <span class = "woocommerce-reviews" h2> <ol class = "commentlist"> <li itemprop = "review" itemscope itemtype = "" class = "comment byuser comment-author-admin bypostauthor even thread-even depth-1" id = "li-comment-725"> <div id = "comment-725" class = "comment_container"> <img src = "data- lazy-type = "image" data-lazy-src = 'https: // s = 60 & r = g' data-lazy-srcset = 'https: // / avatar / e2e03b077635d19e59f71f9ebd5e73e2? s = 120 & amp; r = g 2x 'class =' ​​lazy lazy-hidden avatar avatar-60 photo 'height =' 60 'width = '60' 'srcset =' https: //secure.grava;r=g 2x 'class =' ​​avatar avatar-60 photo 'height =' 60 'width =' 60 '/> </ noscript> <div class = "comment-text "> <Div itemprop =" reviewRating "itemscope itemtype =" "class =" star-rating "title =" Estimated 5 out of 5 "

Product has many different attributes, but in our example we only present the main – name, description, image and address. Note the subdivision attributes – bid, review, and aggregatRating. These elements reflect standard data structures that are suitable for use in other situations, and therefore have their own markup: – an offer to perform some activity


In this case, this is a sale and a product price, currency and whether it is available. Other attributes are also available to describe it – offer validity period, delivery method, warranty, and more. – A review or review of an object


Mark a published review or review of an object. The content of the review, who performs it, and how the site is evaluated is basically marked. If the tagged element is not part of an item’s data structure, a review may be required to indicate explicitly what it is doing with tagging an itemReviewed item. – Average rating based on multiple ratings


Rating given to the tagged item (product, service, book, event). It is often marked with asterisks in the search results. The main attributes are the number of reviews and the number of ratings and itemReviewed, respectively, if the mark is not part of a larger rated item that is rated.
AggregateRating is an extension and accepts values ​​marked by – a single estimate. The main parameters are the best score, the worst, the current and who gives the rating in question. It is possible to specify exactly which aspect of the evaluated object is placed in the rating in question.

Offer, Review, and AggregateRating are convenient and frequently used markings that can feature features of other types of structural data such as Service, Event, Book, Movie, and more.

Service – Help Dictionary:

A mark describing services offered by a particular organization or business (from the site). For example: printing services, taxis, transport services, supplies and more. An example of the Serpact site, minimum data:


JSON Marking:

<script type = "application / ld + json">
{"@context": "",
"@type": "Service",
"description": "We at Serpact SEO Agency offer an individual approach to each SEO optimization client, we are competent, we have experience and we achieve results.",
"url": "",
"serviceType": "SEO",
"offers": {
"@type": "Offer",
"priceCurrency": "BGN", "price": "1000"}
} </ script>

The JSON mark is appropriate if several fixed services are available whose parameters are rarely changed. For more services or services that are more likely to change or exist in several variants, it is more appropriate to use Microdata or RDFa, and the marking in question is added through the data submission code. The above example in these formats:
Microdata Marking:

<div itemscope itemtype = "">
<span = "ServiceType"> SEO </ span>
<p itemprop = "description"> We at Serpact SEO Agency offer an individual approach to each SEO optimization client. We are competent, we have experience and achieve results. </ P>
<a itemprop="url" href=""> </a>
<div itemprop = "offers" itemscope itemtype = "">
<span> </ span> <span> <span> <span> <span> </ span>
<meta itemprop = "priceCurrency" content = "BGN">
</ div> </ div>

RDFa Marking:

<div vocab = "" typeof = "Service">
<span property = "serviceType"> SEO </ span>
<p property = "description"> We at Serpact SEO Agency offer an individual approach to each customer for SEO optimization. We are competent, we have experience and achieve results. </ P>
<a properties="url" href=""> </a>
<div property = "offers" typeof = "Offer">
<span property = "name"> SEO PACKAGE Start </ span> - <span property = "price"> 1000 </ span> lv
<meta property = "priceCurrency" content = "BGN">
</ div> </ div>

Event – Help Dictionary:

Event marking – wedding, meeting, concert, premiere cinema, opening a gallery and more. For recurring events, they can be marked as separate Event objects – for example, when celebrating the various screenings in the one-week program of a movie. Some apps can use data tagged in this way, for example, to add selected event to the user’s program or calendar. It should be noted that Event can carry as well Service and Product ratings, reviews and offers when, for example, it is desired to mark the price of, for example, the ticket of the marked concert or movie screening.
Event is a complex, simplified structure that is the basis of the markings of more specific types of events, for example:

  • BusinessEvent
  • ChildrensEvent
  • EducationEvent
  • ExhibitionEvent
  • and others.

There is also a more complex Event Event structure – EventSeries – which describes a series of events that have a common theme or unifying features.

Article – Help Dictionary:

Article – indicates that the content of this item is a type of article. This mark covers all kinds of articles – news, articles from magazines and more. Example:


JSON tagging the Serpact sample article:

<script type = "application / ld + json">
{"@context": "",
"@type": "Article"
"mainEntityOfPage": {
"@type": "WebPage",
"url": ""},
"headline": "Who defeats the content or link?",
"image": {
"@type": "ImageObject",
"url": ""
"height": "57";
"width": "160"},
"datePublished": "2017-08-22 10:04:09"
"dateModified": "2017-08-22 10:04:09"
"author": {
"@type": "Person",
"name": "Nikola Minkov"},
{"@type": "Organization"
"name": "Serpact",
"logo": {
"@type": "ImageObject",
"url": ""
"height": "57";
"width": "160"}},
"Description": "Who will disappear first? Over what to focus more -link building and content marketing? There is a forecast that the links will completely lose its meaning because Google pays more attention to the content ...."}
</ script>

Because a site usually rarely contains just one article, the platforms that output this type of content make it as a collection of dynamic data. Marking can therefore be made even more difficult by JSON, and the content of individual attributes is added through variables in the script. It is also appropriate to tag it with Microdata or RDF, and the corresponding tags are imported directly into HTML when the individual elements of the article are displayed. For example:

Microdata tagging

<div itemscope itemtype = "">
<div itemprop = "mainEntityOfPage" itemscope itemtype = "">
<meta itemprop = "url" content = "">
</ div>
<h1 itemprop = "headline"> Who defeats the content or link? </ h1>
</ div>

Attention should also be paid to the markup, Article that describes blog posts. The main difference is the presence of an additional sharedContent attribute describing element (s) or (video or image) from the page that may be shared through social networks.
There are other markings of many different types of items that can be described in one site:

  • Book Reviews
  • Movies
  • Software Applications
  • as well as many others.

Due to the huge number of different types of elements a webmaster may decide to mark, he counts them growing. There are also some markings combining markings that seek to cover types of items that do not yet have one. For example, CreativeWork ( unifies all kinds of items that would be described as creative activity – books, pictures, movies, photos, performances, and so on. Sometimes the marking of individual elements may evolve or change. Some markups drop out, become part of others, or specialize, so it’s a good idea to check if there are any errors in structured data tests.

Similar Posts