Skip to content
TechnicalIntermediate

Schema markup for AI search, what helps and what does not

Ian DuncanFounder, Axiom Flux and AxiomAIReviewed 6 min read

In brief

Schema markup will not get you into AI answers on its own, and Google says no special markup is needed. What it does is state who you are, what you offer and who wrote each page, in a form machines can read without guessing. Clean JSON-LD with stable @id values and sameAs links is the part worth doing well.

Key points

  • Google says structured data is not required for its generative AI features, so treat schema as clarity, not a ranking trick.
  • Organization markup with a stable @id and sameAs links tells machines which real business the site belongs to.
  • Authors marked up as Person entities, linked to a bio page, support the trust signals AI engines and Google look for.
  • FAQPage markup no longer produces rich results in Google, but it still labels question and answer content clearly.
  • Markup must match what is visible on the page, or it does more harm than good.
  • Test every block with a validator before and after it goes live.

The steps at a glance

  1. 1

    List your key pages

    Pick the home page, about page, contact or location pages, service pages, and your main articles.

  2. 2

    Add Organization markup with an @id

    Put one Organization block on the home page with a fixed @id, the legal name, logo, url and sameAs links to profiles you control.

  3. 3

    Mark up authors as Person entities

    Give each author a bio page and a Person block with an @id, job title, worksFor pointing to your Organization @id, and sameAs links.

  4. 4

    Add page-level types

    Use Article, Service, LocalBusiness or FAQPage where the visible content matches, and reference the Organization and Person @id values.

  5. 5

    Validate and monitor

    Run each page through the Schema Markup Validator and Google's Rich Results Test, then recheck after site changes.

Schema markup helps AI search in a supporting way. It will not earn a mention on its own. It removes guesswork about who you are, what a page is about and who wrote it.

Schema markup is a shared vocabulary from schema.org. You add it to a page as code that people do not see. Search engines and other systems that parse pages can read it as plain facts.

AI engines build answers from content they can find, read and trust. Markup does not change what your page says. It makes the facts on the page easier to extract and harder to misread. That matters most for the basics, such as your legal name, your address, your founder and your authors.

What does Google say about structured data and AI features?

Google is clear that no special markup is needed. Its guide to optimising for generative AI features says structured data is not required for generative AI search. It also says there is no special schema.org markup you need to add.

The same guide points back to normal SEO good practice. Google's AI features are built on its core ranking and quality systems. So the job is to make good pages and describe them accurately.

Google's intro to structured data adds one rule worth keeping in mind. Do not mark up information that is not visible to the user. If the page does not say it, the schema should not say it either.

Other engines have said less. OpenAI, Anthropic and Perplexity have not published guidance on schema and answer selection. It is fair to assume markup helps their crawlers parse a page. It is not fair to promise more than that.

A small set of types does most of the work. You do not need dozens.

  • Organization. Who the business is, with a fixed identifier and links to other profiles.
  • LocalBusiness. For firms with premises or a service area, with address, phone and opening hours.
  • Person. For authors and named experts, linked to a bio page.
  • Article. For guides and posts, naming the author and the publisher.
  • Service or Product. For what you sell, where the page describes it.
  • FAQPage. For pages with real questions and answers shown on the page.
  • BreadcrumbList. For showing where a page sits in the site.

The first three are the ones people most often get wrong. They describe entities, the things AI engines need to recognise before they can recommend them.

How do you write Organization markup with @id and sameAs?

Put one Organization block on your home page or about page. Google's Organization markup guide recommends the home page or a single page that describes the business.

Here is an example for a made-up window firm.

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://www.example.co.uk/#organization",
  "name": "Example Windows",
  "legalName": "Example Windows Ltd",
  "url": "https://www.example.co.uk/",
  "logo": "https://www.example.co.uk/images/logo.png",
  "email": "hello@example.co.uk",
  "telephone": "+44 1234 567890",
  "foundingDate": "2009",
  "sameAs": [
    "https://www.linkedin.com/company/example-windows",
    "https://www.facebook.com/examplewindows",
    "https://find-and-update.company-information.service.gov.uk/company/SC000000"
  ]
}

Three parts do the heavy lifting.

The @id. This is a fixed identifier for the business. Use your home page address plus a hash, such as #organization. Keep it exactly the same on every page and never change it.

The sameAs list. Schema.org defines sameAs as a page that unambiguously indicates the item's identity. Link to profiles you control and records that confirm you exist, such as a company register entry. Do not list pages that only mention you.

The name fields. Use the trading name in name and the registered name in legalName. Use the same trading name everywhere else online too.

How do you mark up authors as Person entities?

Give each author a bio page, then describe them with a Person block. Link the Person to the Organization using the @id you already set.

{
  "@context": "https://schema.org",
  "@type": "Person",
  "@id": "https://www.example.co.uk/team/jane-smith/#person",
  "name": "Jane Smith",
  "jobTitle": "Technical Director",
  "url": "https://www.example.co.uk/team/jane-smith/",
  "worksFor": { "@id": "https://www.example.co.uk/#organization" },
  "knowsAbout": ["kitchen design", "kitchen installation", "building regulations"],
  "sameAs": ["https://www.linkedin.com/in/jane-smith-example"]
}

On each article, the author property points to that same Person @id. Google's Article markup guide asks for the Person type, only the name in the name field, and a url that uniquely identifies the author.

This supports the trust side of E-E-A-T for AI search. A named person with a real bio and a track record is easier to trust than an anonymous page.

Is FAQPage schema still worth adding?

It is optional now. Google limited FAQ rich results in 2023 and stopped showing them in 2026. The markup is still a valid schema.org type and it labels question and answer content clearly.

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "How long does it take to fit new windows?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Most homes take one to two days, depending on the number of windows and access."
      }
    }
  ]
}

Only use it where the same questions and answers are visible on the page. The FAQ content for AI search guide covers how to write the answers themselves, which matters far more than the markup.

How do you connect the pieces into one graph?

Use @id references so every block points to the same few entities. The home page defines the Organization. Bio pages define each Person. Articles name the author by @id and the publisher by the Organization @id.

The result is one connected picture of the business rather than scattered, slightly different copies. This is the core idea behind entity SEO for AI search.

A simple test helps. If a page describes the business again from scratch with a new name spelling, it is working against you. If it points to the @id you already set, it is adding to the same picture.

Where should the markup live on a small site?

Most small sites need markup on five or six page types. That is usually enough to describe the whole business well.

PageMain typePoints to
Home pageOrganization or LocalBusinesssameAs profiles
About pageAboutPageOrganization @id
Team or bio pagesPersonOrganization @id
Service pagesServiceOrganization @id as provider
Articles and guidesArticlePerson @id as author
Contact or branch pagesLocalBusinessOrganization @id as parent

A multi-branch business is a little different. A good place to start is one Organization for the brand and one LocalBusiness per branch. Each branch then points back to the brand with parentOrganization. That way an engine can see ten branches of one firm, rather than ten unrelated firms with similar names.

Keep the details in each block the same as the branch page and the Google Business Profile. The address, phone number and opening hours should match word for word. If a branch moves or closes, update the markup the same day you update the page.

What mistakes stop schema from helping?

Most problems come from copy and paste or from plugins that each add their own block.

  1. Two or three Organization blocks with different names or logos.
  2. A new @id on every page, so nothing connects.
  3. sameAs links to pages that no longer exist or that belong to someone else.
  4. Reviews, prices or opening hours in the markup that do not match the page.
  5. Author names with job titles stuffed into the name field.
  6. Markup added once and never checked again after a redesign.

Each of these makes the facts about you less certain. AI engines that see mixed signals tend to fall back on third party sources, which may be out of date.

How do you test your JSON-LD?

Run each key page through two free tools. The Schema Markup Validator checks the code against schema.org. Google's Rich Results Test shows what Google can read and flags errors for the types it supports.

Then check the live page, not just the template. Plugins and tag managers sometimes add or strip blocks after the page loads. Recheck after any theme change, CMS update or site move.

How Axiom GEO helps

The schema generator builds copy and paste JSON-LD for a page, covering Organization, Article, FAQPage, LocalBusiness, Service and BreadcrumbList. It only suggests types the page does not already have, and it uses no AI and no credits. The entity audit crawls your key pages and rebuilds the entity graph your site publishes, checking stable @ids, connected nodes, name variants and authors as Person entities. You can try it free at the public entity audit. Page optimisation scores structured data alongside headings, meta, content and freshness, with a fix list per page.

Sources

Frequently asked questions

Does schema markup help with ChatGPT?

Possibly, but indirectly. OpenAI has not said ChatGPT reads schema when it picks sources. Markup helps any system that parses your pages understand who you are and what the page covers, so it supports good content rather than replacing it.

What is the best schema format for AI search?

JSON-LD. Google recommends it, it sits in one script block rather than being mixed into your HTML, and it is easy to keep tidy. Most modern CMS plugins and schema tools output JSON-LD by default.

Do I need special AI schema to appear in AI Overviews?

No. Google says there is no special schema.org markup needed to appear in AI Overviews or AI Mode. Standard types like Organization, Article and LocalBusiness, filled in accurately, are enough.

Should I still add FAQPage schema?

It is optional. Google no longer shows FAQ rich results, so the visible benefit in Google has gone. The markup is still valid and harmless, and it labels real questions and answers clearly for any system that reads it.

What does @id do in JSON-LD?

It gives a thing a fixed identifier, usually a URL with a hash such as your home page plus #organization. Other blocks can then point to that same identifier, so your pages describe one connected business instead of many loose copies.

Can wrong schema hurt my site?

Yes. Markup that describes things not visible on the page, or that contradicts the page, can be ignored or treated as spam by Google. Out of date details in schema can also feed wrong facts to other systems.
Schema markup for AI search: JSON-LD that helps | Axiom GEO