← All checks
AEOTypical severity: Low

Structured Data Scanner

Checks whether your page has schema.org structured data (JSON-LD) for rich results and AI answers.

What it checks

This scanner checks whether your page includes schema.org structured data in JSON-LD format. These are invisible tags that describe your content (a company, an article, a product, an FAQ) in a language that machines and AI models understand.

Why it matters

Structured data helps Google show rich results (stars, prices, questions) and makes it easier for AI assistants to extract and cite your information accurately. Without it, you rely on AI interpreting your content on its own, with a higher risk of error.

How to fix it

Add a schema.org JSON-LD block suited to the page type, for example Organization on your homepage, Article on your blog or FAQPage on your frequently asked questions. Free generators can create this code for you; you just paste it into the page's head.

How this check works

Scanaris looks in your page's HTML for every <script type="application/ld+json"> tag, tries to parse each one as JSON and checks that the result contains @context or @type, which is what distinguishes a schema.org block from any other JSON. One valid block is enough for there to be no finding. If there is none, or the ones present cannot be parsed (a stray comma, an unclosed quote), it opens a low-severity finding. It does not judge whether the chosen type is appropriate or whether properties are missing; only whether there is something Google and AI assistants can read.

Why it matters

Structured data is how you tell a machine, unambiguously, what your page is: this is an organisation with this name and this logo, this is an article written by this person on this date, this is a product at this price with these ratings. Google uses it for rich results (stars, prices, expandable questions, breadcrumbs) and to understand entities. AI assistants use it for the same thing but with more weight, because it saves them interpreting the HTML: a page with well-defined Article and Organization is more likely to be cited with correct attribution than one where the model has to guess who wrote it. It is low severity because lacking it does not remove you from any index; it only makes you harder to understand.

How to fix it

On the home page, at minimum Organization and WebSite:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "Organization",
      "@id": "https://yourdomain.com/#org",
      "name": "Your company",
      "url": "https://yourdomain.com/",
      "logo": "https://yourdomain.com/logo.png",
      "sameAs": ["https://github.com/yourcompany", "https://www.linkedin.com/company/yourcompany"]
    },
    {
      "@type": "WebSite",
      "url": "https://yourdomain.com/",
      "name": "Your company",
      "publisher": { "@id": "https://yourdomain.com/#org" }
    }
  ]
}
</script>
  • By page type: Article or BlogPosting on posts (with author, datePublished, dateModified); Product with offers on product pages; SoftwareApplication if you sell software; FAQPage where there are real questions and answers; BreadcrumbList for breadcrumbs.
  • Nuxt: useHead({ script: [{ type: 'application/ld+json', innerHTML: JSON.stringify(data) }] }) on each page, or the schema.org module that generates it from components.
  • Next.js: a <script type="application/ld+json"> tag in the layout or page with the serialised JSON.
  • WordPress: Yoast and Rank Math generate Organization, WebSite, Article and breadcrumbs without touching code.

The data must match what is visible on the page: Google penalises marking up ratings or prices that do not exist. And the sameAs with your public profiles is what connects your entity to what the models already know about you from other sources.

Check it is fixed

curl -s https://yourdomain.com | grep -oE '<script type="application/ld\+json">[^<]*' | head -c 600

Your JSON should come out. Then paste it into Google's Rich Results Test or the schema.org validator: both tell you whether it is syntactically correct and which recommended properties are missing.

Frequently asked questions

JSON-LD or microdata in the HTML?

JSON-LD. It is the format Google recommends, it goes in a separate block without cluttering the template and it is the easiest to generate from any framework.

I added FAQPage and Google does not show the expandable questions.

Since 2023 Google only shows that rich result for government and health sites. The markup is still useful for AI assistants to extract your questions and answers, which is what this check measures it for. Why some sites get cited and others do not is covered in structured data and AI citations.

Does this replace the title and description?

No, it complements them. The title and meta description are still what Google displays; SEO metadata measures them. Structured data is what machines understand on top of that.

Check it on your site

Scan your site free and see if this and 44 other checks pass, with a fix prompt for every issue.

Scan my site free

From the blog

Related checks