Skip to content
AEOprobe
Copy-ready blocks

JSON-LD examples to copy

Four blocks for four kinds of page: the home page, a pricing page, an article and a FAQ. Each one passes our validator and comes with the rule our audit applies to it.

Updated

Four blocks

Every value in square brackets is a placeholder. Replace the whole value, brackets included, with what the page itself shows.

Each schema.org and Google page was read on 14 Oct 2026.

The four JSON-LD blocks and the page each one goes on
BlockGoes onOur validator
OrganizationGoes onHome pageOur validatorNo errors
Product with OfferGoes onPricing pageOur validatorNo errors
ArticleGoes onArticleOur validatorNo errors
FAQPageGoes onFAQOur validatorNo errors

Organization, for the home page

Google recommends “placing this information on your home page, or a single page that describes your organization” and adds “You don’t need to include it on every page of your site.”

What our audit checks

  • The audit records Organization as a type Google supports. It checks no Organization field.
  • Organization counts toward the report’s Schema coverage score. The score looks for five types: Organization, WebSite, Article, FAQPage and HowTo.
  • When no crawled page has any JSON-LD, the report says“The audit found zero JSON-LD schema across the crawled HTML pages.”Its fix: “Add structured data to the homepage and major content templates.”

Our validator reads this block with no errors. Open it in the validator to check your own copy.

Organization JSON-LD
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "name": "[Example Ltd]",
  "url": "[https://www.example.com/]",
  "logo": "[https://www.example.com/logo.png]",
  "description": "[One sentence on what the organization does.]",
  "sameAs": [
    "[https://www.linkedin.com/company/example]",
    "[https://github.com/example]"
  ]
}
</script>

Each field, at its source

Organization fields in schema.org’s words and Google’s
Fieldschema.org saysGoogle says
nameschema.org says“The name of the item.”Google says“The name of your organization.”
urlschema.org says“URL of the item.”Google says“The URL of the website of your organization, if applicable.”
logoschema.org says“An associated logo.”Google says“A logo that is representative of your organization, if applicable.”
descriptionschema.org says“A description of the item.”Google says“A detailed description of your organization, if applicable.”
sameAsschema.org says“URL of a reference Web page that unambiguously indicates the item’s identity.”Google says“The URL of a page on another website with additional information about your organization, if applicable.”

Product with Offer, for a pricing page

One product with one offer per plan. Google says “Currently, product rich results only support pages that focus on a single product”

What our audit checks

  • Without a name, the report says“Product missing required field name”
  • Without offers, review or aggregateRating, it says“Product missing offers, review, or aggregateRating for rich-result eligibility”
  • When no offer has a price, it says“Product offers missing price or priceSpecification.price”
  • The audit lists Product as the type. It reads the Offer items inside for a price but does not list them as types of their own.
  • The audit expects Product markup on a product page: og:type product, or a path such as /products/ with a title or heading that says price, rating or buy. Without it, the report says“Product-like page is missing Product JSON-LD.”Its fix: “Add Product schema with offers and aggregateRating.”

Our validator reads this block with no errors. Open it in the validator to check your own copy.

Product with Offer JSON-LD
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Product",
  "name": "[Example Pro]",
  "offers": [
    {
      "@type": "Offer",
      "name": "[Starter]",
      "price": "[9.00]",
      "priceCurrency": "[EUR]"
    },
    {
      "@type": "Offer",
      "name": "[Team]",
      "price": "[29.00]",
      "priceCurrency": "[EUR]"
    }
  ]
}
</script>

Each field, at its source

Product with Offer fields in schema.org’s words and Google’s
Fieldschema.org saysGoogle says
nameschema.org says“The name of the item.”Google says“The name of the product.”
offersschema.org says“An offer to provide this item—for example, an offer to sell a product, rent the DVD of a movie,…”Google says“You must include one of the following properties:” review, aggregateRating or offers.
offers.nameschema.org says“The name of the item.”Google saysWe quote no Google note on this field.
offers.priceschema.org says“The offer price of a product, or of a price component when attached to PriceSpecification and its subtypes.” schema.org asks for a full stop as the decimal point and no currency symbol in the value.Google says“The offer price of a product.” Required, as price or priceSpecification.price.
offers.priceCurrencyschema.org says“The currency of the price, or a price component when attached to PriceSpecification and its subtypes.”Google says“The currency used to describe the product price, in three-letter ISO 4217 format.” Recommended for product snippets. Required for merchant listings.

Article, for each article page

One block on each article page, describing that article. Google says “There are no required properties; instead, add the properties that apply to your content.”

What our audit checks

  • The audit treats a page as an article when it has og:type article, an article element, or a path with /blog/, /news/, /guide/ or a similar folder. Without Article markup, the report says“Article-like page is missing Article JSON-LD.”Its fix: “Add Article schema with headline, dates, author, publisher, and image.”
  • It matches the type Article by name. A block typed only BlogPosting or NewsArticle still gets that finding.
  • With no author meta tag, it reads author from the JSON-LD: a name, or the first named author in a list. With neither, it says“Article-like page has no author meta tag or JSON-LD author, reducing citation credibility.”
  • With no article:published_time meta tag, it reads datePublished from the JSON-LD. With neither, it says“Article-like page has no article:published_time, making it harder for AI to assess freshness.”

Our validator reads this block with no errors. Open it in the validator to check your own copy.

Article JSON-LD
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "[The article title]",
  "image": [
    "[https://www.example.com/images/article-16x9.jpg]"
  ],
  "datePublished": "[2026-10-14T09:00:00+00:00]",
  "dateModified": "[2026-10-14T09:00:00+00:00]",
  "author": [
    {
      "@type": "Person",
      "name": "[Author Name]",
      "url": "[https://www.example.com/about/author-name]"
    }
  ],
  "publisher": {
    "@type": "Organization",
    "name": "[Example Ltd]",
    "url": "[https://www.example.com/]"
  }
}
</script>

Each field, at its source

Article fields in schema.org’s words and Google’s
Fieldschema.org saysGoogle says
headlineschema.org says“Headline of the article.”Google says“The title of the article. Consider using a concise title, as long titles may be truncated on some devices.”
imageschema.org says“An image of the item. This can be a URL or a fully described ImageObject.”Google says“The URL to an image that is representative of the article.” Google asks for a “minimum of 50K pixels when multiplying width and height” at 16x9, 4x3 or 1x1.
datePublishedschema.org says“Date of first publication or broadcast.”Google says“The date and time the article was first published, in ISO 8601 format.” “We recommend that you provide timezone information; otherwise, we will default to the timezone used by Googlebot.”
dateModifiedschema.org says“The date on which the CreativeWork was most recently modified”Google says“The date and time the article was most recently modified, in ISO 8601 format.”
authorschema.org says“The author of this content or rating.”Google says“The author of the article.”
author.nameschema.org says“The name of the item.”Google says“The name of the author.”
author.urlschema.org says“URL of the item.”Google says“A link to a web page that uniquely identifies the author of the article.”
publisherschema.org says“The publisher of the article in question.”Google saysWe quote no Google note on this field.

FAQPage, for a page of questions

Only on a page that shows the same questions and answers. Google’s general guidelines say “Don’t mark up content that is not visible to readers of the page.”

What our audit checks

  • Without mainEntity, the report says“FAQPage missing required field mainEntity”
  • When mainEntity is not a list, it says“FAQPage mainEntity must be an array”
  • For an item that is not a Question, it says“FAQPage mainEntity item is not a Question”
  • For a question with no acceptedAnswer, it says“FAQPage question missing acceptedAnswer”
  • It lists FAQPage as a type Google no longer supports, with the note“FAQ rich results are no longer shown in Google Search (from 7 May 2026).”Its fix: “Do not count this markup as a current Google Search opportunity.”
  • It looks for visible questions: an FAQ heading, two or more details elements, four or more dt or dd items, or two paragraphs ending in a question mark. Without them, it says“FAQPage markup is present but the page does not appear to expose visible FAQ-style content.”Its fix: “Ensure FAQPage markup exactly matches visible question-and-answer content.”

Our validator reads this block with no errors and one note: Google no longer shows FAQ rich results. Open it in the validator to check your own copy.

FAQPage JSON-LD
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "[The first question, as the page shows it?]",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "[The answer, as the page shows it.]"
      }
    },
    {
      "@type": "Question",
      "name": "[The second question, as the page shows it?]",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "[The answer, as the page shows it.]"
      }
    }
  ]
}
</script>

Each field, at its source

FAQPage fields in schema.org’s words
Fieldschema.org says
mainEntityschema.org says“Indicates the primary entity described in some page or other CreativeWork.”
Questionschema.org says“A specific question - e.g. from a user seeking answers online, or collected in a Frequently Asked Questions (FAQ) document.”
acceptedAnswerschema.org says“The answer(s) that has been accepted as best, typically on a Question/Answer site.”
acceptedAnswer.textschema.org says“The textual content of this CreativeWork.”

Google has no current FAQ page to quote. On 8 May 2026 it wrote: “This feature will no longer appear in Google Search starting May 7, 2026.” On 15 Jun 2026 it removed the documentation: “The FAQ rich result feature is no longer shown in Google Search results”.

Rules for every block

  • The audit reads only <script type="application/ld+json"> elements. It reads lists and @graph at the top of a block, and @type as one name or a list.
  • A block that does not parse as JSON gets “Page contains malformed JSON-LD blocks.” The fix it gives is “Fix invalid JSON-LD syntax.”
  • A page with no typed block gets “Page has zero JSON-LD schema blocks.”
  • On an article, product, review, FAQ, how-to or video page, the audit also looks for BreadcrumbList. Without it, the report says “Non-homepage content is missing BreadcrumbList schema.” None of the four blocks here is a BreadcrumbList.
  • Mark up only what the page shows. Google’s guidelines say (opens in a new tab) “Your structured data must be a true representation of the page content.”
  • Valid markup is not a promise of a rich result. Google says (opens in a new tab) “Google does not guarantee that your structured data will show up in search results”.

See what your pages mark up today

Run the free audit on the live page. It reads the JSON-LD that is there and applies these rules.

Run free audit