Agent Wranglers

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

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.