Schema.org for AI: what markup a business website needs
Schema.org is a shared vocabulary a site uses to tell machines what's on the page: the company, the service, the price, the address, a question and its answer. JSON-LD is the format used to attach that vocabulary to a page, as a separate block of code inside it. Small businesses usually need just five types: Organization, LocalBusiness, FAQPage, Service, and Article. Below, we break down exactly what to check on your own site and what to ask your developer for.
What are Schema.org and JSON-LD, in plain terms?
Schema.org is a shared markup vocabulary supported by Google, Bing, and other search engines. It gives machines names for entities: organization, service, product, article, question and answer, address, business hours. The full list of types and properties is published at schema.org.
JSON-LD is the way to attach that vocabulary to a page. A separate block of data is added to the code; it doesn't affect the layout. Visitors don't see it, but machines read it.
The logic works like this. The page text says, "Clinic on Sobornaya Street, open 9 AM to 8 PM." The markup records the same information in fields: name, address, openingHours. The machine doesn't have to guess — the data is right there, explicit.
In casual conversation, "schema markup" and "microdata" often get used interchangeably. Technically there are several formats, but for a business site, JSON-LD is the one that matters in practice: it's easier to implement and edit, and it isn't tied to the HTML markup.
Do AI models actually read schema markup?
There's no direct confirmation that a language model reads your JSON-LD as a standalone signal. The honest version: search engines explicitly use the markup, and AI models largely rely on their indexes. ChatGPT with search, according to the companies themselves, partly runs on the Bing index; Gemini and AI Overviews run on Google's.
The practical takeaway: markup affects an AI model's answer indirectly, through the source — the page is better understood by search, surfaces more often for a customer's question, and more often ends up among the links the model draws on to build its answer.
The second effect matters more for your brand: data consistency. When your name, address, phone number, and service list are recorded the same way in the text, in the markup, and on Google Maps, systems don't end up with conflicting versions of your company. For more on how the approaches differ, see the guide how GEO differs from SEO.
Which schema markup does a business site need?
For a services or local business site, six types are enough. You can leave the rest of the Schema.org vocabulary alone.
| Type | Where to add it | What it describes |
|---|---|---|
| Organization | homepage, "About" | the company as an entity: name, logo, website, social profiles |
| LocalBusiness and subtypes (Dentist, BeautySalon, Restaurant, LegalService, RealEstateAgent) | contact page, location pages | a location: address, phone, business hours, service area |
| Service | service pages | a service: what's included, who it's for, starting price |
| FAQPage | pages with a Q&A block | question-and-answer pairs |
| Article or BlogPosting | articles, guides, blog | author, publish date, and update date |
| BreadcrumbList | all nested pages | the path through the site structure |
An online store adds Product and Offer with price and availability to this set. A services site usually doesn't need them — Service does the job instead of Product.
Want to know where your website stands today? Free: an AI-readiness check, a 30-day plan and your first article in 3–6 minutes.
Get my planOrganization and LocalBusiness: what to fill in first
These two types describe you as a company, and they're the place to start.
- name: the exact name, identical across your website, Google Business Profile, and social media, without add-ons like "best" or "#1."
- url and logo: the website address and a direct link to the logo file.
- sameAs: links to your Instagram, Facebook, LinkedIn profiles, and your Google Maps listing. This field is what ties the site to your mentions elsewhere.
- address via PostalAddress: street, city, postal code, and country as separate fields, not one string.
- telephone in international format, with the country code.
- openingHoursSpecification: business hours by day of the week, including weekends.
- areaServed or geo: the city and area where you operate.
- priceRange: a price indicator, if you publish one.
For a specific location, pick the specific subtype rather than the generic LocalBusiness. Dentist for a dental practice, BeautySalon for a salon, LegalService for a law firm — this keeps the markup closer to how a customer actually phrases their query.
If you have multiple locations, each branch page needs its own markup with its own address and phone number. The pattern is simple: one Organization for the whole site, plus a separate LocalBusiness on each location's page.
FAQPage, Service, and Article: markup for customer questions
FAQPage describes a question-and-answer block. There's one rule: only questions visibly displayed on the page belong in the markup. A hidden FAQ that exists only in the code violates search engine guidelines and can cost you the markup entirely.
Pull the questions from actual chats and calls, not off the top of your head: "how much does it cost," "how many days will it take," "do you work with my city," "do you need a deposit." Write answers in 2–4 sentences with real specifics — not phrasing like "the price depends on many factors."
Service goes on each service's page. The minimum fields: name, description, provider, areaServed, and offers with a starting price. If you don't publish prices, give at least a range and the conditions it's based on.
Article or BlogPosting is for articles: author with a real person's name, datePublished, dateModified. A credited author and an honest update date give an AI model something it can point to in its answer.
How to check your site's markup in 10 minutes
All you need is a browser.
- Open Google's Rich Results Test and the Schema Markup Validator, and paste in the page URL. The tools will show the types found, plus any errors and warnings.
- Don't check just the homepage — also check the contact page, one service page, and one article. Each has its own set of types.
- If no markup turns up, open the page's source code and search for application/ld+json. If it's not there, there's no markup.
- Check the data in the markup against reality. An outdated phone number or last year's business hours in the JSON-LD are worse than having no markup at all.
- Check your NAP: name, address, and phone number should match across your site, your Google Business Profile, and directory listings.
Schema.org JSON-LD markup and FAQ markup are two of the eight technical factors we check to see if a site is ready for AI crawlers: whether the site responds, title, meta description, Schema.org JSON-LD, FAQ markup, llms.txt, AI crawler access in robots.txt, and sitemap.xml. For how to run this check yourself, see the guide how to check whether ChatGPT sees your business, and there's a separate breakdown of the llms.txt file.
What to ask your developer for: a ready-made brief
You can copy this list and send it over as a task.
- Add markup in JSON-LD format (application/ld+json) to the page code, one block per type.
- Homepage and "About": Organization with the fields name, url, logo, sameAs, contactPoint.
- Contact page and location pages: LocalBusiness of the right subtype with address, telephone, openingHoursSpecification, geo, areaServed.
- Service pages: Service with name, description, provider, and offers listing a starting price.
- Pages with a Q&A block: FAQPage strictly matching the text visible on the page.
- Blog: Article or BlogPosting with author, datePublished, and dateModified, with dateModified updated on every edit to the text.
- Nested pages: BreadcrumbList matching the site's actual structure.
- Generate the markup from the same data as the page text, so edits don't make them drift apart.
- After implementation, run every template through the validator and send back an error-free result.
On WordPress, plugins like Rank Math or Yoast cover some of these types. They provide the template, but you still need to fill in the fields by hand — empty markup doesn't say anything about you.
Common mistakes, and what markup won't do
What we see most often on sites:
- Markup is only on the homepage, while service pages and articles have none.
- Fields are filled in with placeholders: "Services" instead of the actual service name, "Kyiv" instead of the street and building number.
- FAQPage describes questions that aren't actually on the page.
- Two conflicting Organization blocks: one from the theme, one from a plugin.
- The dateModified field was set once at launch and never updated since.
- The phone number and hours in the markup don't match the Google Maps listing.
And here's the main point: markup is a technical foundation, not the reason an AI model will name you specifically. Without content built around customers' real questions, and without mentions on other sites, JSON-LD alone won't change the answer. You can see this in our own case study on insync.com.ua: 100/100 on technical readiness, and a jump from 0 to 24 citations in ChatGPT in roughly a week and a half after launching our GEO setup — but for category queries like "best agency," we're not showing up yet. What to do about that is covered in the guide how to get into ChatGPT's answers.
If you'd rather not keep all this in your head, we handle the markup, FAQ blocks, and articles built around customer questions automatically in GEO Autopilot. A check of your site against the eight technical factors, a 30-day plan of 8 articles, and the first article for your site are available for free, before any payment.
FAQ
Is schema markup required to show up in AI model answers?
No, not formally: pages without markup get cited too. But markup removes ambiguity from your company's data and helps search engines understand the page correctly, and AI models largely rely on their indexes. Think of it as hygiene, not a "get into ChatGPT" button.
JSON-LD or HTML microdata: which should I use?
For a business site, JSON-LD is the more practical choice. It sits in a separate block, isn't tied to the layout, and can be edited without risking the design. If your site already has old microdata, remove the duplicates so you don't end up with two different versions of the same data.
I don't have an office or an address. What markup do I need?
LocalBusiness isn't needed in that case — it's about a physical location. Use Organization for the company and Service for each service, and specify your coverage area through areaServed: a city, a country, or a list of countries. For an online business, this set plus FAQPage and Article is enough.
How many markup types can I put on a single page?
As many as the number of entities actually present on it. A service page usually has Service, FAQPage, and BreadcrumbList all at once, and that's fine. The problem isn't quantity — it's marking up something that isn't actually on the page.
How quickly do you see results after adding markup?
The markup itself is picked up on the crawler's next pass over the page, usually within a few days. In our experience, indexing new or reworked pages in Google takes 2–3 weeks, and the first mentions in AI model answers usually show up after 1–3 months. Nobody can guarantee "#1 in ChatGPT," so we just measure the result once a month.
Do I need llms.txt if Schema.org is already set up?
They're different things, and one doesn't replace the other. Schema.org describes the data within a page, while llms.txt is a format proposed in 2024 (llmstxt.org) that gives language models a brief map of the site. It isn't an official standard, and support from major AI models isn't guaranteed, but the file takes an hour to make and doesn't get in the way of anything.