Schema Markup for SEO and AI Search: Which Structured Data Types to Use and How
A practical guide to schema markup: what structured data does, which schema.org types matter for service businesses, ecommerce, and publishers, JSON-LD examples, and how to test and maintain it.
Key takeaways
- Schema markup is code that describes your content in a vocabulary search engines understand, using schema.org types.
- Google recommends JSON-LD, and markup must match what users can see on the page.
- Structured data can make pages eligible for rich results. It is not a direct ranking boost.
- Clear Organization, LocalBusiness, Article, and Product markup also helps machines, including AI systems, connect facts about your brand.
Schema markup (structured data) is code added to a web page that explicitly tells search engines what the page is about: for example, that it describes an organization, a local business, a product with a price, or an article by a named author. It uses the shared schema.org vocabulary, and Google recommends writing it in JSON-LD format. Correct markup can make pages eligible for rich results and helps search and AI systems interpret your content accurately.
What schema markup does, and does not do
- It does make pages eligible for enhanced search features such as product price and availability, review stars on eligible types, breadcrumbs, and organization details. See Google's introduction to structured data.
- It does remove ambiguity, for example by stating that "Vertex Cyber Tech" is an organization with a specific website, logo, and social profiles.
- It does not guarantee rich results. Google decides when to show them.
- It is not a substitute for helpful content or a direct ranking factor.
Which schema types should you use?
| Schema type | Use it on | Why it matters |
|---|---|---|
| Organization | Homepage or About page | Defines your brand entity: name, logo, URL, contact details, and sameAs social profiles |
| LocalBusiness (or a subtype such as ProfessionalService) | Location pages | Address, opening hours, geo-coordinates, and service area for local search |
| WebSite | Homepage | Declares the site name Google can display |
| BreadcrumbList | All inner pages | Shows your site hierarchy in search results |
| Article or BlogPosting | Blog posts and guides | Headline, author, publish and modified dates, and image |
| Person | Author pages | Connects content to real experts with credentials. See our E-E-A-T guide. |
| Service | Service pages | Describes what you offer, to whom, and where |
| Product with Offer | Product pages | Price, availability, and shipping for product rich results. See our ecommerce SEO guide. |
| Review and AggregateRating | Product and some other eligible pages | Star ratings where Google's policies allow. Self-serving reviews for your own business are not eligible. |
| FAQPage | Pages with a visible FAQ section | Since 2023 Google shows FAQ rich results mainly for well-known government and health sites, but the markup still describes question-and-answer content clearly |
JSON-LD example: Organization
Place a script tag of type application/ld+json in the page head or body containing:
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Example Digital Ltd",
"url": "https://www.example.com",
"logo": "https://www.example.com/logo.png",
"email": "hello@example.com",
"sameAs": [
"https://www.linkedin.com/company/example",
"https://x.com/example"
]
}
JSON-LD example: BlogPosting
{
"@context": "https://schema.org",
"@type": "BlogPosting",
"headline": "How to Measure SEO ROI",
"datePublished": "2026-11-06",
"dateModified": "2026-11-06",
"author": { "@type": "Person", "name": "Jane Smith", "url": "https://www.example.com/team/jane-smith" },
"publisher": { "@type": "Organization", "name": "Example Digital Ltd" },
"image": "https://www.example.com/images/seo-roi.png"
}
Structured data rules to follow
Google's general structured data guidelines are strict:
- Mark up only content that is visible to users on that page.
- Keep it accurate and current. Prices, availability, and opening hours must match the page.
- Do not mark up misleading, irrelevant, or hidden content.
- Use the most specific applicable type, such as Dentist rather than LocalBusiness.
- Include all required properties for any rich result you are targeting.
Breaking these rules can result in a manual action that removes rich result eligibility.
Schema markup and AI search
AI search systems retrieve and summarize web pages, and many of the entity relationships they rely on are reinforced by clean, consistent data. Organization markup with sameAs links, Person markup for authors, and accurate dates give machines unambiguous facts to work with. Treat structured data as one part of being machine-readable, together with server-rendered HTML and answer-first content, as covered in our GEO guide.
How to implement schema markup
- Audit what exists with a crawler and the Rich Results Test.
- Map types to templates: homepage, service, location, blog post, product, and author pages.
- Generate markup from your data in the CMS or framework, rather than hand-pasting it, so it stays in sync with visible content.
- Validate with the Rich Results Test and the Schema Markup Validator.
- Monitor the enhancement reports in Google Search Console for errors and warnings.
Example: A multi-location clinic adds Dentist markup to each location page with the address, geo-coordinates, opening hours, and phone number taken from the same database that renders the page. When opening hours change in the CMS, both the visible page and the structured data update together, so they never contradict each other. That consistency also supports its local SEO.
Common schema mistakes
- Marking up reviews that are not displayed on the page
- Using the same LocalBusiness markup with one address on every page
- Leaving outdated prices or event dates in the markup
- Adding FAQ markup to every page in the hope of rich results
- Duplicating conflicting Organization markup from several plugins
JSON-LD example: LocalBusiness
Local businesses can describe their address, hours, and contact details so search engines match them to the Business Profile and local searches. A simplified example:
{
"@context": "https://schema.org",
"@type": "Dentist",
"name": "Example Dental Clinic",
"url": "https://www.example.com/locations/riverside",
"telephone": "+1-555-010-0000",
"address": {
"@type": "PostalAddress",
"streetAddress": "12 River Road",
"addressLocality": "Springfield",
"postalCode": "12345",
"addressCountry": "US"
},
"openingHoursSpecification": [{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "09:00",
"closes": "17:30"
}]
}
Use the most specific type available, such as Dentist, Plumber, or LegalService, rather than the generic LocalBusiness, and make sure every value matches what is visible on the page and in your Google Business Profile. See our local SEO guide for the rest of the local setup.
JSON-LD example: Product
Online stores use Product markup with an Offer to describe price, currency, and availability, which can make listings eligible for product rich results and merchant listings:
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Trail Running Shoe",
"image": "https://www.example.com/images/trail-shoe.jpg",
"description": "Lightweight trail running shoe with a grippy outsole.",
"sku": "TRS-042",
"brand": { "@type": "Brand", "name": "ExampleBrand" },
"offers": {
"@type": "Offer",
"price": "119.00",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"url": "https://www.example.com/products/trail-shoe"
}
}
Keep price and availability in sync with the page and your Merchant Center feed. Mismatches can lead to warnings or loss of eligibility. Our e-commerce SEO guide covers product pages in more depth.
Connecting entities with @id
As sites grow, you will often describe the same organization, people, and pages in several places. Giving each entity a stable identifier with @id, for example https://www.example.com/#organization, lets you reference it from other markup instead of repeating details. A BlogPosting can point to its author's Person entity and its publisher's Organization entity by ID. This builds a consistent knowledge graph of your site that is easier for search engines and AI systems to interpret, and it reduces the risk of conflicting information across pages.
Testing and validating structured data
- Rich Results Test: checks whether a page is eligible for Google rich results and shows errors and warnings.
- Schema Markup Validator: validates markup against the schema.org vocabulary, including types Google does not use for rich results.
- Search Console enhancement reports: show site-wide errors for supported types such as Products, Breadcrumbs, and Videos, and track fixes over time.
- URL Inspection: confirms that markup appears in the rendered HTML Google actually sees, which matters for JavaScript-rendered sites.
Add a structured data check to your release process so template changes do not silently break markup.
Generating schema in modern frameworks
On sites built with frameworks such as Next.js, structured data should be generated from the same data that renders the page, not written by hand. For example, an article template can build its BlogPosting markup from the post's title, dates, author, and image fields, and a product template can use live price and stock data. This guarantees consistency between the markup and visible content. Render the JSON-LD on the server so it appears in the initial HTML. Our technical SEO checklist covers JavaScript rendering checks.
Measuring the impact of structured data
Search Console lets you filter performance by search appearance, such as review snippets, product results, or videos, so you can see impressions and clicks for pages shown with rich results. Compare click-through rates for pages before and after markup is added, keeping in mind that rankings and seasonality also change. Rich result eligibility does not guarantee display, so judge structured data as part of overall page quality rather than in isolation.
A prioritized schema rollout plan
| Priority | Markup | Where |
|---|---|---|
| 1 | Organization or LocalBusiness, WebSite | Homepage and location pages |
| 2 | BreadcrumbList | All templates with breadcrumbs |
| 3 | Product and Offer, or Service | Product and service pages |
| 4 | Article or BlogPosting with Person authors | Blog and resources |
| 5 | VideoObject, Event, FAQPage, or others as relevant | Pages where the content genuinely exists |
Structured data supports, but does not replace, strong content and trust signals. Pair it with the practices in our E-E-A-T guide and the answer-first writing approach in our GEO guide.
Schema types by business model
Professional and IT services
Use Organization (or ProfessionalService) on the homepage, Service markup on service pages describing the service type, provider, and area served, BreadcrumbList across the site, and BlogPosting with Person authors for articles. If you publish case studies, Article markup with clear authorship is appropriate.
Local businesses
Use the most specific LocalBusiness subtype for each location, with address, geo coordinates, opening hours, phone, and a link to the location page. Multi-location brands should give each location its own page and markup, connected to the parent Organization with parentOrganization or a shared @id.
Online stores
Use Product with Offer on product pages, including price, currency, availability, and identifiers such as GTIN, MPN, or SKU where available. Add AggregateRating and Review only when the reviews are genuine, displayed on the page, and collected from customers. Use BreadcrumbList on categories and products.
Publishers and content sites
Use Article, NewsArticle, or BlogPosting with accurate datePublished and dateModified, author Person entities, publisher Organization, and a representative image. Add VideoObject for embedded videos.
Example: fixing broken markup at scale
An online retailer sees thousands of Product warnings in Search Console after a theme update. Investigation shows the new template outputs a price without a currency and leaves availability blank for variants. Because the markup is generated by a single template, one fix resolves every affected page. The team adds a structured data test to its deployment pipeline that checks a sample of product URLs before each release, so similar regressions are caught before they reach production. Product rich results return as Google recrawls the pages.
Structured data maintenance
- Review enhancement reports in Search Console monthly.
- Re-test key templates after every design or platform change.
- Update markup when prices, hours, addresses, or authors change.
- Remove markup for content that no longer exists on the page.
- Follow announcements from Google, because supported rich result types change over time.
Frequently confused points
Does schema markup improve rankings directly? Google has said structured data is not a general ranking factor. Its value comes from helping search engines understand content and from rich results that can improve click-through rates.
Should every page have FAQ markup? No. Google limits FAQ rich results to a small set of authoritative government and health sites, so for most businesses FAQPage markup will not produce a visual enhancement. It can still describe genuine question-and-answer content accurately, but it should never be added to pages without visible FAQs.
Can I use microdata instead of JSON-LD? Yes, Google supports JSON-LD, microdata, and RDFa. JSON-LD is recommended because it is separate from the HTML layout and easier to maintain.
Will invalid markup hurt my site? Errors usually just make pages ineligible for rich results. Markup that misrepresents content, such as fake reviews, can lead to a manual action, which is why accuracy matters more than volume. For a broader view of site health, see our technical SEO checklist.
Get structured data right
Structured data is part of every technical SEO audit we run. Vertex Cyber Tech's SEO and development teams build schema generation into your templates so it stays accurate. Ask us for a structured data review.
Sources and further reading
Article FAQs
What is schema markup in SEO?
Schema markup is structured data code, usually written in JSON-LD using the schema.org vocabulary, that tells search engines exactly what a page contains, such as an organization, local business, product, or article. It can make pages eligible for rich results.
Does schema markup improve rankings?
Schema markup is not a direct ranking factor. It helps search engines understand your content and can make pages eligible for rich results, which may improve click-through rates.
What schema markup should a service business use?
Most service businesses should use Organization and WebSite markup on the homepage, LocalBusiness or a specific subtype on location pages, Service on service pages, BreadcrumbList sitewide, and Article plus Person markup on blog content.
Is FAQ schema still worth adding?
Since 2023 Google shows FAQ rich results mainly for well-known government and health websites, so most commercial sites will not get FAQ snippets. The markup can still describe visible question-and-answer content clearly, but do not add it expecting rich results.
How do I test schema markup?
Use Google's Rich Results Test to check eligibility for Google features, the Schema Markup Validator to check general schema.org validity, and the enhancement reports in Google Search Console to monitor errors across your site.
About Vertex Cyber Tech Digital Marketing Team
SEO strategists, content specialists, and web engineers at Vertex Cyber Tech Solutions who plan, build, and measure organic growth programs for businesses in India, the US, the UK, and beyond.
More articles