SEOMarkup

Article

Schema.org Cheat Sheet: 25 Most-Used Types for SEO

Required and recommended properties for the 25 most common schema types, each with a valid JSON-LD example you can copy straight away.

By Deshan M

A quick-reference guide to the 25 most-used schema.org types. For each type: what it’s for, required and recommended fields (per Google’s structured data documentation), and a minimal valid JSON-LD example.

Copy any example, paste it into a <script type="application/ld+json"> block, fill in your values, and validate with Google Rich Results Test.


Product

Used for: individual product pages on e-commerce sites.
Enables: product rich results, merchant listings, star ratings in SERPs.

Required (per Google): name + at least one of offers, review, or aggregateRating.

{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Classic Leather Wallet",
  "image": "https://example.com/wallet.jpg",
  "description": "Slim bifold wallet in full-grain leather.",
  "sku": "WALLET-001",
  "brand": { "@type": "Brand", "name": "CraftCo" },
  "offers": {
    "@type": "Offer",
    "price": "49.99",
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "priceValidUntil": "2026-12-31"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": "4.7",
    "reviewCount": "128"
  }
}

Offer

Used for: nested inside Product to describe pricing. Rarely used standalone.
Key fields: price, priceCurrency, availability, priceValidUntil.


AggregateRating

Used for: nested inside Product, Recipe, LocalBusiness, and others.
Enables: star ratings in search results.

Required: ratingValue + (reviewCount or ratingCount). Ratings must be visible to users on the page.


Review

Used for: individual customer reviews.
Enables: review snippet in search results (requires author, reviewRating, itemReviewed).

{
  "@context": "https://schema.org",
  "@type": "Review",
  "reviewRating": { "@type": "Rating", "ratingValue": "5" },
  "author": { "@type": "Person", "name": "Alex Kim" },
  "reviewBody": "Great quality, arrived quickly.",
  "datePublished": "2026-03-10",
  "itemReviewed": { "@type": "Product", "name": "Classic Leather Wallet" }
}

Article

Used for: news articles, blog posts, in-depth guides.
Enables: article rich result (top stories, date in snippet).

Required (per Google): headline, image, datePublished, author.

{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "Getting Started with JSON-LD",
  "image": "https://example.com/article-image.jpg",
  "datePublished": "2026-05-01",
  "dateModified": "2026-05-10",
  "author": { "@type": "Person", "name": "Deshan M" },
  "publisher": {
    "@type": "Organization",
    "name": "SEOMarkup.site",
    "logo": { "@type": "ImageObject", "url": "https://www.seomarkup.site/logo.png" }
  }
}

BlogPosting

Used for: blog posts specifically (subtype of Article). Same fields as Article.


NewsArticle

Used for: news journalism. Adds dateline field. Same required fields as Article.


FAQPage

Used for: pages where questions and answers are the primary content.
Enables: FAQ accordion in search results (questions fold out directly in SERP).

Required: mainEntity array of Question objects, each with name and acceptedAnswer.

{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "What is JSON-LD?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "JSON-LD is a method of encoding linked data using JSON, commonly used for structured data markup on web pages."
      }
    },
    {
      "@type": "Question",
      "name": "Do I need technical skills to add structured data?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Basic HTML knowledge is enough. You add a script tag with your JSON-LD to the page — no special tools required."
      }
    }
  ]
}

Recipe

Used for: cooking recipes.
Enables: recipe rich result (image, cook time, rating, calories in SERP).

Required (per Google): name, image, author.
Recommended: description, prepTime, cookTime, totalTime, keywords, recipeYield, recipeCategory, recipeCuisine, nutrition, recipeIngredient, recipeInstructions, aggregateRating.

{
  "@context": "https://schema.org",
  "@type": "Recipe",
  "name": "Simple Tomato Pasta",
  "image": "https://example.com/pasta.jpg",
  "author": { "@type": "Person", "name": "Maria Rossi" },
  "datePublished": "2026-04-01",
  "description": "A quick weeknight pasta with fresh tomatoes and basil.",
  "prepTime": "PT10M",
  "cookTime": "PT20M",
  "totalTime": "PT30M",
  "recipeYield": "4 servings",
  "recipeIngredient": ["400g pasta", "500g tomatoes", "fresh basil", "olive oil", "garlic"],
  "recipeInstructions": [
    { "@type": "HowToStep", "text": "Cook pasta according to package instructions." },
    { "@type": "HowToStep", "text": "Sauté garlic in olive oil, add chopped tomatoes, simmer 15 minutes." },
    { "@type": "HowToStep", "text": "Toss pasta with sauce and fresh basil." }
  ],
  "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.8", "reviewCount": "52" }
}

HowTo

Used for: step-by-step instructional content (non-recipe).
Enables: HowTo rich result with numbered steps in SERP.

Required: name, step (array of HowToStep).

{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "How to Add JSON-LD to Your Website",
  "step": [
    { "@type": "HowToStep", "name": "Write your JSON-LD", "text": "Create a JSON object matching your schema type." },
    { "@type": "HowToStep", "name": "Wrap in a script tag", "text": "Place the JSON inside <script type='application/ld+json'>." },
    { "@type": "HowToStep", "name": "Validate", "text": "Test with Google Rich Results Test." }
  ]
}

LocalBusiness

Used for: physical business locations.
Enables: local knowledge panel, business hours, ratings, address in SERPs.

{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "The Corner Café",
  "image": "https://example.com/cafe.jpg",
  "@id": "https://cornercafe.example.com",
  "url": "https://cornercafe.example.com",
  "telephone": "+1-555-123-4567",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "123 Main St",
    "addressLocality": "Springfield",
    "addressRegion": "IL",
    "postalCode": "62701",
    "addressCountry": "US"
  },
  "openingHoursSpecification": [
    { "@type": "OpeningHoursSpecification", "dayOfWeek": ["Monday","Tuesday","Wednesday","Thursday","Friday"], "opens": "07:00", "closes": "18:00" }
  ],
  "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.5", "reviewCount": "89" }
}

Organization

Used for: companies, institutions, non-profits. Less specific than LocalBusiness.

{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "SEOMarkup.site",
  "url": "https://www.seomarkup.site",
  "logo": "https://www.seomarkup.site/logo.png",
  "sameAs": [
    "https://github.com/deshanm/schema-markup"
  ]
}

Person

Used for: author profiles, about pages for individuals.

{
  "@context": "https://schema.org",
  "@type": "Person",
  "name": "Deshan M",
  "url": "https://www.seomarkup.site",
  "jobTitle": "Software Developer",
  "sameAs": ["https://github.com/deshanm"]
}

Event

Used for: conferences, concerts, webinars, sporting events.
Enables: event rich result with date, venue, and ticket link.

Required (per Google): name, startDate, location.

{
  "@context": "https://schema.org",
  "@type": "Event",
  "name": "Structured Data Workshop",
  "startDate": "2026-09-15T10:00:00",
  "endDate": "2026-09-15T16:00:00",
  "eventStatus": "https://schema.org/EventScheduled",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "location": {
    "@type": "Place",
    "name": "TechHub London",
    "address": { "@type": "PostalAddress", "addressLocality": "London", "addressCountry": "GB" }
  },
  "organizer": { "@type": "Organization", "name": "SEOMarkup.site", "url": "https://www.seomarkup.site" },
  "offers": { "@type": "Offer", "price": "0", "priceCurrency": "GBP", "availability": "https://schema.org/InStock", "validFrom": "2026-06-01" }
}

VideoObject

Used for: video content pages.
Enables: video rich result in SERPs (thumbnail, duration, upload date).

Required (per Google): name, description, thumbnailUrl, uploadDate.

{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "How to Inspect Structured Data with SEOMarkup",
  "description": "A 3-minute walkthrough of the SEOMarkup Chrome extension.",
  "thumbnailUrl": "https://www.seomarkup.site/og-image.png",
  "uploadDate": "2026-01-10",
  "duration": "PT3M24S",
  "embedUrl": "https://www.youtube.com/embed/4nP8GkuxYYo"
}

Used for: site navigation trails on any page type.
Enables: breadcrumb display in SERP snippet (replaces URL with readable path).

{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com/" },
    { "@type": "ListItem", "position": 2, "name": "Blog", "item": "https://example.com/blog/" },
    { "@type": "ListItem", "position": 3, "name": "JSON-LD Guide", "item": "https://example.com/blog/json-ld-guide" }
  ]
}

Course

Used for: online or offline educational courses.
Enables: course rich result.

Required (per Google): name, description, provider.

{
  "@context": "https://schema.org",
  "@type": "Course",
  "name": "Structured Data Fundamentals",
  "description": "Learn how to implement JSON-LD structured data for SEO from scratch.",
  "provider": { "@type": "Organization", "name": "SEOMarkup Academy", "sameAs": "https://www.seomarkup.site" }
}

Book

Used for: books (physical or digital).

{
  "@context": "https://schema.org",
  "@type": "Book",
  "name": "The Structured Data Handbook",
  "author": { "@type": "Person", "name": "Deshan M" },
  "isbn": "9780000000000",
  "numberOfPages": "320",
  "publisher": { "@type": "Organization", "name": "SEOMarkup Press" }
}

JobPosting

Used for: job listings.
Enables: job rich result in Google for Jobs.

Required (per Google): title, description, hiringOrganization, jobLocation, datePosted.

{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "title": "Frontend Developer",
  "description": "Build and maintain web applications...",
  "hiringOrganization": { "@type": "Organization", "name": "TechCorp", "sameAs": "https://techcorp.example.com" },
  "jobLocation": { "@type": "Place", "address": { "@type": "PostalAddress", "addressLocality": "London", "addressCountry": "GB" } },
  "datePosted": "2026-05-01",
  "validThrough": "2026-06-30",
  "employmentType": "FULL_TIME",
  "baseSalary": { "@type": "MonetaryAmount", "currency": "GBP", "value": { "@type": "QuantitativeValue", "value": 70000, "unitText": "YEAR" } }
}

WebSite

Used for: the root homepage. Enables sitelinks search box (with potentialAction).

{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "SEOMarkup.site",
  "url": "https://www.seomarkup.site"
}

SoftwareApplication

Used for: web apps, mobile apps, browser extensions, desktop software.
Enables: application rich result with rating and OS info.

{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "name": "SEOMarkup - Structured Data Inspector",
  "applicationCategory": "BrowserApplication",
  "operatingSystem": "Chrome",
  "offers": { "@type": "Offer", "price": "0", "priceCurrency": "USD" },
  "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.8", "ratingCount": "42" }
}

ImageObject

Used for: describing images in detail; usually nested inside other types (Article.image, Product.image).

{
  "@context": "https://schema.org",
  "@type": "ImageObject",
  "url": "https://example.com/hero-image.jpg",
  "width": "1200",
  "height": "630",
  "caption": "SEOMarkup extension open on a product page"
}

Service

Used for: professional services, agencies, freelancers.

{
  "@context": "https://schema.org",
  "@type": "Service",
  "name": "SEO Structured Data Audit",
  "description": "Full audit of your website's structured data implementation.",
  "provider": { "@type": "Organization", "name": "SEOMarkup" },
  "areaServed": "GB",
  "serviceType": "SEO Consulting"
}

Place

Used for: geographical locations without business details. Often nested inside Event.


QAPage

Used for: pages structured around a single question and multiple answers (Stack Overflow style).
Different from FAQPage — use FAQPage for your own FAQ, QAPage for user-generated Q&A.


Quick reference table

TypeEnablesKey required fields
ProductProduct rich resultsname + offers/reviews
FAQPageFAQ accordion in SERPmainEntity array
RecipeRecipe cardname, image, author
ArticleTop stories, article rich resultheadline, image, datePublished, author
EventEvent rich resultname, startDate, location
LocalBusinessLocal panelname, address
VideoObjectVideo rich resultname, description, thumbnailUrl, uploadDate
CourseCourse rich resultname, description, provider
JobPostingGoogle for Jobstitle, description, hiringOrganization, jobLocation, datePosted
BreadcrumbListBreadcrumb in SERPitemListElement
HowToHow-to rich resultname, step

Tools to validate your markup

Free Chrome Extension

Inspect structured data on any website

Every JSON-LD block on any page, parsed and readable. One click, no account.

Add to Chrome — Free
Feedback