Schema.org Templates — Copy-Paste Ready

Every template below is ready to paste into your site. Replace the UPPERCASE placeholders with your actual values. For detailed explanations of each schema type, see the full Schema.org Implementation Guide.

Organization

Place in your root layout. Appears on every page.

organization.json
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "YOUR_COMPANY_NAME",
  "alternateName": "YOUR_SHORT_NAME",
  "legalName": "YOUR_LEGAL_NAME",
  "url": "YOUR_WEBSITE_URL",
  "logo": "YOUR_WEBSITE_URL/images/logo.png",
  "description": "YOUR_COMPANY_DESCRIPTION",
  "foundingDate": "YYYY-MM-DD",
  "founders": [
    { "@type": "Person", "name": "FOUNDER_NAME", "jobTitle": "FOUNDER_TITLE" }
  ],
  "numberOfEmployees": { "@type": "QuantitativeValue", "value": NUMBER_OF_EMPLOYEES },
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "YOUR_STREET_ADDRESS",
    "addressLocality": "YOUR_CITY",
    "addressRegion": "YOUR_STATE",
    "postalCode": "YOUR_POSTAL_CODE",
    "addressCountry": "YOUR_COUNTRY_CODE"
  },
  "contactPoint": {
    "@type": "ContactPoint",
    "contactType": "customer service",
    "email": "YOUR_EMAIL",
    "telephone": "YOUR_PHONE"
  },
  "sameAs": [
    "YOUR_LINKEDIN_URL",
    "YOUR_TWITTER_URL",
    "YOUR_GITHUB_URL",
    "YOUR_CRUNCHBASE_URL",
    "YOUR_FACEBOOK_URL"
  ]
}

WebSite + SearchAction

Add if your site has a search function.

website-search.json
{
  "@context": "https://schema.org",
  "@type": "WebSite",
  "name": "YOUR_SITE_NAME",
  "url": "YOUR_WEBSITE_URL",
  "potentialAction": {
    "@type": "SearchAction",
    "target": {
      "@type": "EntryPoint",
      "urlTemplate": "YOUR_WEBSITE_URL/search?q={search_term_string}"
    },
    "query-input": "required name=search_term_string"
  }
}

FAQPage

Use on any page with question-and-answer content.

faq-page.json
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "YOUR_QUESTION_1",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "YOUR_ANSWER_1"
      }
    },
    {
      "@type": "Question",
      "name": "YOUR_QUESTION_2",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "YOUR_ANSWER_2"
      }
    },
    {
      "@type": "Question",
      "name": "YOUR_QUESTION_3",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "YOUR_ANSWER_3"
      }
    }
  ]
}

Article

Use for blog posts, guides, and editorial content.

article.json
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "YOUR_HEADLINE",
  "description": "YOUR_DESCRIPTION",
  "image": "YOUR_IMAGE_URL",
  "datePublished": "YYYY-MM-DD",
  "dateModified": "YYYY-MM-DD",
  "author": {
    "@type": "Person",
    "name": "YOUR_AUTHOR_NAME",
    "url": "YOUR_AUTHOR_URL"
  },
  "publisher": {
    "@type": "Organization",
    "name": "YOUR_PUBLISHER_NAME",
    "logo": {
      "@type": "ImageObject",
      "url": "YOUR_WEBSITE_URL/images/logo.png"
    }
  },
  "mainEntityOfPage": {
    "@type": "WebPage",
    "@id": "YOUR_ARTICLE_URL"
  }
}

Review

Use for individual review content.

review.json
{
  "@context": "https://schema.org",
  "@type": "Review",
  "name": "YOUR_REVIEW_TITLE",
  "reviewBody": "YOUR_REVIEW_TEXT",
  "datePublished": "YYYY-MM-DD",
  "author": {
    "@type": "Person",
    "name": "YOUR_REVIEWER_NAME"
  },
  "reviewRating": {
    "@type": "Rating",
    "ratingValue": YOUR_RATING_VALUE,
    "bestRating": YOUR_BEST_RATING,
    "worstRating": YOUR_WORST_RATING
  },
  "itemReviewed": {
    "@type": "YOUR_ITEM_TYPE",
    "name": "YOUR_ITEM_NAME",
    "url": "YOUR_ITEM_URL"
  }
}

AggregateRating

Attach to any reviewed entity.

aggregate-rating.json
{
  "@context": "https://schema.org",
  "@type": "AggregateRating",
  "itemReviewed": {
    "@type": "YOUR_ITEM_TYPE",
    "name": "YOUR_ITEM_NAME"
  },
  "ratingValue": YOUR_AVERAGE_RATING,
  "bestRating": YOUR_BEST_RATING,
  "worstRating": YOUR_WORST_RATING,
  "ratingCount": YOUR_RATING_COUNT,
  "reviewCount": YOUR_REVIEW_COUNT
}

HowTo

Use for step-by-step instructional content.

how-to.json
{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "YOUR_HOWTO_TITLE",
  "description": "YOUR_HOWTO_DESCRIPTION",
  "totalTime": "PT_YOUR_TOTAL_TIME",
  "estimatedCost": {
    "@type": "MonetaryAmount",
    "currency": "YOUR_CURRENCY",
    "value": "YOUR_COST_VALUE"
  },
  "step": [
    {
      "@type": "HowToStep",
      "name": "STEP_1_NAME",
      "text": "STEP_1_TEXT"
    },
    {
      "@type": "HowToStep",
      "name": "STEP_2_NAME",
      "text": "STEP_2_TEXT"
    },
    {
      "@type": "HowToStep",
      "name": "STEP_3_NAME",
      "text": "STEP_3_TEXT"
    },
    {
      "@type": "HowToStep",
      "name": "STEP_4_NAME",
      "text": "STEP_4_TEXT"
    }
  ]
}

ItemList

Use for rankings, top-N lists, and comparison pages.

item-list.json
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "name": "YOUR_LIST_TITLE",
  "description": "YOUR_LIST_DESCRIPTION",
  "numberOfItems": YOUR_NUMBER_OF_ITEMS,
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "YOUR_ITEM_1_NAME",
      "url": "YOUR_ITEM_1_URL"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "YOUR_ITEM_2_NAME",
      "url": "YOUR_ITEM_2_URL"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "YOUR_ITEM_3_NAME",
      "url": "YOUR_ITEM_3_URL"
    }
  ]
}

BreadcrumbList

Use on every page for navigation context.

breadcrumb-list.json
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "name": "YOUR_LEVEL_1_NAME",
      "item": "YOUR_WEBSITE_URL"
    },
    {
      "@type": "ListItem",
      "position": 2,
      "name": "YOUR_LEVEL_2_NAME",
      "item": "YOUR_WEBSITE_URL/YOUR_LEVEL_2_PATH"
    },
    {
      "@type": "ListItem",
      "position": 3,
      "name": "YOUR_LEVEL_3_NAME",
      "item": "YOUR_WEBSITE_URL/YOUR_LEVEL_2_PATH/YOUR_LEVEL_3_PATH"
    }
  ]
}

ContactPoint

Use as standalone or embedded in Organization.

contact-point.json
{
  "@context": "https://schema.org",
  "@type": "ContactPoint",
  "contactType": "YOUR_CONTACT_TYPE",
  "email": "YOUR_EMAIL",
  "telephone": "YOUR_PHONE",
  "url": "YOUR_CONTACT_PAGE_URL",
  "availableLanguage": ["YOUR_LANGUAGE_1", "YOUR_LANGUAGE_2"],
  "areaServed": "YOUR_AREA_SERVED"
}

SoftwareApplication

Use for software product pages.

software-application.json
{
  "@context": "https://schema.org",
  "@type": "SoftwareApplication",
  "name": "YOUR_APP_NAME",
  "description": "YOUR_APP_DESCRIPTION",
  "operatingSystem": "YOUR_OPERATING_SYSTEM",
  "applicationCategory": "YOUR_APP_CATEGORY",
  "offers": {
    "@type": "Offer",
    "price": "YOUR_PRICE",
    "priceCurrency": "YOUR_CURRENCY"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": YOUR_RATING_VALUE,
    "ratingCount": YOUR_RATING_COUNT,
    "bestRating": YOUR_BEST_RATING,
    "worstRating": YOUR_WORST_RATING
  }
}

Product

Use for physical or digital product pages.

product.json
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "YOUR_PRODUCT_NAME",
  "description": "YOUR_PRODUCT_DESCRIPTION",
  "image": "YOUR_PRODUCT_IMAGE_URL",
  "sku": "YOUR_SKU",
  "brand": {
    "@type": "Brand",
    "name": "YOUR_BRAND_NAME"
  },
  "offers": {
    "@type": "Offer",
    "url": "YOUR_PRODUCT_URL",
    "price": "YOUR_PRICE",
    "priceCurrency": "YOUR_CURRENCY",
    "availability": "https://schema.org/YOUR_AVAILABILITY_STATUS",
    "priceValidUntil": "YYYY-MM-DD"
  },
  "aggregateRating": {
    "@type": "AggregateRating",
    "ratingValue": YOUR_RATING_VALUE,
    "reviewCount": YOUR_REVIEW_COUNT,
    "bestRating": YOUR_BEST_RATING,
    "worstRating": YOUR_WORST_RATING
  }
}

LocalBusiness

Use instead of Organization for businesses with a physical location.

local-business.json
{
  "@context": "https://schema.org",
  "@type": "LocalBusiness",
  "name": "YOUR_BUSINESS_NAME",
  "description": "YOUR_BUSINESS_DESCRIPTION",
  "url": "YOUR_WEBSITE_URL",
  "telephone": "YOUR_PHONE",
  "email": "YOUR_EMAIL",
  "image": "YOUR_IMAGE_URL",
  "priceRange": "YOUR_PRICE_RANGE",
  "address": {
    "@type": "PostalAddress",
    "streetAddress": "YOUR_STREET_ADDRESS",
    "addressLocality": "YOUR_CITY",
    "addressRegion": "YOUR_STATE",
    "postalCode": "YOUR_POSTAL_CODE",
    "addressCountry": "YOUR_COUNTRY_CODE"
  },
  "geo": {
    "@type": "GeoCoordinates",
    "latitude": YOUR_LATITUDE,
    "longitude": YOUR_LONGITUDE
  },
  "openingHoursSpecification": [
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Monday", "Tuesday", "Wednesday"],
      "opens": "YOUR_OPEN_TIME",
      "closes": "YOUR_CLOSE_TIME"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Thursday", "Friday"],
      "opens": "YOUR_OPEN_TIME",
      "closes": "YOUR_CLOSE_TIME"
    },
    {
      "@type": "OpeningHoursSpecification",
      "dayOfWeek": ["Saturday", "Sunday"],
      "opens": "YOUR_WEEKEND_OPEN_TIME",
      "closes": "YOUR_WEEKEND_CLOSE_TIME"
    }
  ]
}

Validate Before Deploying

Validate all schemas before deploying. Use the Google Rich Results Test and Schema.org Validator. See the full implementation guide for validation workflow.