agentic‑readiness docs
/
Build one › Run a scan ›

DocsContentJSON-LD

JSON-LD

Structured data describing what this page is about.

adoption Web baselinetrend ► flatchecked on every pagechecks 6verified 2026-08-12
Set up JSON-LD on your site Where structured data goes, and the shape errors that make a block unreadable to an agent.
Free Set up JSON-LD

Why an agent cares

It is the one part of a page an agent can read without interpreting prose, so a syntax error or a missing required property costs the whole block. We check the shapes with published required properties, not everything a vocabulary permits.

Adoption

Web baseline. Standard equipment on the web. Its absence is the exception rather than its presence.

Direction of travel: ► flat, as at .

JSON-LD is on roughly 41% of pages (Web Almanac 2024, HTTP Archive, about 16M sites).

What we check

Absence is never a finding. Every check below runs only once jsonLdPresent is true, so a site that has not adopted this is not assessed on it and appears in no report. 6 of these 6 can fail it. In a Lumar crawl these land on the page's own row.
CheckSeverityRaisesOn whose authority
jsonLdInvalidJsonhighconformance, usabilityspecification (JSON-LD 1.1)
jsonLdMissingContextmediumusabilityLumar readiness profile
jsonLdMissingTypemediumusabilityLumar readiness profile
jsonLdMissingRequiredPropmediumusabilityGoogle Search profile
jsonLdInvalidValueFormatmediumusabilitySchema.org profile
jsonLdNonSchemaContextlowusabilityLumar readiness profile

Examples

Both of these are fixtures the test suite runs through the real collector, not snippets written for a document: the first is a shape we score as valid, the second is one we flag.

correcthtmltest/e2e/test-pages/content/correct.html
<!-- jsonLdPresent + correct: valid schema.org Article — parseable, schema.org @context, an @type,
         and an ISO-8601 datePublished. (Article has no *required* props per Google, so none are demanded.) -->
    <script type="application/ld+json">
      {
        "@context": "https://schema.org",
        "@type": "Article",
        "headline": "How agent-readiness works",
        "author": { "@type": "Person", "name": "Ada Lovelace" },
        "datePublished": "2026-06-01",
        "publisher": {
          "@type": "Organization",
          "name": "Example",
          "logo": { "@type": "ImageObject", "url": "https://example.com/logo.png" }
        }
      }
    </script>

<!-- jsonLd + correct: a schema.org Event with every Google-required prop — name, an ISO-8601
         startDate, and a physical Place location carrying the required location.address
         (re-verified 2026-07-28; location.name is recommended, not required). -->
    <script type="application/ld+json">
      {
        "@context": "https://schema.org",
        "@type": "Event",
        "name": "Agent Readiness Summit",
        "startDate": "2026-09-01T18:00:00Z",
        "location": {
          "@type": "Place",
          "name": "Example HQ",
          "address": { "@type": "PostalAddress", "streetAddress": "1 Main St", "addressLocality": "London" }
        }
      }
    </script>
present but wronghtmltest/e2e/test-pages/content/issues.html (excerpt)
<!-- jsonLdPresent: yes. jsonLdInvalidJson: the trailing comma makes this block unparseable, so every
         consumer drops it wholesale and no other defect can be evaluated on it. -->
    <script type="application/ld+json">
      {
        "@type": "Article",
        "author": "Ada Lovelace",
        "datePublished": "not-a-date",
      }
    </script>

<!-- jsonLdNonSchemaContext + jsonLdMissingType: parseable, but @context is not
         schema.org and @type is absent. -->
    <script type="application/ld+json">
      { "@context": "https://example.com/ns", "name": "Untyped Thing" }
    </script>

Specifications

Last re-read against the published documents: .