Resources / Structured data / Template

Product JSON-LD Template

Describe one product and its current offer with identifiers, images, price, availability, condition, and seller.

What this describes

Use Product on a page about one specific product or model. This example includes one purchase offer; remove offers when the page does not present purchasing terms. Use the ProductGroup template when several selectable products are variants of one parent, and the Offer template when transaction terms need their own node.

Copyable template

{
  "@context": "https://schema.org",
  "@type": "Product",
  "@id": "https://www.example.com/products/example-product/#product",
  "url": "https://www.example.com/products/example-product/",
  "name": "Example Product",
  "description": "A product description that matches the page.",
  "image": [
    "https://www.example.com/images/example-product.jpg"
  ],
  "sku": "EXAMPLE-SKU",
  "gtin13": "0123456789012",
  "brand": {
    "@type": "Brand",
    "name": "Example Brand"
  },
  "offers": {
    "@type": "Offer",
    "url": "https://www.example.com/products/example-product/",
    "priceCurrency": "USD",
    "price": "49.00",
    "availability": "https://schema.org/InStock",
    "itemCondition": "https://schema.org/NewCondition",
    "seller": {
      "@id": "https://www.example.com/#organization"
    }
  }
}

Customize it

Validate it

Use the live-page JSON-LD validation tutorial, run Schema.org Validator, and use Google’s Rich Results Test for product eligibility. Compare the live rendered markup with the visible page and commerce feed. Valid markup does not guarantee a merchant listing, product snippet, ranking, or AI use.

Official references

Completion check

  • Confirm product and offer values against the visible page and commerce system.
  • Use identifiers that belong to the exact product described.
  • Revalidate whenever price, availability, or condition changes.