Structured data
Andy Bright
Director of Product and Technology
On this page
Structured data is code you add to a page to describe its content in a standard format that machines can read. A person looking at Fernhill Coffee's product page can see that "£10.50" is a price, "250g" is the size of the bag and "In stock" means it can be bought today. A search engine sees text, and has to work out what each piece means. Structured data labels each piece for it.
Search engines use structured data for two things. It can make a page eligible for rich results, the search listings that show extra details such as star ratings, prices or event dates. It also helps search engines understand who and what a page is about, such as your business, your products and your authors.
Google has removed many kinds of rich result since 2023, so structured data does less for search listings than it used to. It also does less for AI answers than some advice claims. This chapter explains what's still worth doing.
This chapter explains:
- what structured data looks like
- what search engines use it for
- which rich results Google has removed, and which still work
- how to describe your business with Organization markup
- how to connect your markup into one description of your site
- the rules that stop markup working
- what structured data does and doesn't do for AI answers
- how to add it to your site
What structured data looks like
Here is structured data for Fernhill's product page, at https://www.example.com/products/ethiopia-yirgacheffe:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Ethiopia Yirgacheffe",
"description": "A light roast with notes of lemon and jasmine. 250g bag of whole beans.",
"image": "https://www.example.com/images/ethiopia-yirgacheffe-1200.avif",
"brand": { "@type": "Brand", "name": "Fernhill Coffee" },
"offers": {
"@type": "Offer",
"price": "10.50",
"priceCurrency": "GBP",
"availability": "https://schema.org/InStock"
}
}
</script>The code sits in the page's HTML, but visitors don't see it. It uses a vocabulary called schema.org, a shared list of names for things and their details that Google, Bing and other search engines agreed on. In schema.org, each kind of thing is a type, such as Product, Organization or Article. Each detail of that thing is a property, such as name, price or author.
The first line, "@context": "https://schema.org", says which vocabulary the code uses. The second, "@type": "Product", says the page is about a product. The rest gives the product's details. The offers section describes the price and whether it's in stock, using a type called Offer.
Formats
The example above is written in JSON-LD, one of three formats for structured data. The other two, Microdata and RDFa, add labels directly to the visible HTML. Google's introduction to structured data(opens in a new tab) says it supports all three and recommends JSON-LD. JSON-LD sits in its own block, separate from the visible page, so it's the easiest to create and keep up to date.
What search engines use it for
Google's introduction to structured data(opens in a new tab) says it uses structured data to understand a page's content, and to gather information about the web and the world more generally, such as the people, books or companies a page mentions.
Things like these, which search engines keep track of as distinct things in the world, are called entities. Fernhill Coffee the company is an entity, and so is its founder. Search engines try to connect everything they find about an entity, so that they know the Fernhill Coffee on a review site is the same as the one at example.com.
Structured data is also what makes a page eligible for rich results. Without the Product markup above, Google can't show Fernhill's price and stock status in its search listing.
Google's introduction includes case studies of what rich results did for clicks. Rotten Tomatoes reported a 25% higher click-through rate on 100,000 pages with structured data. Nestlé reported an 82% higher click-through rate for pages that appear as rich results compared with pages that don't. These are Google's own figures, the page doesn't say when they were measured, and they come from before AI Overviews. Treat them as examples rather than predictions.
Rich results Google has removed
Google has stopped showing many kinds of rich result since 2023. These are the ones you're most likely to have markup for:
| Kind of rich result | What happened | When |
|---|---|---|
| HowTo | No longer shown on desktop or mobile | September 2023 |
| Breadcrumb | Still supported, but shown in desktop results only, not mobile | January 2025 |
| Course info, Estimated salary, Learning video, Special announcement, Vehicle listing | Phased out, and documentation removed | Announced June 2025, documentation removed September 2025 |
| Claim review | Being phased out in Search, but still supported by the Fact Check Explorer tool | Announced June 2025 |
| Book actions | Announced for removal in June 2025, then kept because a feature still uses it | November 2025 |
| Dataset | No longer a Google Search feature, but still used by Google Dataset Search | November 2025 |
| Practice problems | Phased out, and documentation removed | Announced November 2025, removed January 2026 |
| FAQ | Stopped appearing on 7 May 2026, and documentation removed on 15 June 2026 | May and June 2026 |
The dates come from Google's documentation updates log(opens in a new tab) and its June 2025 post on simplifying the search results page(opens in a new tab).
The same updates log(opens in a new tab) records some smaller changes in 2026:
- In March 2026, Google explained how it chooses images. It uses both schema.org markup and the
og:imagetag when picking the thumbnail image for a page in Search and Discover. - For shop product listings, Google added guidance for the
hasAdultConsiderationproperty in May 2026, and forProduct.categoryand the dates a sale price applies in July 2026. These changes bring product markup closer to the product information shops send to Google Merchant Center, Google's service for shops that list products on Google. - In July 2026, Google's rules for review markup gained a ban on fake reviews, and on reviews that were paid for or rewarded without saying so.
- In September 2026, Google added guidance for the
creatorproperty in video markup.
FAQ markup
FAQ markup labels a list of questions and answers on a page. There's no need to remove it. It's valid schema.org and does no harm, but it no longer produces a rich result in Google.
The questions and answers themselves can still be useful, both to readers and to AI systems looking for direct answers. Bing's AI Performance announcement(opens in a new tab) lists FAQ sections among the formats that help content get cited in its AI answers. If someone recommends adding FAQ markup to get rich results in late 2026, though, that advice is out of date.
Rich results that still work
As of October 2026, Google's search gallery(opens in a new tab), its list of supported rich results, includes: Article, Breadcrumb, Carousel, Course list, Dataset, Discussion forum, Education Q&A, Employer aggregate rating, Event, Image metadata, Job posting, Local business, Math solver, Movie, Organization, Product, Profile page, Q&A, Recipe, Review snippet, Software app, Speakable, Subscription and paywalled content, Vacation rental and Video.
Shopping features (Merchant listing, Loyalty program, Merchant return policy and Merchant shipping policy) are listed in a separate section. Dataset is still in the gallery, but as the table above shows, it now applies to Google Dataset Search rather than ordinary search results.
Most business websites need only a few of these:
| Kind of site | Types worth considering | Notes |
|---|---|---|
| Any business | Organization (or a more specific type), WebSite | On the home page or About page |
| Publisher, blog or guides | Article or BlogPosting, Person or ProfilePage for authors, BreadcrumbList | Google shows breadcrumbs on desktop only |
| Online shop | Product with Offer, plus return and shipping policies | Keep it consistent with your Merchant Center product information |
| Local business | The right kind of LocalBusiness, with address and opening hours | Match your Google Business Profile |
| Software | SoftwareApplication with offers, and Organization | Don't mark up reviews you don't show |
| Events | Event | Dates, location, status, and whether it's in person or online |
| Pages built around a video | VideoObject | Thumbnail, upload date and length |
WebSite markup on your home page also helps Google choose the site name it shows in search results. It has to be on the home page of the domain or subdomain, because Google's site names documentation(opens in a new tab) says it doesn't support sites in a subfolder, such as example.com/shop/.
Start with Organization
If you add only one type of structured data, make it Organization, or a more specific type such as OnlineStore. It's the one place where you state the facts about your business in a format every search engine and crawler can read. That helps when AI answers confuse your business with one that has a similar name, or describe it using an old product name or a former parent company.
Google's Organization documentation(opens in a new tab) sets out how to do it:
- No property is required. Add the ones that apply to your business.
- Put it on your home page, or on one page that describes the business, such as an About page. It doesn't need to be on every page.
- Use the most specific type that fits, such as
OnlineStoreor the right kind ofLocalBusiness. - Make the
logoimage at least 112 × 112 pixels. - Use
sameAsto list your profiles on other websites, such as LinkedIn, Wikipedia, Wikidata, Crunchbase or GitHub. - Add official identifiers such as
vatID(your VAT number) andiso6523Code, which help tell your company apart from others with similar names. For DUNS and LEI numbers, Google prefersiso6523Codewith the right prefix (0060:for DUNS and0199:for LEI) to the olderdunsandleiCodeproperties.
The same page(opens in a new tab) says Organization markup on your home page can help Google understand your business's administrative details and tell it apart from others in search results. Some properties are only used behind the scenes. Others, such as logo, can affect what Google shows in search results and in knowledge panels, the information boxes about a business or person that appear beside search results.
Three habits make Organization markup more useful.
List every official profile in sameAs, but only profiles you control or that are clearly about your business. Business directories, review sites, social media accounts and Wikidata entries all help search engines connect the information about you.
Keep your facts the same everywhere. Your business name, description, prices and founding date should match across your website, your structured data and your profiles on other sites. When they don't, search engines and AI systems have conflicting facts to choose between.
Mark up real authors. Article markup that names a Person, with a real biography page, a job title and sameAs links, supports the signs of experience and expertise that Google's quality guidelines describe.
Connecting your markup into one graph
On most sites, each page has its own separate block of structured data. A tidier approach describes the business, the website, the authors and each page once, and links them together. This is done with a list called @graph that holds several items, and an @id for each item, a unique name that other items can refer to. The result is one connected description of your site.
iPullRank's guide to technical foundations for AI search(opens in a new tab) recommends linking Organization, WebSite, WebPage and Product or Service items this way, and keeping "the same @id for repeated entities" across all your page templates.
This example is for a brewing guide on Fernhill's site, at /brewing-guides/cafetiere:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "OnlineStore",
"@id": "https://www.example.com/#organization",
"name": "Fernhill Coffee Ltd",
"alternateName": "Fernhill Coffee",
"url": "https://www.example.com/",
"logo": {
"@type": "ImageObject",
"url": "https://www.example.com/images/logo-512.png",
"width": 512,
"height": 512
},
"description": "Small-batch coffee roaster selling beans and subscriptions online across the UK.",
"foundingDate": "2018",
"sameAs": [
"https://www.linkedin.com/company/fernhill-coffee-example",
"https://www.instagram.com/fernhillcoffee.example",
"https://find-and-update.company-information.service.gov.uk/company/00000000"
],
"vatID": "GB000000000",
"contactPoint": {
"@type": "ContactPoint",
"contactType": "customer support",
"email": "hello@example.com"
}
},
{
"@type": "WebSite",
"@id": "https://www.example.com/#website",
"url": "https://www.example.com/",
"name": "Fernhill Coffee",
"publisher": { "@id": "https://www.example.com/#organization" },
"inLanguage": "en-GB"
},
{
"@type": "Person",
"@id": "https://www.example.com/team/sam-okafor#person",
"name": "Sam Okafor",
"jobTitle": "Head Roaster",
"worksFor": { "@id": "https://www.example.com/#organization" },
"url": "https://www.example.com/team/sam-okafor",
"sameAs": ["https://www.linkedin.com/in/sam-okafor-example"]
},
{
"@type": "Article",
"@id": "https://www.example.com/brewing-guides/cafetiere#article",
"headline": "How to brew coffee in a cafetière",
"datePublished": "2026-09-02T09:00:00+01:00",
"dateModified": "2026-10-10T14:30:00+01:00",
"author": { "@id": "https://www.example.com/team/sam-okafor#person" },
"publisher": { "@id": "https://www.example.com/#organization" },
"isPartOf": { "@id": "https://www.example.com/#website" },
"mainEntityOfPage": "https://www.example.com/brewing-guides/cafetiere",
"image": "https://www.example.com/images/cafetiere-guide-1200x675.png",
"inLanguage": "en-GB"
}
]
}
</script>The graph has four items: the business, the website, the author and the article. The article doesn't repeat the business's details. Its publisher line points to the business's @id instead, and its author line points to Sam's.
The @id values are names, not pages. They don't need to lead anywhere, but using your own web address with a # and a label on the end keeps them unique.
Every property describes something a visitor can find on the site. Fernhill's founding year and support email address, for example, appear on its About page.
dateModified should change only when the article's content changes. It should match the lastmod date in your sitemap and any "last updated" date shown on the page. The XML sitemaps chapter explains why.
Before relying on any property to produce a rich result, check it against Google's documentation for that feature.
Rules to follow
These rules come from Google's introduction to structured data(opens in a new tab) and its general structured data guidelines(opens in a new tab). Breaking them can make markup useless, or lead to a manual action, a penalty applied by a person on Google's spam team.
Only mark up what visitors can see. Google says not to add structured data about information that isn't visible to the user, even if it's accurate. Hidden or misleading markup can lead to a manual action.
For Google's features, follow Google's documentation. schema.org defines far more types and properties than Google uses, as its page for the Organization type(opens in a new tab) shows. For rich results, Google's documentation for each feature lists the properties it requires and recommends, and that's what counts.
Use the most specific type that fits, such as SoftwareApplication rather than the general CreativeWork, or CafeOrCoffeeShop rather than LocalBusiness.
Passing a validation tool doesn't guarantee a rich result. Markup can be technically correct and still break Google's general or quality guidelines, and then the page isn't eligible.
Follow the rules for reviews. Google's review snippet documentation(opens in a new tab) says pages about a business that use LocalBusiness or other Organization markup can't get star ratings in search results if the business controls the reviews about itself. Google calls these self-serving reviews. If Fernhill's home page shows quotes from happy customers and marks them up as reviews of Fernhill, those are self-serving, and Google won't show stars for them. Since July 2026, Google's guidelines also ban fake reviews, and reviews that were paid for or rewarded without saying so.
Structured data and AI answers
Google and some SEO practitioners disagree about how much structured data matters for AI answers.
Google's guide to optimising for generative AI(opens in a new tab) says "Structured data isn't required for generative AI search, and there's no special schema.org markup you need to add". It still recommends structured data as part of SEO in general, because of rich results. It lists "overfocusing on structured data" among the AEO and GEO tactics you don't need. AEO and GEO are names for optimising content for AI answers. Google's AI features page(opens in a new tab) says the same about AI Overviews and AI Mode: no special schema.org markup is needed to appear in them.
Some practitioners argue that AI systems use structured data more than that. iPullRank's November 2025 guide(opens in a new tab) says that "LLMs can and do use structured data as part of the RAG pipeline", and recommends detailed markup for every entity. An LLM, or large language model, is the kind of AI model behind tools like ChatGPT. RAG, short for retrieval-augmented generation, is the process where an AI system finds documents and uses them to support its answer.
The two views cover different things. Google is describing Google Search, and it's clear that markup won't get a page into its AI features. Other AI companies haven't said how they treat structured data, so nobody outside those companies knows for certain. What isn't in dispute is that structured data is cheap to add, helps with rich results, and gives any system that reads it accurate facts about your business.
No markup gets a page into AI answers, so be wary of anyone selling "AI schema". Add structured data that's accurate and complete, and don't expect it to make up for thin content.
Related controls
If you publish content that people pay to read, Apple's Applebot documentation(opens in a new tab) says pages marked isAccessibleForFree: false can still appear in search results, but Applebot won't use that content as extra context when generating AI answers in Apple products. The setting applies to whole pages.
If you want a page to appear in Google Search but not be quoted by Google's AI features, structured data won't help. The snippet controls nosnippet, max-snippet and data-nosnippet do that job, as the indexing chapter explains.
Adding structured data to your site
Many website platforms and SEO plugins add basic structured data automatically. Check what yours produces before adding more, so you don't end up with two different descriptions of the same thing.
Put it in the raw HTML
Google can read JSON-LD that's added by JavaScript. The best available evidence, from Vercel's crawler study(opens in a new tab), is that most AI crawlers don't run JavaScript. If you want them to see your markup, it needs to be in the HTML the server sends. Put it near the top of the page too, because Googlebot reads only the first 2 MB of HTML. The JavaScript chapter explains both.
This is for developers. On a site built with the Next.js App Router, add the markup in a Server Component:
// app/brewing-guides/[slug]/page.tsx (Server Component)
export default async function BrewingGuide({ params }) {
const { slug } = await params
const guide = await getGuide(slug)
const jsonLd = {
'@context': 'https://schema.org',
'@type': 'Article',
headline: guide.title,
datePublished: guide.publishedAt,
dateModified: guide.contentUpdatedAt,
author: { '@id': `https://www.example.com/team/${guide.authorSlug}#person` },
publisher: { '@id': 'https://www.example.com/#organization' },
}
return (
<>
<script
type="application/ld+json"
// Escape "<" so content can't break out of the script tag
dangerouslySetInnerHTML={{ __html: JSON.stringify(jsonLd).replace(/</g, '\\u003c') }}
/>
<article>{/* ... */}</article>
</>
)
}Take it from the same data as the page
If the price in your structured data comes from a different place than the price on the page, the two will eventually disagree. Suppose Fernhill runs a sale on its Ethiopian coffee. The sale ends and the page goes back to £10.50, but the structured data still says £8.40. The markup now describes a price that visitors can't see, which breaks Google's rules. Generating both from the same product information avoids this.
Test it, and keep testing
Use Google's Rich Results Test to check markup for Google's features, and the Schema Markup Validator, at validator.schema.org, to check that it follows schema.org's rules. After each change to your site, check the rich result reports in Google Search Console for new errors. Test your page templates again after any big change to the site's design or code, because broken structured data doesn't show on the page, so nobody notices it.
What to do next
- Run your home page, a product or service page and an article through the Rich Results Test, and note what structured data each has.
- Remove any markup for information visitors can't see, and stop relying on FAQ or HowTo markup for rich results.
- Add
Organizationmarkup to your home page or About page, with your logo, your official profiles insameAsand any company identifiers. - Check that your business name, description and other facts match across your site and your profiles elsewhere.
- Ask your developer whether your structured data is in the raw HTML, and whether it comes from the same data as the visible page.
Further reading
- Introduction to structured data markup in Google Search(opens in a new tab), Google's overview of how it uses structured data and which formats it supports.
- Structured data markup that Google Search supports(opens in a new tab), the search gallery. Check it before you add markup to get a rich result.
- Organization structured data(opens in a new tab), Google's rules for describing your business.
- General structured data guidelines(opens in a new tab), the rules your markup has to follow to be eligible for rich results.
- Latest Google Search documentation updates(opens in a new tab), where Google records removed features and new properties.
- Optimizing your website for generative AI features on Google Search(opens in a new tab), Google's position on structured data and AI, in its own words.
- Technical foundations and setup for AI search(opens in a new tab), iPullRank's case for more detailed markup, for the other side of the argument.