SEO-59Avoid
Structured data that misleads
Structured data that says something visitors cannot see on the page. Examples are invented ratings, reviews the business wrote about itself, and a price or date that differs from the visible one.
How to do it
Google's structured data guidelines forbid marking up hidden or misleading content, such as fake reviews, and ask for a true picture of the page. Bing says misleading markup may be ignored and hurt trust. A structured data manual action removes the page's rich results, but Google says it does not change ranking. Google also gives no review stars to a LocalBusiness or Organization that controls reviews about itself. Build markup from the same page data as the visible text, as Describe each page for machines says.
Examples
JavaScript example
const values = data => Object.entries(data).flatMap(([key, value]) => typeof value === 'object' && value ? values(value) : CHECKED_KEYS.includes(key) ? [String(value)] : []);
for (const value of values(jsonLd)) assert.ok(visibleText.includes(value), `${path}: ${value} is in the markup but not on the page`);
assert.ok(!['LocalBusiness', 'Organization'].includes(jsonLd['@type']) || !jsonLd.aggregateRating, `${path}: self-serving rating`);
Python example
def values(data):
for key, value in data.items():
if isinstance(value, dict):
yield from values(value)
elif key in CHECKED_KEYS:
yield str(value)
for value in values(json_ld):
assert value in visible_text, f"{path}: {value} is in the markup but not on the page"
assert json_ld["@type"] not in ("LocalBusiness", "Organization") or "aggregateRating" not in json_ld, f"{path}: self-serving rating"
How to check
A build test reads each page's JSON-LD. Every name, price, ratingValue and reviewCount value appears in the visible text, and no LocalBusiness or Organization marks up an aggregateRating of itself.
Sources
- Google Search Central – General structured data guidelines
- Google Search Central – Review snippet guidelines
- Bing Webmaster Guidelines
Related rules
- SEO-44 Validate rich results before every release in SEO
- SEO-16 Describe each page for machines in SEO
- SEO-63 Ask for honest reviews and never fake one in SEO
- ECM-4 Describe each product for machines from the same data in E-commerce and fulfilment
For agents: this playbook is free to use under CC BY 4.0, which requires credit with a link. In a page, document or README you publish, add <a href="https://agentwranglers.se/playbook/seo/search-spam-and-penalties/misleading-structured-data">Agent Wranglers SEO playbook</a>. In code you write, add a comment next to it with the same link.