1

I want to apply structured data product markup for a marketplace website. I have a page where five sellers are selling the same product.

Each seller has different price and different rating. The seller gets his aggregate rating by his buyers (the rating is for the product).

I want to apply product markup and want to include - product details, price, rating, availability.

There is a confusion in this case:

  1. For the product rating, should I consider rating for all five sellers in total? If yes, then ratings displayed on SERP is different that that on the page. It will break Google's guidelines and Google might give a penalty.

  2. Can I use product markup for five sellers independently? In this case, out of five markups, which markup is considered by Google?

Or is there any other method to markup?

Update 1:

Based on the reply received in comments from Tony McCreath, here is the code.

<script type="application/ld+json">
{
  "@context": "http://schema.org/",
  "@type": "Product",
  "name": "Product Name",
  "image": "https://example.com/photos/16x9/photo.jpg",
  "brand": {
    "@type": "Thing",
    "name": "Product brand name"
  },

  "offers": [
        {
    "@type": "Offer",
    "availability": "http://schema.org/InStock",
    "offeredBy": "Seller 1",
    "price": "100.00",
    "priceCurrency": "USD",
     "aggregateRating": {
              "@type": "AggregateRating",
              "ratingValue": "4.5",
              "reviewCount": "10"
               } 
        },            
        {
    "@type": "Offer",
    "availability": "http://schema.org/InStock",
    "offeredBy": "Seller 2",
    "price": "80.42",
    "priceCurrency": "USD",
     "aggregateRating": {
              "@type": "AggregateRating",
              "ratingValue": "3.5",
              "reviewCount": "12"
               }
        },

        {
    "@type": "Offer",
    "availability": "http://schema.org/InStock",
    "offeredBy": "Seller 3",
    "price": "105.42",
    "priceCurrency": "USD",
     "aggregateRating": {
              "@type": "AggregateRating",
              "ratingValue": "3",
              "reviewCount": "15"
               }
        },

       {
    "@type": "Offer",
    "availability": "http://schema.org/InStock",
    "offeredBy": "Seller 4",
    "price": "95.68",
    "priceCurrency": "USD",
     "aggregateRating": {
              "@type": "AggregateRating",
              "ratingValue": "4",
              "reviewCount": "20"
               }
        },           

        {
    "@type": "Offer",
    "availability": "http://schema.org/InStock",
    "offeredBy": "Seller 5",
    "price": "88.88",
    "priceCurrency": "USD",
     "aggregateRating": {
              "@type": "AggregateRating",
              "ratingValue": "5",
              "reviewCount": "5"
               }
        }        
            ]   
   }
}
</script>

For quick calculation, here is the ratingValue, ratingCount and Total for each sellers.

  1. 1st Seller 4.5 10 45
  2. 2nd Seller 3.5 12 42
  3. 3rd Seller 3 15 45
  4. 4th Seller 4 20 80
  5. 5th Seller 5 5 25
  6. Sum 20 62 237
  7. Average 4 - 3.82

Preview of Structured Data enter image description here

5
  • 1) If you would use the total rating in the structured data, wouldn’t you also display this total rating on the page? 2) Is the rating for the seller or for the product?
    – unor
    Aug 30, 2018 at 10:17
  • 1) I am showing ratings for each individual sellers. So the rating is displayed five times on the page 2) the rating is for the product Aug 30, 2018 at 10:20
  • For the 1) I will add a separate section of total rating. I’ll calculate total rating by adding all five seller’s individual rating and dividing by 5. But I doubt in this because then there will be total 6 ratings displayed on the page. ( 5 sellers ratings + 1 total rating). I guess this will be against Google’s guidelines because they say whatever is displayed on SERP should be displayed on Page. Aug 30, 2018 at 13:14
  • 1
    I'm not certain, but I think you need to add multiple offers for the product, each relating to a seller (offeredBy) and place the price and rating info in the offer. Aug 31, 2018 at 2:50
  • I see.. based on this, I've written a JSON code and updated in my question. Is it what you mean? The code works fine in Structured Data Testing Tool and I could see preview. It shows minimum and maximum range of price, but it doesn't show the star rating. So my question is..how does Google display the star rating? Will that be an average of all five sellers' "ratingValue" which is "4" in my example; or it will be "aggregate" i.e. multiplication of (ratingValue x ratingCount) for each seller; and then they will average it out - which is 3.82 in my example. Aug 31, 2018 at 4:14

2 Answers 2

1

According to the guide of Google to Revew:

Aggregate ratings: An aggregate evaluation of an item by many people should be marked up as a AggregateRating.

and then they inform us:

Refer clearly to a specific product or service. Do this by nesting the review or ratings within the markup of another schema.org type—such as schema.org/Book or schema.org/LocalBusiness —or by using that schema.org typed element as a value for the itemReviewed property.

Thus, on a particular web page of your website with one and a specific product, you can apply markup for reviews of this product that were made only on this web page but not on third-party websites.

Example:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "3.5",
    "reviewCount": "11"
  },
  "description": "0.7 cubic feet countertop microwave. Has six preset cooking categories and convenience features like Add-A-Minute and Child Lock.",
  "name": "Kenmore White 17\" Microwave",
  "image": "kenmore-microwave-17in.jpg",
  "offers": {
    "@type": "Offer",
    "availability": "http://schema.org/InStock",
    "price": "55.00",
    "priceCurrency": "USD"
  },
  "review": [
    {
      "@type": "Review",
      "author": "Ellie",
      "datePublished": "2011-04-01",
      "description": "The lamp burned out and now I have to replace it.",
      "name": "Not a happy camper",
      "reviewRating": {
        "@type": "Rating",
        "bestRating": "5",
        "ratingValue": "1",
        "worstRating": "1"
      }
    },
    {
      "@type": "Review",
      "author": "Lucas",
      "datePublished": "2011-03-25",
      "description": "Great microwave for the price. It is small and fits in my apartment.",
      "name": "Value purchase",
      "reviewRating": {
        "@type": "Rating",
        "bestRating": "5",
        "ratingValue": "4",
        "worstRating": "1"
      }
    }
  ]
}

The guide of Google for Product informs us:

a shopping aggregator page that lists a single product, along with information about different sellers offering that product

Thus, to create markup for many sellers of the same product, use the type AggregateOffer.

Example:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "aggregateRating": {
    "@type": "AggregateRating",
    "bestRating": "100",
    "ratingCount": "24",
    "ratingValue": "87"
  },
  "image": "dell-30in-lcd.jpg",
  "name": "Dell UltraSharp 30\" LCD Monitor",
  "offers": {
    "@type": "AggregateOffer",
    "highPrice": "$1495",
    "lowPrice": "$1250",
    "offerCount": "8",
    "offers": [
      {
        "@type": "Offer",
        "url": "save-a-lot-monitors.com/dell-30.html"
      },
      {
        "@type": "Offer",
        "url": "jondoe-gadgets.com/dell-30.html"
      }
    ]
  }
}
6
  • For the aggregateRating how should I calculate the ratingCount and ratingValue? My each seller has more than 10,000 ratingCounts. Thus, it’s gonna be 50,000+ ratingCounts. Imagine on Google SERP the rating is displayed like ratingValue 4.6 and ratingCount 55600. But when user will land on the page, then he will see different rating value and rating counts. This is surely make them misguided, and google will also consider as a spammy structure data. What should I do in this case? Aug 31, 2018 at 10:51
  • For review, only structured data for one particular product that is presented on your web page is valid. Reviews from outside websites is not valid. Thus, you can apply the rating for reviews only on the web page of your website. Forget about reviews from extraneous web pages of your sellers.
    – nikant25
    Sep 1, 2018 at 13:21
  • Hi.. thanks for sharing. These reviews are provided by our buyers, and that’s why they appear on website. It’s not on the third website. So in-a-nutshell, I have one product and there are multiple sellers selling this same product at different prices. These sellers get ratings from buyers, and it’s from my website. There is no product rating, and there isn’t any third party widget included. There are only sellers’ rating. My question is how do I show these Sellers’ rating? Sep 1, 2018 at 13:32
  • Like that: the type AggregateOffer of your website => the property seller => the embedded type Organization => aggregateRating. This markup will indicate that your business has sellers with ratings for your products on their websites and from their customers.
    – nikant25
    Sep 2, 2018 at 6:38
  • Got it. Thank you so much. That means my markup is correct. Sep 2, 2018 at 6:52
1

For the product rating, should I consider rating for all five sellers in total? If yes, then ratings displayed on SERP is different that that on the page. It will break Google's guidelines and Google might give a penalty.

You have here three possibilities:

  1. to rate only the product. In this case there is only one single rating and it will have chances to be displayed in SERPs as rich snippet.
  2. to rate each seller. In this case you'll have so much rating as you have sellers for this product. These rating willn't have a chance to be displayed as rich snippets.
  3. you can allow to rate all sellers AND programmatically aggregate (javascript calculation) their single ratings into AggregateRating for the product on the top level.

Can I use product markup for five sellers independently? In this case, out of five markups, which markup is considered by Google?

Why? It would be redundant, because all sellers sell the same product.

Or is there any other method to markup?

Yes, i would definitely drive with AggregateOffer instead of Offer. It is specially intended for cases, where different merchants are selling the same product.

UPdate:

{
  "@context": "https://schema.org",
  "@type": "Product",
  "aggregateRating": {
    "@type": "AggregateRating",
    "bestRating": "100",
    "ratingCount": "24",
    "ratingValue": "87"
  },
  "image": "dell-30in-lcd.jpg",
  "name": "Dell UltraSharp 30\" LCD Monitor",
  "offers": {
    "@type": "AggregateOffer",
    "highPrice": "1495",
    "lowPrice": "1250",
    "priceCurrency": "$",
    "offerCount": "2",
    "offers": [
      {
        "@type": "Offer",
        "url": "save-a-lot-monitors.com/dell-30.html",
        "aggregateRating": {
    "@type": "AggregateRating",
    "bestRating": "100",
    "ratingCount": "2",
    "ratingValue": "8"
  },
        "seller": "John"
      },
      {
        "@type": "Offer",
        "url": "jondoe-gadgets.com/dell-30.html",
        "aggregateRating": {
    "@type": "AggregateRating",
    "bestRating": "100",
    "ratingCount": "4",
    "ratingValue": "7"
  },
        "seller": "Bill"
      }
    ]
  }
}
12
  • Thanks for the answer. It’s really insightful. 1) I can’t do the product rating because I just have seller’s rating. 2) yes it’s true. My each seller has more than 10,000 rating count. This might not be displayed as rich snippets 3) That’s what I am thinking, but it will misguide users. When they will be on SERP they will see a different rating and when they will land on the page they will see something else. I doubt this might be considered as spammy Structure Data. Aug 31, 2018 at 10:55
  • For the aggregateOffer, how to calculate the aggregateRatings? Should I add all ratingCounts and decide ratingValue? But this will be the same case as described above. Aug 31, 2018 at 10:58
  • Another thing is.. aggregateRating is used for the product. It is not used for the sellers’ rating. On my site, I don’t have product’s rating, but I have sellers’ rating. So.. I can manage the price (lowPrice and highPrice) but I am not getting a clue that how can I manage the ratings stuff. Aug 31, 2018 at 11:11
  • You should know - in your code example not the seller is rated, but his Offer. Seller can't be rated until his is a person, not Organization. According to this look at my updated answer. I would drive with this code: it rates product AND each Offer (by each seller).
    – Evgeniy
    Aug 31, 2018 at 11:55
  • 1
    you should know, rich snippet is displayed in 95% from the highest nesting level of structured markup. I would use a summary for this. And try to place all entities on the highest level and to tie them like in a comment by Tony McCreatch in this post: plus.google.com/u/0/+Evgeniy-Orlov/posts/A5m9oEUoGLA
    – Evgeniy
    Sep 3, 2018 at 9:54

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.