Item List: missing required properties
seo.schema.schema_rule_missing_item_list
- Outcome class
- Automatic. An automated check that can report a confirmed violation.
- Area
- SEO, structured data
What the rule checks
Scope. Applies to JSON-LD nodes of type ItemList, CollectionPage in the audited document (top level, top-level arrays, @graph entries; full schema.org IRIs count as the short type). Microdata and RDFa are outside this method.
Expectation. ItemList fails when itemListElement is missing or an entry lacks position or url; CollectionPage has no required properties. Missing recommended properties: needs_review (Google's Rich Results Test reports missing recommended properties as non-critical issues (eligible, but a human should decide whether the data exists)). All present passes. Nested property values (an author Person, a provider Organization) are not nodes of their own and are not assessed; a page without a node of the type is not applicable. A page whose structured-data collection fails is not run for every feature, never clean.
Source. https://developers.google.com/search/docs/appearance/structured-data/carousel (ItemList: itemListElement with position and url; recommended: name, numberOfItems; CollectionPage: no required properties)
Detection: detect_structured_data; needs dom.
Failing example
The check reports a violation here. Corpus case schema_rules_incomplete. The page may contain further findings for other rules.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Schema rules corpus — incomplete JSON-LD missing required properties</title>
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"Product","name":"Bare product"}
</script>
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Only"}]}
</script>
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"LocalBusiness"}
</script>
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"FAQPage"}
</script>
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"Event"}
</script>
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"Recipe"}
</script>
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"VideoObject"}
</script>
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"JobPosting"}
</script>
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"SoftwareApplication"}
</script>
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"ProfilePage"}
</script>
<script type="application/ld+json">
{"@context":"https://schema.org","@type":"ItemList","itemListElement":[{"@type":"ListItem","position":1}]}
</script>
</head>
<body>
<h1>Schema rules corpus fixture (incomplete/missing required JSON-LD)</h1>
</body>
</html>Passing example
The check passes here and reports nothing. Corpus case schema_rules_subtypes. The page may contain further findings for other rules.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Article and application subtypes</title>
<script type="application/ld+json">
{"@context": "https://schema.org", "@type": "NewsArticle", "headline": "News", "author": {"@type": "Person", "name": "Ada"}, "datePublished": "2026-01-01", "dateModified": "2026-01-02", "image": "https://example.com/n.jpg"}
</script>
<script type="application/ld+json">
{"@context": "https://schema.org", "@type": "WebApplication", "name": "Web app", "offers": {"@type": "Offer", "price": 0}, "aggregateRating": {"@type": "AggregateRating", "ratingValue": 4.2, "ratingCount": 40}, "applicationCategory": "BusinessApplication", "operatingSystem": "Any"}
</script>
<script type="application/ld+json">
{"@context": "https://schema.org", "@type": "CollectionPage", "name": "Guides", "url": "https://example.com/guides", "mainEntity": {"@type": "ItemList", "itemListElement": []}}
</script>
</head>
<body>
<header><p>Example</p></header>
<main>
<h1>Article and application subtypes</h1>
<p>Structured data corpus page.</p>
</main>
<footer><p>Footer</p></footer>
</body>
</html>This page is generated from the rule catalogue and the rule contracts; see therule overview for how the outcome classes are derived.