Issue #151 · standard
List pages, category pages, and collection pages are missing ItemList schema.
What is this issue?
List pages, category pages, and collection pages are missing ItemList schema. Without it, Google cannot represent the page's items as a rich result list in search, reducing eligibility for carousel-style search appearances and list-based featured snippets.
Without ItemList schema:
- Your list/collection pages won't be eligible for carousel-style rich results
- Google can't display your page as a list-style rich result
- Listicle articles won't appear in carousel format
- Category/collection pages miss opportunities for enhanced search appearance
- AI search engines can't properly understand list-based content
A proper ItemList schema should include: @type (ItemList), name, itemListElement with ListItem items, each having position, name, and url.
Why does it matter?
ItemList schema is important for list-based content visibility:
- Carousel rich results: Enables pages to appear as carousels in search results
- List-style snippets: Google can display your page as a list-style rich result
- Listicle articles: "10 best SEO tools" type articles can appear in carousel format
- Category pages: Product category or blog topic pages can get enhanced search appearance
- AI search readiness: AI engines use ItemList schema to understand list-based content
- User engagement: Carousel and list-style results have higher click-through rates
Resolving this issue improves your SEO health score by ensuring list-based content is properly structured for enhanced search appearance.
How to fix it
-
Identify list/collection pages: Look for pages with:
- Repeating list structure (
<ul>/<ol>with 3+ items) - Card grids or collection layouts
- Category-page layouts
- Listicle articles ("10 best...", "Top 5...")
- Repeating list structure (
-
Add ItemList JSON-LD structured data to the page's
<head>or before</body>:{ "@context": "https://schema.org", "@type": "ItemList", "name": "Top 5 SEO Tools", "itemListElement": [ { "@type": "ListItem", "position": 1, "name": "Ahrefs", "url": "https://www.example.com/tools/ahrefs" }, { "@type": "ListItem", "position": 2, "name": "SEMrush", "url": "https://www.example.com/tools/semrush" }, { "@type": "ListItem", "position": 3, "name": "Screaming Frog", "url": "https://www.example.com/tools/screaming-frog" } ] } -
Ensure each ListItem has required properties:
position: Sequential number starting from 1name: Item nameurl: URL pointing to the individual item page
-
Use for appropriate content types:
- Listicle articles ("10 best SEO tools")
- Category/collection pages (product category, blog topic pages)
- How-to step summaries (when used alongside
HowToschema) - Recipe collection pages
-
Validate with Google's Rich Results Test
Examples
Example 1: Missing ItemList Schema on Listicle Page
Problematic state:
<!-- Listicle page without ItemList schema -->
<html>
<head>
<title>Top 5 SEO Tools for 2024</title>
</head>
<body>
<h1>Top 5 SEO Tools for 2024</h1>
<ol>
<li><a href="/tools/ahrefs">Ahrefs</a></li>
<li><a href="/tools/semrush">SEMrush</a></li>
<li><a href="/tools/screaming-frog">Screaming Frog</a></li>
</ol>
</body>
</html>
Corrected state:
<!-- Listicle page with ItemList schema -->
<html>
<head>
<title>Top 5 SEO Tools for 2024</title>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "ItemList",
"name": "Top 5 SEO Tools for 2024",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Ahrefs",
"url": "https://www.example.com/tools/ahrefs"
},
{
"@type": "ListItem",
"position": 2,
"name": "SEMrush",
"url": "https://www.example.com/tools/semrush"
},
{
"@type": "ListItem",
"position": 3,
"name": "Screaming Frog",
"url": "https://www.example.com/tools/screaming-frog"
}
]
}
</script>
</head>
<body>
<h1>Top 5 SEO Tools for 2024</h1>
<ol>
<li><a href="/tools/ahrefs">Ahrefs</a></li>
<li><a href="/tools/semrush">SEMrush</a></li>
<li><a href="/tools/screaming-frog">Screaming Frog</a></li>
</ol>
</body>
</html>
Example 2: ItemList for Category Page
Corrected state:
{
"@context": "https://schema.org",
"@type": "ItemList",
"name": "SEO Blog Posts",
"description": "Latest articles about SEO best practices",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "How to Optimize Title Tags",
"url": "https://www.example.com/blog/title-tags"
},
{
"@type": "ListItem",
"position": 2,
"name": "Technical SEO Checklist",
"url": "https://www.example.com/blog/technical-seo"
}
]
}
Example 3: Incomplete ItemList Schema
Problematic state:
{
"@context": "https://schema.org",
"@type": "ItemList",
"name": "Best SEO Tools"
}
Missing required itemListElement property
Corrected state:
{
"@context": "https://schema.org",
"@type": "ItemList",
"name": "Best SEO Tools",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Ahrefs",
"url": "https://www.example.com/tools/ahrefs"
}
]
}
How PixyScan detects this
PixyScan follows these logical steps to detect missing ItemList schema:
-
Detect list pages: The crawler identifies pages with:
- Repeating list structure (
<ul>/<ol>with 3+ items) - Card grids or collection layouts
- Category-page layouts
- URL patterns indicating list pages (
/top-,/best-,/list-)
- Repeating list structure (
-
Extract structured data: The crawler looks for JSON-LD, Microdata, or RDFa blocks on the page
-
Check for ItemList schema: The crawler verifies if any schema block has:
@typeset toItemListitemListElementproperty containing an array ofListItemobjects
-
Validate schema completeness: If ItemList schema is found, the crawler checks for:
- At least one
ListItemin theitemListElementarray - Each
ListItemhasposition,name, andurlproperties
- At least one
-
Trigger conditions: The issue is flagged when:
- Page has list structure but no ItemList schema
- ItemList exists but
itemListElementarray is empty - Any
ListItemis missingposition,name, orurlproperties