Schema Markup Types Explained: When to Use Which Structured Data
Developers implementing Schema.org markup without understanding type selection reduce rich snippet opportunities. Learn which schema types match different content, implementation patterns that avoid errors, and testing procedures that ensure eligibility.
Schema Markup Types Explained: When to Use Which Structured Data
Quick Summary
- What this covers: Developers implementing Schema.org markup without understanding type selection reduce rich snippet opportunities. Learn which schema types match different content, implementation patterns that avoid errors, and testing procedures that ensure eligibility.
- Who it's for: SEO practitioners at every career stage
- Key takeaway: Read the first section for the core framework, then use the specific tactics that match your situation.
- Understanding Schema.org Basics
- High-Impact Schema Types and Use Cases
- Implementation Best Practices
- Testing and Validation
- Common Schema Implementation Errors
- When This Approach Isn't Right
The Schema.org vocabulary includes 800+ types covering everything from recipes and events to medical conditions and software applications. Choosing appropriate types—and correctly implementing their required properties—determines whether your structured data translates into search visibility or sits unused in page code.
Google supports a subset of Schema types for rich results: Product, Recipe, Event, FAQ, HowTo, JobPosting, LocalBusiness, and others. Implementing unsupported types wastes effort. Implementing supported types incorrectly fails validation, preventing rich snippet eligibility despite technically valid markup.This guide breaks down high-impact Schema types, when to use each, required vs. recommended properties, implementation patterns, and testing workflows that catch errors before deployment.
Understanding Schema.org Basics
Structured data uses standardized vocabulary to explicitly describe page content. Search engines parse this machine-readable format more accurately than inferring meaning from HTML alone. Three implementation formats: JSON-LD (JavaScript Object Notation for Linked Data): Recommended by Google. Embeds structured data in tags:
``html
Microdata: Inline HTML attributes (itemscope, itemprop). More complex to implement and maintain. Rarely used now.
RDFa: Another inline format. Uncommon for SEO purposes.
Why JSON-LD wins: Separates structured data from HTML, making it easier to add, update, and debug without touching page layout. All examples below use JSON-LD.
High-Impact Schema Types and Use Cases
Product Schema
When to use: E-commerce product pages, SaaS product listings, service offerings with pricing.
Rich result: Product rich snippets show price, availability, rating, review count in search results.
Required properties:
name: Product name
image: Product image URL
offers: Pricing and availability information (nested Offer type)
Recommended properties:
aggregateRating: Average rating and review count
review: Individual customer reviews
brand: Product brand
description: Product description
Example:
`json
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Blue Widget Pro",
"image": "https://example.com/widget-pro.jpg",
"description": "Professional-grade widget for advanced users",
"brand": {
"@type": "Brand",
"name": "Widget Co"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/products/widget-pro",
"priceCurrency": "USD",
"price": "149.99",
"availability": "https://schema.org/InStock"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"reviewCount": "312"
}
}
`
Recipe Schema
When to use: Food blog posts, cooking sites, recipe pages.
Rich result: Recipe cards showing cook time, ingredients, ratings, calories.
Required properties:
name: Recipe name
image: Finished dish image
recipeIngredient: List of ingredients
recipeInstructions: Step-by-step instructions
Recommended properties:
prepTime: Preparation time (ISO 8601 duration format)
cookTime: Cooking time
totalTime: Total time
recipeYield: Number of servings
nutrition: Calorie and nutritional info
aggregateRating: User ratings
Example:
`json
{
"@context": "https://schema.org",
"@type": "Recipe",
"name": "Classic Chocolate Chip Cookies",
"image": "https://example.com/cookies.jpg",
"author": {
"@type": "Person",
"name": "Jane Baker"
},
"prepTime": "PT15M",
"cookTime": "PT12M",
"totalTime": "PT27M",
"recipeYield": "24 cookies",
"recipeIngredient": [
"2 cups flour",
"1 cup butter",
"3/4 cup sugar",
"2 eggs",
"2 cups chocolate chips"
],
"recipeInstructions": [
{
"@type": "HowToStep",
"text": "Preheat oven to 375°F."
},
{
"@type": "HowToStep",
"text": "Mix butter and sugar until creamy."
}
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9",
"reviewCount": "87"
}
}
`
Take Action: Give Your AI a Memory
Everything above gets easier when your AI already knows your business. The Claude Code + Obsidian setup builds persistent, file-based memory so context compounds instead of evaporating between sessions.
Key Recap
- Understanding Schema.org Basics: Everything above gets easier when your AI already knows your business.
- High-Impact Schema Types and Use Cases: Everything above gets easier when your AI already knows your business.
- Implementation Best Practices: URL: https://search.google.com/test/rich-results
- Testing and Validation: URL: https://search.google.com/test/rich-results
FAQ Schema
When to use: Pages with question-and-answer format content.
Rich result: FAQ rich snippets expanding directly in search results, showing multiple Q&As.
Required properties:
mainEntity: Array of Question types
Each Question needs name (the question) and acceptedAnswer (the answer)
Example:
`json
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is Schema markup?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Schema markup is structured data vocabulary that helps search engines understand page content more accurately."
}
},
{
"@type": "Question",
"name": "Why use JSON-LD for Schema?",
"acceptedAnswer": {
"@type": "Answer",
"text": "JSON-LD is Google's recommended format because it separates structured data from HTML, simplifying implementation and maintenance."
}
}
]
}
`
Important: Only use FAQ schema for actual FAQs, not as a hack to display more content in search results. Google penalizes misuse.
HowTo Schema
When to use: Tutorial pages, step-by-step guides, instructional content.
Rich result: Carousel format showing steps, time estimates, and required tools/supplies.
Required properties:
name: Title of the how-to guide
step: Array of HowToStep or HowToSection objects
Recommended properties:
totalTime: How long the process takes
tool: Required tools or equipment
supply: Required materials or supplies
image: Visual for each step
Example:
`json
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to Change a Car Tire",
"totalTime": "PT30M",
"tool": [
{
"@type": "HowToTool",
"name": "Car jack"
},
{
"@type": "HowToTool",
"name": "Lug wrench"
}
],
"step": [
{
"@type": "HowToStep",
"name": "Loosen lug nuts",
"text": "Use the lug wrench to loosen the lug nuts on the flat tire. Don't remove them completely yet.",
"image": "https://example.com/step1.jpg"
},
{
"@type": "HowToStep",
"name": "Lift the car",
"text": "Position the car jack under the vehicle frame and lift the car until the tire is off the ground.",
"image": "https://example.com/step2.jpg"
}
]
}
`
Article Schema
When to use: Blog posts, news articles, editorial content.
Rich result: Enhanced search listings with publication date, author, headline.
Required properties:
headline: Article title
image: Featured image
datePublished: Publication date
dateModified: Last modified date
Recommended properties:
author: Person or Organization who wrote the article
publisher: Publishing organization (with logo)
description: Article summary
Example:
`json
{
"@context": "https://schema.org",
"@type": "Article",
"headline": "Complete Guide to Schema Markup",
"image": "https://example.com/article-image.jpg",
"author": {
"@type": "Person",
"name": "Victor Valentine Romo"
},
"publisher": {
"@type": "Organization",
"name": "AI First Search",
"logo": {
"@type": "ImageObject",
"url": "https://example.com/logo.png"
}
},
"datePublished": "2026-02-08",
"dateModified": "2026-02-08"
}
`
LocalBusiness Schema
When to use: Local business pages (restaurants, stores, service providers with physical locations).
Rich result: Local pack placements, knowledge panels with hours, location, reviews.
Required properties:
@type: Specific business type (Restaurant, Store, etc.)
name: Business name
address: Physical address
telephone: Phone number
Recommended properties:
openingHours: Operating hours
geo: Geographic coordinates
priceRange: Price level ($, $, $$)
aggregateRating: Customer ratings
image: Business photos
Example:
`json
{
"@context": "https://schema.org",
"@type": "Restaurant",
"name": "Joe's Pizza",
"image": "https://example.com/restaurant.jpg",
"address": {
"@type": "PostalAddress",
"streetAddress": "123 Main Street",
"addressLocality": "New York",
"addressRegion": "NY",
"postalCode": "10001",
"addressCountry": "US"
},
"telephone": "+1-212-555-0100",
"openingHours": "Mo-Su 11:00-22:00",
"servesCuisine": "Italian",
"priceRange": "$",
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.5",
"reviewCount": "287"
}
}
`
Event Schema
When to use: Event pages (conferences, concerts, webinars, workshops).
Rich result: Event rich snippets showing date, time, location, ticket availability.
Required properties:
name: Event name
startDate: Event start (ISO 8601 format)
location: Physical or virtual location
Recommended properties:
endDate: Event end time
image: Event image/poster
description: Event details
offers: Ticket pricing
performer: Speakers/performers
organizer: Organizing entity
Example:
`json
{
"@context": "https://schema.org",
"@type": "Event",
"name": "SEO Conference 2026",
"startDate": "2026-06-15T09:00:00-05:00",
"endDate": "2026-06-17T17:00:00-05:00",
"location": {
"@type": "Place",
"name": "Convention Center",
"address": {
"@type": "PostalAddress",
"streetAddress": "456 Conference Blvd",
"addressLocality": "San Francisco",
"addressRegion": "CA",
"postalCode": "94102",
"addressCountry": "US"
}
},
"image": "https://example.com/event.jpg",
"description": "Annual SEO industry conference featuring keynotes from leading experts",
"offers": {
"@type": "Offer",
"url": "https://example.com/tickets",
"price": "499",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock"
}
}
`
JobPosting Schema
When to use: Job listing pages, career sections.
Rich result: Job postings appear in Google for Jobs search feature.
Required properties:
title: Job title
description: Job description
datePosted: When the job was listed
hiringOrganization: Company hiring
jobLocation: Where the job is located
Recommended properties:
baseSalary: Salary range
employmentType: Full-time, part-time, contract, etc.
validThrough: Application deadline
Example:
`json
{
"@context": "https://schema.org",
"@type": "JobPosting",
"title": "Senior SEO Manager",
"description": "Lead SEO strategy for Fortune 500 clients...",
"datePosted": "2026-02-01",
"validThrough": "2026-03-15",
"employmentType": "FULL_TIME",
"hiringOrganization": {
"@type": "Organization",
"name": "Digital Agency Co",
"sameAs": "https://digitalagency.com"
},
"jobLocation": {
"@type": "Place",
"address": {
"@type": "PostalAddress",
"addressLocality": "Remote",
"addressCountry": "US"
}
},
"baseSalary": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": {
"@type": "QuantitativeValue",
"minValue": 90000,
"maxValue": 130000,
"unitText": "YEAR"
}
}
}
`
Implementation Best Practices
One schema type per page: Don't cram multiple unrelated schemas on one page. A product page gets Product schema, not Product + Recipe + Event. Exception: Breadcrumbs, Organization, and WebPage schemas can coexist with primary content schema.
Use specific types over generic ones: LocalBusiness has subtypes (Restaurant, AutoRepair, LegalService). Use the most specific applicable type—it unlocks type-specific rich results.
Include all required properties: Missing required properties invalidates schema. Use Google's Rich Results Test to verify completeness.
Add recommended properties when available: They improve rich snippet quality and CTR. Ratings, images, pricing—all increase visual appeal.
Keep data accurate and current: Outdated schema (wrong prices, closed locations, past events still listed as future) misleads users and risks penalties.
Don't mark up invisible content: Schema should describe visible page content. Hiding content from users but marking it up for search engines violates guidelines.
Testing and Validation
Google Rich Results Test: Primary validation tool. Paste URL or code snippet, see which rich results are eligible and identify errors.
URL: https://search.google.com/test/rich-results
Schema Markup Validator (schema.org): Validates technical correctness of schema syntax.
URL: https://validator.schema.org/
Google Search Console: "Enhancements" reports show rich result eligibility for indexed pages. Surfaces errors preventing rich snippets.
Testing workflow:
Implement schema in staging environment
Test with Rich Results Test tool
Fix any errors or warnings
Deploy to production
Monitor Search Console for errors post-deployment
Verify rich snippets appear in search results (can take days to weeks)
Common Schema Implementation Errors
Mismatched schema type: Using Recipe schema on a blog post that mentions food but isn't a recipe. Use Article schema instead.
Missing required properties: Product schema without offers, Recipe without ingredients. These fail validation.
Invalid property values: Dates not in ISO 8601 format (YYYY-MM-DD), URLs missing protocol (example.com instead of https://example.com`).
Nested schema errors: Improperly nested types—offers within products, addresses within locations. Follow schema.org documentation for correct nesting.
Multiple schemas of same type: Two Product schemas on one page confuse parsers. Combine into one schema if multiple products, or use ItemList for product collections.
Frequently Asked Questions
Do all Schema types result in rich snippets?No. Google supports a limited subset for rich results. Implement unsupported types if they add semantic value, but don't expect visual enhancements in search. Supported types: Product, Recipe, FAQ, HowTo, Review, Event, JobPosting, LocalBusiness, Article, Video, Breadcrumbs.
Can incorrect schema harm rankings?Directly, no. Indirectly, yes—if schema misleads users (wrong prices, false claims), user experience degrades, which can harm rankings. Google may also remove rich snippet eligibility for policy violations.
Should I use schema markup generators or write it manually?Generators (like Google's Structured Data Markup Helper) speed initial implementation but require validation and customization. For dynamic content (product catalogs, blog posts), programmatic generation via templates is essential.
How long until rich snippets appear after adding schema?Days to weeks. Google must re-crawl the page, validate schema, and determine eligibility. Submit updated sitemaps to Search Console to expedite crawling.
Can I combine multiple schema types on one page?Yes, when contextually appropriate. A blog post (Article schema) can include FAQ schema for embedded Q&A sections. Product pages can include Review schema. Avoid unrelated combinations—don't add Event schema to product pages.
When This Approach Isn't Right
This guidance may not fit if:
- You're brand new to SEO. Some frameworks here assume working knowledge of crawling, indexing, and ranking fundamentals. Start with the basics first — this article builds on them.
- Your site has fewer than 50 indexed pages. Some strategies (like cannibalization audits or hub-and-spoke restructuring) require a minimum content base. Focus on content creation before optimization.
- You're working on a site with active penalties. Manual actions require a different playbook. Resolve the penalty first, then apply these optimization frameworks.
Your AI Has Amnesia. Here's the Fix.
$997. 90 minutes. One file that gives Claude permanent memory of your business, your clients, and your preferences.
- Personal CLAUDE.md file built for your specific context
- Obsidian vault structure optimized for AI retrieval
- Claude Code configuration and hook scripts
- Live 90-minute walkthrough of the entire system
Pays for itself in the first week.