Recently I've lost my star review on Google SERP. I know that reasons may be differents and various, but I would to be sure that I didn't made mistakes on code:
<div itemprop="aggregateRating" itemscope="" itemtype="http://schema.org/AggregateRating" style="text-align:right;">
<b><span itemprop="ratingValue">5</span> on
<span itemprop="bestRating">5</span> based on <span itemprop="reviewCount">857</span> reviews</b>
</div>
Could Google have released an update?
The code snippet you provided in the main post: in isolation is not valid according to Google SDTT.
The review has no reviewed item specified
<div itemprop="aggregateRating" itemscope="" itemtype="http://schema.org/AggregateRating" style="text-align:right;">
<b><span itemprop="ratingValue">5</span> on
<span itemprop="bestRating">5</span> based on <span itemprop="reviewCount">857</span> reviews</b>
</div>
This is fixed by adding in itemprop="itemreviewed"
<div itemprop="aggregateRating" itemscope="" itemtype="http://schema.org/AggregateRating" style="text-align:right;">
<h3 itemprop="itemreviewed">Mario Bros service</h3>
<b><span itemprop="ratingValue">5</span> of
<span itemprop="bestRating">5</span> based on <span itemprop="reviewCount">857</span> reviews</b>
</div>
Instances of
AggregateRating
may appear as values for the following properties
- Brand
- CreativeWork
- Event
- Offer
- Organization
- Place
- Product
- Service
Source - http://schema.org/AggregateRating
Your full snippet in the comments (which I have simplified) is using the Organization schema http://schema.org/Organization and a different vocabulary for Review aggregate
<html itemscope itemtype="http://schema.org/Organization">
<body>
<div class="review">
<div itemprop="review" itemscope itemtype="http://data-vocabulary.org/Review-aggregate">
<img itemprop="rating" src="#" alt="173 recensioni" />
<span itemprop="count">173 recensioni</span>
</div>
</div>
</body>
</html>
Which has multiple errors.
The valid way would be:
Using data-vocabulary.org
<html itemscope itemtype="http://schema.org/Organization">
<body>
<div>
<h1 itemprop="name">Mario Bros</h1>
<div itemscope itemtype="http://data-vocabulary.org/Review-aggregate">
<h3 itemprop="itemreviewed">Mario Bros service</h3>
<p>
<span itemprop="rating" itemscope itemtype="http://data-vocabulary.org/Rating">
<em itemprop="average">5</em> out of <em itemprop="best"> 5 </em>
</span>
<b>based on</b>
<!-- How many people rated this item? -->
<em itemprop="votes">173</em> ratings.
</p>
<p>
<!-- How many people reviewed this item? -->
<em itemprop="count">45 </em> user reviews.
</p>
</div>
</div>
</body>
</html>
Using schema.org
<html itemscope itemtype="http://schema.org/Organization">
<body>
<div>
<h1 itemprop="name">Mario Bros</h1>
<div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
<em itemprop="ratingValue">5</em> out of <em itemprop="bestRating">5</em> based on <em itemprop="ratingCount">24</em> user ratings.
</div>
</div>
</body>
</html>
You also mentioned in comments that they are products:
products such as curtains, roll-up, etc
This is Google's example from the Products data type:
<div itemscope itemtype="http://schema.org/Product">
<img itemprop="image" src="dell-30in-lcd.jpg" />
<span itemprop="name">Dell UltraSharp 30" LCD Monitor</span>
<div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
<span itemprop="ratingValue">87</span>
out of <span itemprop="bestRating">100</span>
based on <span itemprop="ratingCount">24</span> user ratings
</div>
</div>
Modified for your criteria would be:
<html itemscope itemtype="http://schema.org/Organization">
<body>
<div>
<h1 itemprop="name">Mario Bros</h1>
<div itemscope itemtype="http://schema.org/Product">
<img itemprop="image" src="curtains.jpg" />
<span itemprop="name">Acme brand Curtains</span>
<div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
<em itemprop="ratingValue">5</em> out of <em itemprop="bestRating">5</em> based on <em itemprop="ratingCount">173</em> reviews.
</div>
</div>
</div>
</body>
</html>
Enchanced further:
<html itemscope itemtype="http://schema.org/Organization">
<body>
<div>
<h1 itemprop="name">Mario Bros</h1>
<div itemscope itemtype="http://schema.org/Product">
<span itemprop="brand">Acme brand</span>
<img itemprop="image" src="curtains.jpg" />
<span itemprop="name">Acme brand Curtains</span>
<div itemprop="aggregateRating" itemscope itemtype="http://schema.org/AggregateRating">
<em itemprop="ratingValue">5</em> out of <em itemprop="bestRating">5</em> based on <em itemprop="ratingCount">173</em> reviews.
</div>
<div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
<!--price is 1000, a number, with locale-specific thousands separator and decimal mark, and the € character is marked up with the machine-readable code "EUR" -->
<span itemprop="priceCurrency" content="EUR">€</span>
<span itemprop="price" content="1000.00">1,000.00</span>
<link itemprop="availability" href="http://schema.org/InStock" />
<span>In stock</span>
</div>
</div>
</div>
</body>
</html>