citemark
Menu

Guide

Schema markup for AI search: what actually matters

Published · By Shoaib Mustaque· 6-minute read

Schema markup is JSON-LD that names the entities on a page in a vocabulary machines share. For AI search, five types do the work: Organization (as ProfessionalService), Service, Article, BreadcrumbList and, with caveats, FAQPage. Google says no special schema is needed for AI Overviews. What schema does is remove ambiguity about who you are and what a page says.

On the record

What Google says schema does and does not do

No special structured data is needed to appear in AI Overviews or AI Mode. Structured data must describe the content visible on the page; marking up what users cannot see is against the guidelines. JSON-LD is the recommended format. And Organization markup is used to “disambiguate your organization in search results” and to choose the logo in a knowledge panel.

So schema is not a lever you pull to get into AI answers. It is how you stop an engine guessing. An engine that has to infer your company's name, city, founder and services from prose will sometimes infer them wrongly, and a wrong fact in an answer is worse than no citation.

The second rule, that the markup must match the visible text, is the one most sites break. A FAQPage block with questions that are not on the page, or an Organization block with an address the footer does not show, is a liability.

The five

The five types that matter, and where they go

Five schema.org types cover a service business for AI search. Organization, as the ProfessionalService subtype, says who you are and goes on the home page. Service says what you sell and goes on each service page. Article carries author and dates on guides. BreadcrumbList states the site's hierarchy on every page. FAQPage structures questions, with the caveat below.

Schema types for AI search
TypePut it onWhat it tells an engineNotes
Organization, as ProfessionalServiceHome page, once (the root layout here)Name, legal name, URL, logo, address, founder, founding date, profiles (sameAs), what you know aboutGoogle: use the most specific subtype; used to disambiguate the organisation and pick the logo
ServiceEach service pageService name and type, description, provider (the Organization, by @id), area served, offerPrice only when it is public and on the page
ArticleGuides and postsHeadline, author (Person or Organization with a URL), datePublished, dateModified, publisherGoogle: dates in ISO 8601 with timezone; author.url to a page that identifies the author
BreadcrumbListEvery page below the home pagePosition of the page in the siteRequired: itemListElement with at least two items, each with name, position and item URL
FAQPagePages with real question-and-answer pairsEach question with one accepted answerGoogle withdrew FAQ rich results on 7 May 2026; see below

Organization

Organization as ProfessionalService: the entity

The Organization block is the most useful schema a service business has, because it is what Google says it uses to disambiguate your organisation, and the place to link the site to the same entity on Google Business Profile, LinkedIn and directories. Give it one @id, reference it from every other block, and never let two blocks disagree.

  • Properties we fill: name, legalName, url, logo, slogan, description, email, telephone, address, geo, areaServed, foundingDate, founder (a Person), sameAs (LinkedIn, Google Business Profile, Clutch, GoodFirms, Instagram, X), knowsAbout, openingHoursSpecification, priceRange.
  • Properties we leave out until they are true: anything still a placeholder. A phone number of zeros or a street address that says “TBD” is worse than none, and our build strips any value that is not set.
  • The @id. https://citemark.in/#organization. Every Service block's provider, every Article's publisher and every author fallback point at it, so an engine sees one entity, not five.
  • Both types. We declare @type as [“ProfessionalService”, “Organization”]: the specific subtype Google asks for, and the parent that generic parsers expect.

Article

Article: author and dates, done honestly

Article markup carries the three things that make a guide credible to a machine: who wrote it, when, and when it last changed. Google asks for the author as a Person or Organization with a URL that identifies them, and dates in ISO 8601 with a timezone. When a named author is not yet public, the Organization is the author.

This page is an example. Its Article block names the headline, the published and modified dates, the publisher by @id, and the page itself as mainEntityOfPage. The author is a Person entity when the founder's name is set in our site data, and the Citemark Organization when it is not. The author line at the top of this page is generated from the same value, so the two cannot disagree.

What we do not do: invent a Person to look more credible, backdate a datePublished, or set dateModified on every build. Google's guidance on helpful content calls fabricated authorship a form of deception, and an engine that checks the byline against LinkedIn will find nothing.

FAQPage

FAQPage after May 2026

Google limited FAQ rich results to government and health sites on 8 August 2023, added a deprecation notice on 8 May 2026 saying the feature would no longer appear from 7 May 2026, and removed the documentation on 15 June 2026. The question-and-answer structure is still the cleanest shape for an answer model to parse, so we keep it.

  • Keep on the page: real questions as visible text, each with one answer, in a crawlable element. We use the HTML details element, which needs no JavaScript to read.
  • Keep in the markup, or not: FAQPage is still valid schema.org, and Google's 2023 post said unused structured data causes no problems in Search. We keep it where the questions are on the page, because other parsers read schema.org too. We claim nothing for it.
  • Never: FAQPage markup for questions that are not on the page, or one page with forty questions to catch forty queries.

Engineering

Generate schema from one source of truth

The way to keep schema honest is never to write it by hand. We keep every fact about the company in one data file, build each JSON-LD block from it with a function, and render the visible page from the same file. A fact changes once; the footer, the About page, the Organization block and the Article authors change together.

  1. 01

    One data file

    Name, legal name, address, phone, founder, profiles, prices, hours. Anything not yet known is a visible placeholder, and a helper treats placeholders as unset.

  2. 02

    Builders, not templates

    A function per type: organizationSchema(), serviceSchema(), articleSchema(), breadcrumbSchema(). Each reads the data file and drops any property whose value is unset, so a placeholder can never reach the markup.

  3. 03

    The page reads the same data

    The footer address, the About page founder line and the Organization block are three views of one record. Google's rule that markup must match the visible text is satisfied by construction.

  4. 04

    One @id, referenced everywhere

    Service.provider, Article.publisher and the author fallback all point at the Organization's @id. Engines see one entity.

  5. 05

    Routes and llms.txt from the same list

    Every public page is registered once; the sitemap is generated from that list, and the release checklist adds the llms.txt line in the same commit.

articleSchema({
  headline: guide.title,
  description: guide.description,
  path: `/learn/${guide.slug}`,
  datePublished: guide.published,
  dateModified: guide.updated,
});
// author:    Person when isSet(site.founder.name), else the Organization @id
// publisher: the Organization @id
How this page's Article block is built.

Checking

How to check your schema

Check schema in two places. The Schema Markup Validator at validator.schema.org checks that the JSON-LD is valid schema.org, independent of any search engine. Google's Rich Results Test checks which rich results Google can generate from a public URL. Then read the block yourself next to the page: every value in the markup should be visible somewhere on the page.

Schema is part of the entity setup in every Citemark plan, and the free AI visibility audit reads your current markup against what each engine says about you. The technical SEO service ships the fixes as pull requests.

Sources

Sources

Every factual claim above about how an engine works, or about what a company publishes, links to the source it came from. Each URL was opened and checked on the date shown at the top of this guide. If a source later changes or disappears, the claim should be re-checked, not assumed.

  1. 01Google Search Central, “AI features and your website”https://developers.google.com/search/docs/appearance/ai-features
  2. 02Google Search Central, “Introduction to structured data markup”https://developers.google.com/search/docs/appearance/structured-data/intro-structured-data
  3. 03Google Search Central, “Organization (Organization) structured data”https://developers.google.com/search/docs/appearance/structured-data/organization
  4. 04Google Search Central, “Article (Article, NewsArticle, BlogPosting) structured data”https://developers.google.com/search/docs/appearance/structured-data/article
  5. 05Google Search Central, “Breadcrumb (BreadcrumbList) structured data”https://developers.google.com/search/docs/appearance/structured-data/breadcrumb
  6. 06Google Search Central Blog, “Changes to HowTo and FAQ rich results”, 8 August 2023https://developers.google.com/search/blog/2023/08/howto-faq-changes
  7. 07Google Search Central, documentation updates (FAQ deprecation, 8 May 2026; documentation removed, 15 June 2026)https://developers.google.com/search/updates
  8. 08Google Search Central, “Creating helpful, reliable, people-first content”https://developers.google.com/search/docs/fundamentals/creating-helpful-content
  9. 09Schema.org, ProfessionalServicehttps://schema.org/ProfessionalService
  10. 10Schema Markup Validatorhttps://validator.schema.org/
  11. 11Google Rich Results Testhttps://search.google.com/test/rich-results

Keep reading

Related guides

  • llms.txt: what it is and how to write one

    llms.txt is a Markdown file at /llms.txt that tells AI systems what a site is and which pages matter, proposed by Jeremy Howard in September 2024. The spec, who reads it today, Citemark's own file annotated, and six steps to write yours.
  • How to get cited in Google AI Overviews

    Google AI Overviews are built from Google's normal index and rankings: Google says they only show information backed by top web results. What Google has documented, three steps that follow from it, what doesn't help, and a realistic timeline.
  • What is Generative Engine Optimization (GEO)?

    Generative Engine Optimization (GEO) is the work of becoming a source that ChatGPT, Gemini, Perplexity, Claude and Google AI Overviews cite. Where the term comes from, how engines build answers, what the work involves and how long it takes.

See which prompts you're missing from

The free audit runs your category's prompts on ChatGPT, Gemini, Perplexity, Claude and Google AI Overviews and shows who each engine cites today. Five working days, screenshots included.