Skip to main content

Structured Data

Structured data helps search engines understand your content and display rich results in search. JSON-LD is the recommended format by Google.

Why Use Structured Data?

  • Rich Search Results: Stand out in search with stars, prices, images
  • Knowledge Graph: Appear in Google’s knowledge panel
  • Voice Search: Better voice assistant integration
  • Search Visibility: Improved click-through rates

Organization Schema

Defines your organization’s identity and social profiles.
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Example Company",
  "url": "https://example.com",
  "logo": "https://example.com/logo.png",
  "sameAs": [
    "https://twitter.com/example",
    "https://linkedin.com/company/example",
    "https://facebook.com/example"
  ],
  "contactPoint": {
    "@type": "ContactPoint",
    "telephone": "+1-555-123-4567",
    "contactType": "customer service",
    "email": "[email protected]",
    "areaServed": "US",
    "availableLanguage": ["en"]
  }
}
</script>
Use on: Homepage, About page

Article Schema

For blog posts, news articles, and content pages.
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "How to Choose the Right Widget",
  "description": "Complete guide to selecting widgets for your needs.",
  "image": "https://example.com/article-image.jpg",
  "author": {
    "@type": "Person",
    "name": "Jane Smith",
    "url": "https://example.com/authors/jane-smith"
  },
  "publisher": {
    "@type": "Organization",
    "name": "Example Blog",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png"
    }
  },
  "datePublished": "2024-01-15",
  "dateModified": "2024-01-20",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://example.com/blog/widget-guide"
  }
}
</script>
Rich result: Article snippet with author, date, and image in search Use on: Blog posts, news articles, guides

Product Schema

For e-commerce product pages.
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Blue Widget Pro",
  "image": [
    "https://example.com/blue-widget-1.jpg",
    "https://example.com/blue-widget-2.jpg"
  ],
  "description": "Premium blue widget with advanced features and 2-year warranty.",
  "sku": "BWP-001",
  "mpn": "925872",
  "brand": {
    "@type": "Brand",
    "name": "WidgetCo"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/products/blue-widget",
    "priceCurrency": "USD",
    "price": "49.99",
    "priceValidUntil": "2024-12-31",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "seller": {
      "@type": "Organization",
      "name": "Example Store"
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.8",
    "reviewCount": "1250",
    "bestRating": "5",
    "worstRating": "1"
  },
  "review": [
    {
      "@type": "Review",
      "reviewRating": {
        "@type": "Rating",
        "ratingValue": "5",
        "bestRating": "5"
      },
      "author": {
        "@type": "Person",
        "name": "John Doe"
      },
      "reviewBody": "Excellent product! Very durable and well-designed."
    }
  ]
}
</script>
Rich result: Product snippet with price, availability, and ratings Use on: Product pages

FAQ Schema

For frequently asked questions pages.
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What colors are available?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Our widgets come in blue, red, green, and yellow. Custom colors are available for bulk orders of 100+ units."
      }
    },
    {
      "@type": "Question",
      "name": "What is the warranty?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "All widgets include a 2-year manufacturer warranty covering defects in materials and workmanship."
      }
    },
    {
      "@type": "Question",
      "name": "Do you offer international shipping?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes, we ship to over 50 countries worldwide. Shipping costs and delivery times vary by location."
      }
    }
  ]
}
</script>
Rich result: Expandable FAQ section in search results Use on: FAQ pages, help centers, product pages with FAQs
For navigation breadcrumbs.
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "Home",
      "item": "https://example.com"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "Products",
      "item": "https://example.com/products"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "Widgets",
      "item": "https://example.com/products/widgets"
    },
    {
      "@type": "ListItem",
      "position": 4,
      "name": "Blue Widgets",
      "item": "https://example.com/products/widgets/blue"
    }
  ]
}
</script>
Rich result: Breadcrumb trail in search results Use on: Any page with breadcrumb navigation

LocalBusiness Schema

For businesses with physical locations.
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "Example Widget Store",
  "image": "https://example.com/store-photo.jpg",
  "@id": "https://example.com",
  "url": "https://example.com",
  "telephone": "+1-555-123-4567",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main Street",
    "addressLocality": "Springfield",
    "addressRegion": "IL",
    "postalCode": "62701",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 39.7817,
    "longitude": -89.6501
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": [
        "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday",
        "Friday"
      ],
      "opens": "09:00",
      "closes": "18:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Saturday",
      "opens": "10:00",
      "closes": "16:00"
    }
  ],
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "342"
  }
}
</script>
Rich result: Business info with hours, location, ratings in search and maps Use on: Location pages, contact pages

Event Schema

For events, webinars, and conferences.
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "Widget Conference 2024",
  "description": "Annual conference for widget enthusiasts and professionals.",
  "image": "https://example.com/event-banner.jpg",
  "startDate": "2024-06-15T09:00:00-05:00",
  "endDate": "2024-06-17T17:00:00-05:00",
  "eventStatus": "https://schema.org/EventScheduled",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "location": {
    "@type": "Place",
    "name": "Convention Center",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "456 Event Plaza",
      "addressLocality": "Chicago",
      "addressRegion": "IL",
      "postalCode": "60601",
      "addressCountry": "US"
    }
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/events/widget-conference-2024",
    "price": "299.00",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "validFrom": "2024-01-01"
  },
  "organizer": {
    "@type": "Organization",
    "name": "Widget Association",
    "url": "https://example.com"
  }
}
</script>
Rich result: Event card with date, location, and ticket info Use on: Event pages, webinar pages

Recipe Schema

For cooking recipes.
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Recipe",
  "name": "Chocolate Chip Cookies",
  "image": "https://example.com/cookies.jpg",
  "description": "Classic chocolate chip cookies that are crispy on the outside and chewy on the inside.",
  "keywords": "cookies, chocolate chip, baking, dessert",
  "author": {
    "@type": "Person",
    "name": "Jane Smith"
  },
  "datePublished": "2024-01-15",
  "prepTime": "PT15M",
  "cookTime": "PT12M",
  "totalTime": "PT27M",
  "recipeYield": "24 cookies",
  "recipeCategory": "Dessert",
  "recipeCuisine": "American",
  "nutrition": {
    "@type": "NutritionInformation",
    "calories": "150 calories"
  },
  "recipeIngredient": [
    "2 1/4 cups all-purpose flour",
    "1 tsp baking soda",
    "1 cup butter, softened",
    "3/4 cup granulated sugar",
    "2 cups chocolate chips"
  ],
  "recipeInstructions": [
    {
      "@type": "HowToStep",
      "text": "Preheat oven to 375°F."
    },
    {
      "@type": "HowToStep",
      "text": "Mix flour and baking soda in a bowl."
    },
    {
      "@type": "HowToStep",
      "text": "Cream butter and sugars until fluffy."
    }
  ],
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.9",
    "reviewCount": "523"
  }
}
</script>
Rich result: Recipe card with image, cook time, and ratings Use on: Recipe pages, food blogs

Video Schema

For video content.
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "How to Use a Widget",
  "description": "Step-by-step tutorial on using our blue widget.",
  "thumbnailUrl": "https://example.com/video-thumbnail.jpg",
  "uploadDate": "2024-01-15",
  "duration": "PT5M30S",
  "contentUrl": "https://example.com/video.mp4",
  "embedUrl": "https://example.com/embed/video-123",
  "interactionStatistic": {
    "@type": "InteractionCounter",
    "interactionType": "https://schema.org/WatchAction",
    "userInteractionCount": 12450
  }
}
</script>
Rich result: Video thumbnail in search results Use on: Video pages, tutorial pages

Validation Tools

Google Rich Results Test

Test how Google sees your structured data:

Schema.org Validator

Validate against official Schema.org specification:

Testing in Code

// Validate JSON-LD before deploying
const jsonld = {
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Blue Widget"
};

try {
  JSON.parse(JSON.stringify(jsonld));
  console.log('Valid JSON-LD');
} catch (error) {
  console.error('Invalid JSON-LD:', error);
}

Best Practices

General Guidelines

  1. Use JSON-LD - Google’s preferred format
  2. Place in <head> or <body> - Both work, <head> preferred
  3. Be truthful - Only include accurate information
  4. Match visible content - Structured data should reflect page content
  5. Test before deploying - Use validation tools
  6. One schema per page - Or multiple if appropriate
  7. Keep updated - Update schema when content changes

Common Mistakes

❌ Incorrect date format:
"datePublished": "01/15/2024"  // Wrong
✅ ISO 8601 format:
"datePublished": "2024-01-15"  // Correct
❌ Missing required properties:
{
  "@type": "Product",
  "name": "Widget"  // Missing offers, image
}
✅ Include all required properties:
{
  "@type": "Product",
  "name": "Widget",
  "image": "https://example.com/widget.jpg",
  "offers": { ... }
}

Multiple Schemas

You can include multiple schemas on one page:
<!-- Organization -->
<script type="application/ld+json">
{ "@type": "Organization", ... }
</script>

<!-- Breadcrumbs -->
<script type="application/ld+json">
{ "@type": "BreadcrumbList", ... }
</script>

<!-- Product -->
<script type="application/ld+json">
{ "@type": "Product", ... }
</script>

Schema Types Reference

Most Common Types

  • Organization - Company info
  • Article - Blog posts, news
  • Product - E-commerce items
  • FAQ - Question/answer pages
  • Breadcrumbs - Navigation
  • LocalBusiness - Physical locations
  • Event - Events, webinars
  • Recipe - Cooking recipes
  • VideoObject - Video content
  • Review - Product/service reviews
  • HowTo - Step-by-step guides
  • JobPosting - Job listings

Full Schema.org Types

Explore all 800+ types at https://schema.org/docs/schemas.html

Additional Resources

Build docs developers (and LLMs) love