I was using structured data on on the products and I had not any error when I used it. More or less a month ago I changed structured data for JSON-LD. These change on the Goole Search console does not appear but it detect I stoped use structured data.
Here there is a real JSON-LD (is not proof) of one product:
<script type="application/ld+json">
{
"#context": "http://schema.org/",
"#type": "Product",
"name": "Cumlaude Sunlaude Cover Ip-30 10 G.",
"image": "https://farmaciaribera.es/media/catalog/product/p/l/pl_1_1_9743.jpg",
"description": "Cumlaude Sunlaude Compacto SPF 30 está indicado para la protección solar del rostro, ayuda a corregir las imperfecciones cutáneas actuando como un compacto maquillaje de alta protección solar. Está especialmente indicado para pieles con manchas (cloasma,",
"sku": "200089",
"brand": {
"#type": "Thing",
"name": "Dermofarm"
},
"aggregateRating": {
"#type": "AggregateRating",
"bestRating": 10,
"worstRating": 9,
"ratingValue": 10,
"reviewCount": 352
},
"offers": {
"#type": "Offer",
"priceCurrency": "EUR",
"availability": "http://schema.org/InStock",
"price": "21.22"
}
}
And here you can see how Tensting tool data structured detect the product without any problem.
Also I have looking for information on Stack Overflow, in this post is confirmed Google detect product rich cards.
Related
I've been trying to figure out a way to add how many likes were received to a product using structured data. Is what I have below correct? Or would the second example be more correct?
Is my usage of ["Product","InteractionCounter"] for the type correct in the first example?
I'm trying to have the google show a likes counter much like the aggregateRating property of Product.
I'm also not sure what the url in offers is supposed to point to or if it's necessary. Any ideas?
<script type="application/ld+json">
{
"#context": "https://schema.org",
"#type": ["Product","InteractionCounter"],
"name": "CC-1",
"description": "Wedding Cake",
"interactionType":{
"#type":"LikeAction",
"name": "Likes",
"description": "Likes Received"
},
"interactionService": {
"#type":"WebSite",
"url": "https://example.com/index.php?page=gallery"
},
"userInteractionCount": 55
}
</script>
OR
<script type="application/ld+json">
{
"#context": "https://schema.org",
"#type": "Product",
"name": "CC-1",
"description": "Wedding Cake",
"additionalProperty": {
"#type": "PropertyValue",
"name": "Likes",
"description": "Likes Received",
"value": 55
}
}
</script>
This is what I have right now:
<script type="application/ld+json">
{
"#context": "https://schema.org",
"#type": ["Product","InteractionCounter"],
"name": "CC-1",
"description": "Wedding Cake with bla bla bla",
"category": "Wedding Cakes",
"brand": {
"#type": "Brand",
"logo": "https://example.com/images/logo.png",
"slogan": "Cakes Are Nice"
},
"offers": {
"#type": "Offer",
"url": "https://example.com/anvil",
"priceCurrency": "CAD",
"price": "119.99"
},
"image": "https://example.com/collection/wedding_cakes/mid_def/CC-1",
"interactionType":{
"#type":"LikeAction",
"name": "Likes",
"description": "Likes Received"
},
"interactionService": {
"#type":"WebSite",
"url": "https://mimozas.com/index.php?page=gallery"
},
"userInteractionCount": "55 PLACEHOLDER"
}
If the product is the subject of content, then it makes sense to indicate likes as part of the type Product. My suggestion for you:
{"#context":"https://schema.org",
"#type":"Product",
"name":"CC-1",
"description":"Wedding Cake",
"subjectOf":{
"#type": "InteractionCounter",
"interactionType":{
"#type":"LikeAction",
"name":"Likes",
"description":"Likes Received"
},
"interactionService":{
"#type":"WebSite",
"url":"https://example.com/index.php?page=gallery"
},
"userInteractionCount":"55"
}
}
And be careful about inverted commas.
My addition after expanding the question.
I'm trying to have the google show a likes counter much like the
aggregateRating property of Product.
Google has no direct support for the type InteractionCounter - read more Explore the search gallery. However, in the rich test results of my suggestion, there are no errors or warning messages from Google:
Probably needs experimentation.
I administer an educational site that includes a calendar of global events, but these are not "Events" in the sense that Schema.org's Event type considers them – they don't have a location, and they are observed across a wide area (e.g. a country, an continent, or worldwide). They are more like global anniversaries, occasions or observances. Examples include Earth Day, Chinese New Year, World Book Day, International Women's Day and so on.
In our initial attempt at introducing microdata for these calendar pages, I have used the Event type, but I'm aware that as many – or most – of these events don't have a definable location (in the sense that Schema.org represents a location), and are not "attended" in a physical or digital sense, they cannot be valid.
Is there a more appropriate type in the Schema.org vocabulary that I should use in this case? Is it inappropriate to try to represent them in Schema.org microdata at all?
Maybe Google's guide for an online event can help you, including an example:
<html>
<head>
<title>The Adventures of Kira and Morrison</title>
<script type="application/ld+json">
{
"#context": "https://schema.org",
"#type": "Event",
"name": "The Adventures of Kira and Morrison",
"startDate": "2025-07-21T19:00:00-05:00",
"endDate": "2025-07-21T23:00-05:00",
"eventStatus": "https://schema.org/EventScheduled",
"eventAttendanceMode": "https://schema.org/OnlineEventAttendanceMode",
"location": {
"#type": "VirtualLocation",
"url": "https://operaonline.stream5.com/"
},
"image": [
"https://example.com/photos/1x1/photo.jpg",
"https://example.com/photos/4x3/photo.jpg",
"https://example.com/photos/16x9/photo.jpg"
],
"description": "The Adventures of Kira and Morrison is coming to Snickertown in a can't miss performance.",
"offers": {
"#type": "Offer",
"url": "https://www.example.com/event_offer/12345_201803180430",
"price": "30",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"validFrom": "2024-05-21T12:00"
},
"performer": {
"#type": "PerformingGroup",
"name": "Kira and Morrison"
},
"organizer": {
"#type": "Organization",
"name": "Kira and Morrison Music",
"url": "https://kiraandmorrisonmusic.com"
}
}
</script>
</head>
<body>
</body>
</html>
In addition, Schema has the beta version of the type VirtualLocation.
I can't for the life of me figure out how this company adding this meta data to their Google search.
Does anyone know how to add the data and booking links like the below image?
Thanks
What you are seeing in these search results is what Google defines as "Rich Results" more information can be viewed in Google's Structured Data documentation. Specifically Edgewater Medical center is taking advantage of the event functionality to define times and dates.
This can be verified by pasting the page's source in the Rich Results Test tool, results for this page can be viewed at
https://search.google.com/test/rich-results?utm_campaign=devsite&utm_medium=jsonld&utm_source=event&id=m1ZrUywePCZ_NglFJIjZfg
According to google documentation in order to make this happen you have to follow a few steps:
Ensure that Googlebot can crawl your event pages (meaning, your pages
aren't protected by a robots.txt file or robots meta tag).
Ensure that your server can handle increased crawl rate.
Make sure you follow the Google guidelines.
Add structured data to your event pages. Currently, the event experience on Google only supports pages that focus on a single event. We recommend focusing on adding markup to your event posting pages instead of pages that list schedules or multiple events.
An example of such "structured data" for a standard event is shown below:
<html>
<head>
<title>The Adventures of Kira and Morrison</title>
<script type="application/ld+json">
{
"#context": "https://schema.org",
"#type": "Event",
"name": "The Adventures of Kira and Morrison",
"startDate": "2025-07-21T19:00-05:00",
"endDate": "2025-07-21T23:00-05:00",
"eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
"eventStatus": "https://schema.org/EventScheduled",
"location": {
"#type": "Place",
"name": "Snickerpark Stadium",
"address": {
"#type": "PostalAddress",
"streetAddress": "100 West Snickerpark Dr",
"addressLocality": "Snickertown",
"postalCode": "19019",
"addressRegion": "PA",
"addressCountry": "US"
}
},
"image": [
"https://example.com/photos/1x1/photo.jpg",
"https://example.com/photos/4x3/photo.jpg",
"https://example.com/photos/16x9/photo.jpg"
],
"description": "The Adventures of Kira and Morrison is coming to Snickertown in a can’t miss performance.",
"offers": {
"#type": "Offer",
"url": "https://www.example.com/event_offer/12345_201803180430",
"price": "30",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"validFrom": "2024-05-21T12:00"
},
"performer": {
"#type": "PerformingGroup",
"name": "Kira and Morrison"
},
"organizer": {
"#type": "Organization",
"name": "Kira and Morrison Music",
"url": "https://kiraandmorrisonmusic.com"
}
}
</script>
</head>
<body>
</body>
</html>
I want sell more than one ebook on my site. But all ebooks are in one package for a specific price. I dont know, how i must setup the schema.org. My first creation look like this:
<script type="application/ld+json">
{
"#context": "http://schema.org",
"#type": "WebPage",
"mainEntity":{
"#type": "Book",
"author": "www.example.com",
"bookFormat": "https://schema.org/EBook",
"fileFormat": "application/pdf"
"image": "example.jpg",
"inLanguage": "English",
"name": "Example",
"numberOfPages": "20",
"genre": "Example",
"description": "Description example",
"keywords": "Keyword example",
"offers": {
"#type": "Offer",
"price": "1.00",
"priceCurrency": "USD",
"category": "",
"availability": "https://schema.org/OnlineOnly",
"availableDeliveryMethod": "http://purl.org/goodrelations/v1#DeliveryModeDirectDownload"
},
"publisher": "www.example.com",
}
}
</script>
Thanks for your help!
Your product seems a grouped product of downloadable products, which are enlisted eBooks.
There are two ways to implement a list format for your structured data:
Summary page + multiple full details pages
A single, all-in-one-page list
If the page has full details of each eBook in the list prefer A single, all-in-one-page list else if the page has short description of each eBook in the list use Summary page + multiple full details pages as described in here.
Regards,
Vivek
I'm currently in the middle of an test, where I am asked to design a site that can give visitors an overview of upcoming events. The sites events has to be marked up with metadata using the Schema.org vocabulary.
I've made the page with both events on it, however when I try to validate the code on Google's test tool, it only shows one event as found:
I can't get it to recognize the second event, it just seems like Google skips the entire markup for that seperate event.
Is it possible for me to have both events marked up as well as some general markup of the site later on and if so what do I need to change so Google can recoqnize it as two events and not just one?
Attached is the entire markup in JSON-LD:
<script type="application/ld+json">
{
"#context": "http://schema.org/",
"#type": "MusicEvent",
"name": "Nytårskoncert",
"image": "http://www.kultunaut.dk/perl/images/billetten/W855H481_imageseventadvanced515158c14de20a020large.jpg",
"startdate": "2017-01-10T20:00",
"enddate": "2017-01-10T22:30",
"performer": "Sønderjyllands Symfoniorkester",
"location": {
"#type": "Place",
"name": "Comwell Kolding Teater",
"address": {
"#type": "PostalAddress",
"addressCountry": "Denmark",
"addresslocality": "Kolding",
"postalcode": "6000",
"streetaddress": "Skovbrynet 1"
}
},
"description": "Til dette års nytårskoncert har vi engageret to vidunderlige og etablerede operasangere, sopranen Gitta Maria Sjöberg og tenor Eduardo Aladrén. Med disse to stemmer i front har vi plukket en buket af de skønneste arier og duetter fra operaens verden. Sønderjyllands Symfoniorkester dirigeret af Ola Rudner vil derudover bidrage med fejende wienervalse og festlige klassiske nytårstoner. En nytårskoncert, hvor vi byder 2018 velkommen med den skønneste nytårsmusik og sang."
},
{
"#context": "http://schema.org/",
"#type": "TheaterEvent",
"name": "De Stuerene",
"startDate": "2017-01-12T19:30",
"endDate": "2017-01-12T22:00",
"location": {
"#type": "Place",
"name": "Mungo Park Kolding",
"address": {
"#type": "PostalAddress",
"addressCountry": "Danmark",
"addressLocality": "Kolding",
"postalCode": "6000",
"streetAddress": "Fredericiagade 1"
}
},
"description": "Historien om Dansk Folkeparti er vel den væsentligste i dansk politik i de sidste 20 år. Siden partiet blev stiftet i 1995 har Pia Kjærsgaards parti, mere end nogen, sat dagsordenen for hvad vi debatterer i vores land - og hvordan vi gør det. DE STUERENE er en tour-de-force gennem 20 år med Dansk Folkeparti. 20 år som måske har forandret den danske folkesjæl."
}
}
</script>
This looks like a simple problem with your syntax. I added an array:
<script type="application/ld+json">
[{
"#context": "http://schema.org/",
"#type": "MusicEvent",
"name": "Nytårskoncert",
"image": "http://www.kultunaut.dk/perl/images/billetten/W855H481_imageseventadvanced515158c14de20a020large.jpg",
"startdate": "2017-01-10T20:00",
"enddate": "2017-01-10T22:30",
"performer": "Sønderjyllands Symfoniorkester",
"location": {
"#type": "Place",
"name": "Comwell Kolding Teater",
"address": {
"#type": "PostalAddress",
"addressCountry": "Denmark",
"addresslocality": "Kolding",
"postalcode": "6000",
"streetaddress": "Skovbrynet 1"
}
},
"description": "Til dette års nytårskoncert har vi engageret to vidunderlige og etablerede operasangere, sopranen Gitta Maria Sjöberg og tenor Eduardo Aladrén. Med disse to stemmer i front har vi plukket en buket af de skønneste arier og duetter fra operaens verden. Sønderjyllands Symfoniorkester dirigeret af Ola Rudner vil derudover bidrage med fejende wienervalse og festlige klassiske nytårstoner. En nytårskoncert, hvor vi byder 2018 velkommen med den skønneste nytårsmusik og sang."
},
{
"#context": "http://schema.org/",
"#type": "TheaterEvent",
"name": "De Stuerene",
"startDate": "2017-01-12T19:30",
"endDate": "2017-01-12T22:00",
"location": {
"#type": "Place",
"name": "Mungo Park Kolding",
"address": {
"#type": "PostalAddress",
"addressCountry": "Danmark",
"addressLocality": "Kolding",
"postalCode": "6000",
"streetAddress": "Fredericiagade 1"
}
},
"description": "Historien om Dansk Folkeparti er vel den væsentligste i dansk politik i de sidste 20 år. Siden partiet blev stiftet i 1995 har Pia Kjærsgaards parti, mere end nogen, sat dagsordenen for hvad vi debatterer i vores land - og hvordan vi gør det. DE STUERENE er en tour-de-force gennem 20 år med Dansk Folkeparti. 20 år som måske har forandret den danske folkesjæl."
}
]
</script>