SEO Rose
SEORose

Digital Agency Built for Tomorrow

Loading...

Back to Blog Technical SEO

Review Schema Markup: How to Get Star Ratings in Google Search Results

Review schema is structured data that tells Google about your reviews. Visible result: star ratings in search results + AI Overviews.

S
Local SEO Strategist
Published · Updated · 6 min read

Review schema markup is structured data you add to your website's HTML so Google understands you have reviews and what the aggregate rating is. The visible result: your star rating shows up in Google search results — the orange stars below the title — and increasingly in Google's AI Overviews. Done right, review schema can lift organic click-through rate noticeably, because star ratings are the highest-contrast element in a result listing.

What review schema actually does

Review schema gives Google two pieces of information it can display in search results:

  1. AggregateRating — your average star rating across all reviews + the total review count
  2. Review — individual review excerpts that may appear in rich results

When Google decides to display rich results for your page, the search result transforms from a plain text snippet into a snippet with stars, a numeric rating ("4.7"), and a review count ("based on 127 reviews"). Searchers eye-track to the stars before they read the title — they're the highest-attention element on a search results page.

Where to place the schema

JSON-LD is the format Google recommends. Place it in the <head> section of every page where you display reviews. The schema must reference reviews that are actually visible on the page — Google's quality team has been increasingly aggressive about removing rich results from sites that ship schema for reviews that aren't displayed on the page.

The minimal valid AggregateRating schema

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Your Business Name",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main St",
    "addressLocality": "Baltimore",
    "addressRegion": "MD",
    "postalCode": "21201"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "127",
    "bestRating": "5",
    "worstRating": "1"
  },
  "review": [{
    "@type": "Review",
    "author": { "@type": "Person", "name": "Jane D." },
    "datePublished": "2026-05-14",
    "reviewBody": "Same-day repair, clear pricing, no upsell.",
    "reviewRating": {
      "@type": "Rating",
      "ratingValue": "5",
      "bestRating": "5",
      "worstRating": "1"
    }
  }]
}

Why the parent type matters. aggregateRating and review are only valid on a specific set of parent types — LocalBusiness, Organization, Product, Book, Course, Event, Movie, Recipe, SoftwareApplication and a handful of others. Service is not one of them. Nesting a rating inside a Service block is one of the most common structured-data mistakes on agency-built sites: Search Console reports "Invalid object type for field" and the page is disqualified from review rich results entirely. If you are marking up a service page, emit the Service block for the service itself and a separate LocalBusiness block that owns the rating.

The 2024–2025 enforcement changes

Google has been progressively stricter about review schema since the August 2024 spam update. The current rules:

  • Self-serving reviews don't qualify. Reviews on your own site about your own business may not earn rich results. Reviews on a service page need to be either third-party-validated (pulled from Google Business Profile, Yelp, etc.) or marked with the appropriate Review schema referencing the original source.
  • Aggregate-only schema gets demoted. Sites that ship AggregateRating without any individual Review entities now rarely earn rich results. Best practice: include at least 3–5 individual reviews on the page with full Review schema.
  • Manipulation triggers manual penalties. Sites caught shipping schema for reviews that don't exist on the page (or don't exist anywhere) get hit with manual actions removing all rich results until corrected.

The AI Overviews opportunity

Since AI Overviews launched in May 2024, review schema has become more important, not less. AI Overviews pull review data from structured data when generating "best plumbers in Baltimore"-type queries. Pages with strong review schema appear in AI Overview citations at substantially higher rates than pages without — even when the pages without have stronger conventional rankings.

Pages with complete, valid review structured data are cited in AI Overviews more often than pages without it — structured data is one of the clearest ways to make review information machine-readable. As AI Overviews take up more of the results page, this matters more.

Step-by-step: adding review schema without breaking anything

  1. Pick the parent type first. Review and AggregateRating only work inside an allowed parent — LocalBusiness, Organization, Product, SoftwareApplication, Book, Course, Event, and a few others. This is the step most implementations get wrong (see the parent-type section above).
  2. Build the JSON-LD with every required field. An AggregateRating needs ratingValue plus reviewCount or ratingCount — leave the count out and Google silently skips the stars. Individual Review blocks need author, reviewRating with bestRating and worstRating, and reviewBody.
  3. Match the markup to what's visible. The rating, count, and review text in the schema must appear on the page itself. Markup describing reviews a visitor cannot see is a structured-data policy violation.
  4. Test before deploying. Run the URL through Google's Rich Results Test, fix every error and warning, then request validation in Search Console after it ships.

The Search Console errors you'll actually meet

"Invalid object type for field parent_node" means the rating sits inside a disallowed parent — the classic case is nesting aggregateRating inside a Service block. Move it to a LocalBusiness or Organization entity. "Either ratingCount or reviewCount should be specified" is the missing-count mistake from step 2. "Bad escape sequence in string" or unparseable-JSON errors usually mean your CMS HTML-escaped the output — quotes rendered as &quot; break the JSON silently, and every schema block on the page dies with it. And one policy note worth knowing before you invest: Google stopped showing stars for self-serving reviews — LocalBusiness or Organization markup describing your own business on your own site — back in 2019. The markup still structures your entity data, but the visible-star payoff today comes on Product and other eligible types, and from your Google Business Profile reviews, which have their own surface in the Map Pack.

What to do this week

  1. Open Google's Rich Results Test. Run it against your homepage and your top 3 service pages. See whether you have valid review schema.
  2. If you have no review schema, add it. Most modern CMS platforms have plugins (RankMath, Yoast, Schema Pro for WordPress) that generate it automatically.
  3. If you have AggregateRating only, add 3–5 individual Review schemas to the same page. Use real reviews from your Google Business Profile.
  4. Re-test in Rich Results Test. If valid, you'll start seeing rich results in Google search within 2–6 weeks.
  5. Audit monthly. Google rolls out schema enforcement updates 3–4 times per year — what was valid last quarter may need adjustment.

See our Local SEO service for full schema implementation and Map Pack ranking work, or request a free audit for a written review of your current schema implementation.

S
About SEO Rose Editorial Team
Local SEO Strategist · SEO Rose

Local SEO practitioner working with service businesses across Baltimore, Maryland, and the DMV. Writes from direct campaign experience — not theory.

Tags: schema markup review schema rich snippets

Need help applying this to your business?

Request a free Google Business Profile audit. We'll benchmark you against the top-3 in your category and send back a written assessment within 72 hours.

Request Free Audit
Chat with us!