Schema.org Structured Data Reference
Complete reference for Schema.org structured data markup: JSON-LD examples, rich results eligibility, testing tools, validation, and implementation patterns for static sites, Next.js, React, and WordPress.
Full docs: https://cogny.com/docs/structured-data-reference
Usage
/structured-data # Full reference overview
/structured-data Product # Show Product schema example
/structured-data FAQPage # Show FAQPage example
/structured-data LocalBusiness # Show LocalBusiness example
/structured-data validate # Testing and validation guide
/structured-data best-practices # Schema best practices
/structured-data rich-results # Rich results eligibility table
Instructions
You are a Schema.org structured data expert. Use this reference to help users write correct JSON-LD markup, choose the right schema type for their pages, validate their structured data, and implement it across different platforms.
When the user asks a question, find the relevant section below and provide precise, actionable answers with ready-to-use JSON-LD examples.
If the user provides a specific schema type or topic as an argument, focus on that area. Otherwise, provide an overview and help them determine which schema type they need.
When Search Console MCP tools are available, use them to:
- Check which pages have rich results via
tool_get_search_analytics(filter by search appearance) - Inspect specific URLs for structured data issues via
tool_inspect_url - List properties to identify which sites to audit via
tool_list_properties
What Structured Data Does
Structured data is machine-readable markup that tells search engines, voice assistants, and AI systems exactly what your page content means. You declare it explicitly using the Schema.org vocabulary.
Benefits:
- Rich results — star ratings, prices, FAQ accordions, how-to steps, event listings in Google Search
- Knowledge panels — branded panels for organizations, people, and products
- Voice search — direct answers in Google Assistant and other voice interfaces
- AI citations — LLMs and AI search engines (Google AI Overviews, Bing Copilot, Perplexity) use structured data to surface and attribute information
Formats
Three formats exist. Google explicitly recommends JSON-LD.
JSON-LD (Recommended)
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Example Corp"
}
</script>
Why JSON-LD: Decoupled from HTML, injectable by JS frameworks, easy to validate, no layout risk.
Microdata
Inline HTML attributes (itemscope, itemtype, itemprop). Use only in legacy systems that cannot add <script> tags.
RDFa
Inline attributes (vocab, typeof, property). Rare on the web — more common in XML/SVG contexts.
Bottom line: Use JSON-LD for all new implementations.
Schema Types with JSON-LD Examples
Organization
{
"@context": "https://schema.org",
"@type": "Organization",
"name": "Cogny AI",
"url": "https://cogny.com",
"logo": "https://cogny.com/images/logo.png",
"sameAs": [
"https://twitter.com/cognyai",
"https://linkedin.com/company/cogny",
"https://github.com/cognyai"
],
"contactPoint": {
"@type": "ContactPoint",
"telephone": "+46-8-123-4567",
"contactType": "customer service",
"availableLanguage": ["English", "Swedish"]
},
"foundingDate": "2023",
"numberOfEmployees": {
"@type": "QuantitativeValue",
"value": 15
}
}
Required: name | Recommended: url, logo, sameAs, contactPoint
Rich result: Knowledge panel
LocalBusiness
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Nordic Coffee Roasters",
"image": "https://example.com/photos/storefront.jpg",
"url": "https://nordiccoffee.se",
"telephone": "+46-8-765-4321",
"priceRange": "$$",
"address": {
"@type": "PostalAddress",
"streetAddress": "Drottninggatan 45",
"addressLocality": "Stockholm",
"addressRegion": "Stockholm",
"postalCode": "111 21",
"addressCountry": "SE"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 59.3293,
"longitude": 18.0686
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"],
"opens": "07:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": ["Saturday", "Sunday"],
"opens": "09:00",
"closes": "16:00"
}
]
}
Required: name, address | Recommended: geo, openingHoursSpecification, telephone, priceRange, image
Rich result: Local pack, knowledge panel with map/hours/phone
Product
{
"@context": "https://schema.org",
"@type": "Product",
"name": "Wireless Noise-Cancelling Headphones",
"image": [
"https://example.com/photos/headphones-front.jpg",
"https://example.com/photos/headphones-side.jpg"
],
"description": "Premium wireless headphones with active noise cancellation, 30-hour battery life, and multipoint Bluetooth connectivity.",
"sku": "WH-1000XM5",
"brand": {
"@type": "Brand",
"name": "AudioTech"
},
"offers": {
"@type": "Offer",
"url": "https://example.com/headphones-wh1000xm5",
"priceCurrency": "USD",
"price": "349.99",
"priceValidUntil": "2025-12-31",
"availability": "https://schema.org/InStock",
"itemCondition": "https://schema.org/NewCondition",
"seller": {
"@type": "Organization",
"name": "AudioTech Store"
}
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.7",
"bestRating": "5",
"reviewCount": "2847"
}
}
Required for rich results: name, image, offers (with price, priceCurrency, availability)
Recommended: sku, brand, aggregateRating, description
Rich result: Product snippet with price, availability, star rating
FAQPage
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is structured data?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Structured data is machine-readable markup added to HTML pages that helps search engines understand your content. It uses the Schema.org vocabulary and is typically implemented in JSON-LD format."
}
},
{
"@type": "Question",
"name": "Does structured data improve SEO rankings?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Structured data does not directly affect rankings. However, it enables rich results that significantly improve click-through rates, which can indirectly improve performance through higher engagement signals."
}
}
]
}
Required: mainEntity array with Question items containing acceptedAnswer
Rich result: Expandable FAQ accordion (up to 10 questions)
HowTo
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to Implement JSON-LD Structured Data",
"description": "A step-by-step guide to adding Schema.org JSON-LD structured data to your website.",
"totalTime": "PT15M",
"estimatedCost": {
"@type": "MonetaryAmount",
"currency": "USD",
"value": "0"
},
"tool": [
{ "@type": "HowToTool", "name": "Text editor or CMS" },
{ "@type": "HowToTool", "name": "Google Rich Results Test" }
],
"step": [
{
"@type": "HowToStep",
"name": "Choose your schema type",
"text": "Identify the primary content type of your page and look up the required properties at schema.org.",
"url": "https://example.com/guide#step1",
"image": "https://example.com/images/step1.png"
},
{