Skip to content

Schema markup examples

One valid JSON-LD example for each of 17 types, built by the same code as our generators and checked against Google's required properties. Copy one as a template, or open the generator to fill it in with your own data.

Article schema example

Google lists no required properties for this type; the example fills the recommended ones.

Open in generator
{
  "@context": "https://schema.org",
  "@type": "BlogPosting",
  "headline": "How we cut our product page weight by 60%",
  "description": "A walkthrough of the image, font and script changes that made our store load in under two seconds on 4G.",
  "url": "https://example.com/blog/page-weight",
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "https://example.com/blog/page-weight"
  },
  "image": [
    "https://example.com/img/page-weight-16x9.jpg",
    "https://example.com/img/page-weight-1x1.jpg"
  ],
  "datePublished": "2026-09-14T09:00:00",
  "dateModified": "2026-09-20T16:30:00",
  "author": [
    {
      "@type": "Person",
      "name": "Maya Okafor",
      "url": "https://example.com/team/maya"
    }
  ],
  "publisher": {
    "@type": "Organization",
    "name": "Example Outfitters",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png"
    }
  }
}

Product schema example

Google requires: name, review or aggregateRating or offers.

Open in generator
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "Trailhead 2 waterproof hiking boot",
  "description": "Full-grain leather mid boot with a waterproof membrane and a Vibram outsole.",
  "image": [
    "https://example.com/img/trailhead2-1x1.jpg",
    "https://example.com/img/trailhead2-4x3.jpg"
  ],
  "brand": {
    "@type": "Brand",
    "name": "Example Outfitters"
  },
  "sku": "TH2-BRN-42",
  "gtin": "0123456789012",
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/p/trailhead-2",
    "price": 149,
    "priceCurrency": "USD",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "hasMerchantReturnPolicy": {
      "@type": "MerchantReturnPolicy",
      "applicableCountry": "US",
      "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow",
      "merchantReturnDays": 30
    },
    "shippingDetails": {
      "@type": "OfferShippingDetails",
      "shippingRate": {
        "@type": "MonetaryAmount",
        "value": 0,
        "currency": "USD"
      },
      "shippingDestination": {
        "@type": "DefinedRegion",
        "addressCountry": "US"
      }
    }
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": 4.6,
    "ratingCount": 212,
    "reviewCount": 87
  }
}

Product Variants schema example

Google requires: name.

Open in generator
{
  "@context": "https://schema.org",
  "@type": "ProductGroup",
  "name": "Trailhead 2 waterproof hiking boot",
  "description": "Full-grain leather mid boot with a waterproof membrane.",
  "url": "https://example.com/p/trailhead-2",
  "brand": {
    "@type": "Brand",
    "name": "Example Outfitters"
  },
  "productGroupID": "TH2",
  "variesBy": [
    "https://schema.org/size",
    "https://schema.org/color"
  ],
  "hasVariant": [
    {
      "@type": "Product",
      "sku": "TH2-BRN-42",
      "name": "Trailhead 2 waterproof hiking boot – Brown – 42",
      "image": "https://example.com/img/th2-brown.jpg",
      "size": "42",
      "color": "Brown",
      "inProductGroupWithID": "TH2",
      "offers": {
        "@type": "Offer",
        "price": 149,
        "priceCurrency": "USD",
        "availability": "https://schema.org/InStock",
        "url": "https://example.com/p/trailhead-2?sku=TH2-BRN-42"
      }
    },
    {
      "@type": "Product",
      "sku": "TH2-BRN-43",
      "name": "Trailhead 2 waterproof hiking boot – Brown – 43",
      "image": "https://example.com/img/th2-brown.jpg",
      "size": "43",
      "color": "Brown",
      "inProductGroupWithID": "TH2",
      "offers": {
        "@type": "Offer",
        "price": 149,
        "priceCurrency": "USD",
        "availability": "https://schema.org/OutOfStock",
        "url": "https://example.com/p/trailhead-2?sku=TH2-BRN-43"
      }
    },
    {
      "@type": "Product",
      "sku": "TH2-BLK-42",
      "name": "Trailhead 2 waterproof hiking boot – Black – 42",
      "image": "https://example.com/img/th2-black.jpg",
      "size": "42",
      "color": "Black",
      "inProductGroupWithID": "TH2",
      "offers": {
        "@type": "Offer",
        "price": 155,
        "priceCurrency": "USD",
        "availability": "https://schema.org/InStock",
        "url": "https://example.com/p/trailhead-2?sku=TH2-BLK-42"
      }
    }
  ]
}

Local Business schema example

Google requires: name, address.

Open in generator
{
  "@context": "https://schema.org",
  "@type": "Dentist",
  "name": "Riverside Family Dental",
  "url": "https://riversidedental.example",
  "telephone": "+1-201-555-0187",
  "priceRange": "$$",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "220 River St",
    "addressLocality": "Hoboken",
    "addressRegion": "NJ",
    "postalCode": "07030",
    "addressCountry": "US"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": 40.7424,
    "longitude": -74.0268
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": [
        "Monday",
        "Tuesday",
        "Wednesday",
        "Thursday"
      ],
      "opens": "08:00",
      "closes": "18:00"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": "Friday",
      "opens": "08:00",
      "closes": "14:00"
    }
  ],
  "sameAs": "https://www.facebook.com/riversidedental.example"
}

FAQ schema example

Google no longer shows this rich result. Google stopped showing FAQ rich results on May 7, 2026 and removed the documentation in June 2026. The markup is still valid schema.org and does no harm.

Google requires: mainEntity, mainEntity.name, mainEntity.acceptedAnswer, mainEntity.acceptedAnswer.text.

Open in generator
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "How long does delivery take?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Orders placed before 2 pm ship the same day. Standard delivery takes 2–4 business days within the continental US."
      }
    },
    {
      "@type": "Question",
      "name": "Can I return worn boots?",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "Yes, within 30 days if they were worn indoors only. Outdoor-worn boots are covered by the 1-year sole warranty instead."
      }
    }
  ]
}

Organization schema example

Google lists no required properties for this type; the example fills the recommended ones.

Open in generator
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "Example Outfitters",
  "alternateName": "ExO",
  "legalName": "Example Outfitters LLC",
  "url": "https://example.com",
  "logo": "https://example.com/logo-512.png",
  "description": "Outdoor footwear and gear made in small batches in Portland, Oregon.",
  "sameAs": [
    "https://www.linkedin.com/company/example-outfitters",
    "https://www.instagram.com/exampleoutfitters"
  ],
  "email": "help@example.com",
  "telephone": "+1-503-555-0110",
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "customer support",
    "telephone": "+1-503-555-0110",
    "email": "help@example.com"
  },
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "1200 NW Marshall St",
    "addressLocality": "Portland",
    "addressRegion": "OR",
    "postalCode": "97209",
    "addressCountry": "US"
  },
  "foundingDate": "2014-03-01"
}

Event schema example

Google requires: name, startDate, location, location.address.

Open in generator
{
  "@context": "https://schema.org",
  "@type": "EducationEvent",
  "name": "Structured Data Clinic: Product Markup",
  "description": "A hands-on evening fixing real merchant-listing warnings. Bring a laptop and a product page.",
  "image": "https://example.com/img/clinic-16x9.jpg",
  "startDate": "2026-11-12T18:30:00+01:00",
  "endDate": "2026-11-12T21:00:00+01:00",
  "eventStatus": "https://schema.org/EventScheduled",
  "eventAttendanceMode": "https://schema.org/OfflineEventAttendanceMode",
  "location": {
    "@type": "Place",
    "name": "Kulturhaus Mitte",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "Auguststraße 21",
      "addressLocality": "Berlin",
      "postalCode": "10117",
      "addressCountry": "DE"
    }
  },
  "offers": {
    "@type": "Offer",
    "url": "https://example.com/clinic/tickets",
    "price": 25,
    "priceCurrency": "EUR",
    "availability": "https://schema.org/InStock",
    "validFrom": "2026-09-01"
  },
  "organizer": {
    "@type": "Organization",
    "name": "Berlin SEO Meetup",
    "url": "https://example.com/meetup"
  }
}

Recipe schema example

Google requires: name, image.

Open in generator
{
  "@context": "https://schema.org",
  "@type": "Recipe",
  "name": "Weeknight lentil ragù",
  "image": [
    "https://example.com/img/ragu-1x1.jpg",
    "https://example.com/img/ragu-16x9.jpg"
  ],
  "description": "A rich, meat-free ragù built on brown lentils and a long-cooked soffritto.",
  "author": {
    "@type": "Person",
    "name": "Luca Benedetti"
  },
  "datePublished": "2026-08-30",
  "prepTime": "PT15M",
  "cookTime": "PT40M",
  "totalTime": "PT55M",
  "recipeYield": "4 servings",
  "recipeCategory": "Dinner",
  "recipeCuisine": "Italian",
  "keywords": "lentils, vegetarian, pasta sauce",
  "nutrition": {
    "@type": "NutritionInformation",
    "calories": "420 calories"
  },
  "recipeIngredient": [
    "1 cup brown lentils, rinsed",
    "1 onion, finely diced",
    "2 carrots, finely diced",
    "400 g crushed tomatoes",
    "2 tbsp olive oil"
  ],
  "recipeInstructions": [
    {
      "@type": "HowToStep",
      "text": "Soften the onion and carrot in olive oil for 10 minutes."
    },
    {
      "@type": "HowToStep",
      "text": "Add lentils, tomatoes and 2 cups of water; simmer 35 minutes."
    },
    {
      "@type": "HowToStep",
      "text": "Season and toss with pasta."
    }
  ]
}

Video schema example

Google requires: name, thumbnailUrl, uploadDate.

Open in generator
{
  "@context": "https://schema.org",
  "@type": "VideoObject",
  "name": "Fixing \"Missing field price\" in Search Console",
  "description": "Step-by-step: find the product, add the Offer, and re-validate the fix.",
  "thumbnailUrl": "https://example.com/video/price-fix-16x9.jpg",
  "uploadDate": "2026-09-02T10:00:00+00:00",
  "duration": "PT6M42S",
  "embedUrl": "https://www.youtube.com/embed/abc123xyz",
  "hasPart": [
    {
      "@type": "Clip",
      "name": "Find the error",
      "startOffset": 0,
      "endOffset": 95,
      "url": "https://example.com/videos/price-fix?t=0"
    },
    {
      "@type": "Clip",
      "name": "Add the Offer",
      "startOffset": 95,
      "endOffset": 300,
      "url": "https://example.com/videos/price-fix?t=95"
    },
    {
      "@type": "Clip",
      "name": "Validate the fix",
      "startOffset": 300,
      "endOffset": 402,
      "url": "https://example.com/videos/price-fix?t=300"
    }
  ]
}

Review schema example

Google requires: author, author.name, itemReviewed, itemReviewed.name, reviewRating, reviewRating.ratingValue.

Open in generator
{
  "@context": "https://schema.org",
  "@type": "Review",
  "itemReviewed": {
    "@type": "Book",
    "name": "The Structured Web"
  },
  "author": {
    "@type": "Person",
    "name": "Priya Raman"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": 4,
    "bestRating": 5,
    "worstRating": 1
  },
  "datePublished": "2026-07-18",
  "reviewBody": "Clear on the why, a little thin on JSON-LD edge cases, but the chapter on entity graphs is worth the price.",
  "publisher": {
    "@type": "Organization",
    "name": "Example Reviews"
  }
}

Job Posting schema example

Google requires: datePosted, description, hiringOrganization, hiringOrganization.name, jobLocation or applicantLocationRequirements, title.

Open in generator
{
  "@context": "https://schema.org",
  "@type": "JobPosting",
  "title": "Technical SEO Specialist",
  "description": "<p>Own structured data and crawl health across 40,000 product pages. You will audit markup, ship fixes with engineering and report on rich-result coverage.</p>",
  "datePosted": "2026-09-20",
  "validThrough": "2026-11-20T23:59:00",
  "employmentType": "FULL_TIME",
  "hiringOrganization": {
    "@type": "Organization",
    "name": "Example Outfitters",
    "sameAs": "https://example.com",
    "logo": "https://example.com/logo-512.png"
  },
  "jobLocation": {
    "@type": "Place",
    "address": {
      "@type": "PostalAddress",
      "streetAddress": "1200 NW Marshall St",
      "addressLocality": "Portland",
      "addressRegion": "OR",
      "postalCode": "97209",
      "addressCountry": "US"
    }
  },
  "baseSalary": {
    "@type": "MonetaryAmount",
    "currency": "USD",
    "value": {
      "@type": "QuantitativeValue",
      "minValue": 78000,
      "maxValue": 95000,
      "unitText": "YEAR"
    }
  },
  "identifier": {
    "@type": "PropertyValue",
    "name": "Example Outfitters",
    "value": "SEO-2026-14"
  },
  "directApply": true
}

Person schema example

Google requires: mainEntity, mainEntity.name.

Open in generator
{
  "@context": "https://schema.org",
  "@type": "ProfilePage",
  "url": "https://example.com/team/maya",
  "dateCreated": "2024-02-01",
  "dateModified": "2026-09-10",
  "mainEntity": {
    "@type": "Person",
    "name": "Maya Okafor",
    "alternateName": "mayaokafor",
    "jobTitle": "Head of SEO",
    "worksFor": {
      "@type": "Organization",
      "name": "Example Outfitters"
    },
    "description": "Maya has run technical SEO for outdoor retailers since 2016 and writes about structured data and site speed.",
    "image": "https://example.com/team/maya.jpg",
    "sameAs": [
      "https://www.linkedin.com/in/mayaokafor-example",
      "https://github.com/mayaokafor-example"
    ]
  }
}

Software App schema example

Google requires: name, offers, offers.price, aggregateRating or review.

Open in generator
{
  "@context": "https://schema.org",
  "@type": "MobileApplication",
  "name": "TrailLog",
  "description": "Offline hiking tracker with elevation profiles and gear checklists.",
  "applicationCategory": "TravelApplication",
  "operatingSystem": "iOS 17+, Android 12+",
  "url": "https://example.com/traillog",
  "offers": {
    "@type": "Offer",
    "price": 0,
    "priceCurrency": "USD"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": 4.7,
    "ratingCount": 3140
  }
}

WebSite schema example

Google requires: name, url.

Open in generator
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "Example Outfitters",
  "alternateName": [
    "ExO",
    "example.com"
  ],
  "url": "https://example.com/",
  "inLanguage": "en"
}

HowTo schema example

Google no longer shows this rich result. Google stopped showing How-to rich results on desktop and mobile in September 2023. The markup remains valid schema.org.

Google requires: name, step, step.text.

Open in generator
{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "Add JSON-LD to a WordPress page without a plugin",
  "totalTime": "PT10M",
  "tool": [
    {
      "@type": "HowToTool",
      "name": "WordPress block editor"
    }
  ],
  "step": [
    {
      "@type": "HowToStep",
      "position": 1,
      "name": "Open the page",
      "text": "Edit the page and add a Custom HTML block at the end."
    },
    {
      "@type": "HowToStep",
      "position": 2,
      "name": "Paste the script",
      "text": "Paste the full <script type=\"application/ld+json\"> block and update the page."
    },
    {
      "@type": "HowToStep",
      "position": 3,
      "name": "Test it",
      "text": "Run the live URL through the Rich Results Test and the Schema Markup Validator."
    }
  ]
}

Course schema example

Google requires: itemListElement, itemListElement.position.

Open in generator
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "item": {
        "@type": "Course",
        "url": "https://academy.example/sd-foundations",
        "name": "Structured Data Foundations",
        "description": "JSON-LD, schema.org types and Google's rules.",
        "provider": {
          "@type": "Organization",
          "name": "Example Academy",
          "sameAs": "https://academy.example"
        }
      }
    },
    {
      "@type": "ListItem",
      "position": 2,
      "item": {
        "@type": "Course",
        "url": "https://academy.example/product-markup",
        "name": "Product Markup for Stores",
        "description": "Offers, returns, shipping and variants.",
        "provider": {
          "@type": "Organization",
          "name": "Example Academy",
          "sameAs": "https://academy.example"
        }
      }
    },
    {
      "@type": "ListItem",
      "position": 3,
      "item": {
        "@type": "Course",
        "url": "https://academy.example/audit-at-scale",
        "name": "Auditing Markup at Scale",
        "description": "Crawl, extract and fix structured data.",
        "provider": {
          "@type": "Organization",
          "name": "Example Academy",
          "sameAs": "https://academy.example"
        }
      }
    }
  ]
}

About these examples

What is a schema markup example?

A JSON-LD block like the Product example below: a @context of https://schema.org, a @type, and properties such as name, image and an Offer with price and priceCurrency. Each example on this page passes the checks Google documents for its type.

Can I copy these examples onto my site?

Use them as templates. Every value is fictional (example.com URLs, invented businesses), so replace them all with facts that are visible on your page before publishing.

Which format do these examples use?

JSON-LD, the format Google recommends. The same data could be expressed as Microdata or RDFa attributes in your HTML.