ItemList Schema

ItemList is schema.org's generic ordered-list container — the mechanism Google's Carousel rich result is built on, and the parent type BreadcrumbList inherits from. What it does, what it doesn't, and how the pieces fit.

First published: Jul 2, 2026 · Last updated: Jul 18, 2026 · Advanced
demand #19 in Structured Data#48 in On-Page#231 in Technical SEO#311 on the site
1 evidence signal on this page

ItemList is schema.org's generic 'this is an ordered list of things' container — two properties (itemListElement and a 1-based position) do almost all the work. The single biggest misconception: ItemList by itself is not a rich result and doesn't get you a carousel. Google's Carousel rich result is built on top of ItemList, and only fires when you pair it with a supported companion type (Course list, Movie, Recipe, Restaurant for the classic carousel; LocalBusiness/Product/Event for a newer geo-gated beta limited to the EEA, Turkey, and South Africa). BreadcrumbList is formally a subtype of ItemList — same itemListElement/position mechanics — which is the detail that trips up even experienced implementers. Items must all be the same type on the classic carousel (the beta allows mixing), you need 2+ items (3+ for the beta), and the markup must match visible content. And like all structured data, ItemList is not a ranking factor; its value is rich-result eligibility, not position — and Google is explicit that meeting the requirements never guarantees the feature actually displays.

TL;DR — ItemList is schema.orgSchema markup is code that uses the schema.org vocabulary to label what your content means so search engines can understand it and show rich results. It's most often written in JSON-LD, and it's not a direct ranking factor.’s generic ordered-list container; itemListElement

  • a 1-based position do the work, with itemListOrder and numberOfItems as lesser-used extras (numberOfItems matters for paginated lists). It is not itself a rich result — Google’s Carousel is built on top of it and only fires with a supported companion type: Course listCourse schema (schema.org/Course) marks up educational courses for Google's 'Course list' carousel — which requires at least three courses marked up together, not a single-course card. A richer single-course 'Course Info' feature existed but was deprecated in June 2025., Movie, Recipe, Restaurant for the classic carousel, and LocalBusiness/Product/Event for a newer beta that’s geoGenerative Engine Optimization (GEO) is the practice of optimizing content and brand presence so AI-powered search engines and assistants — Google AI Overviews, ChatGPT, Perplexity — cite, recommend, or mention you when generating answers. Google's position is that it's still SEO.-gated to the EEA, Turkey, and South Africa. Two patterns: summary-page (url-only ListItems) and all-in-one (nested items). Rules: 2+ items (3+ for the beta), all the same type on the classic carousel (the beta allows mixing), markup must match visible content. BreadcrumbListBreadcrumbs are a secondary navigation trail (Home > Category > Page) that shows where a page sits in a site's hierarchy. They create internal links that pass PageRank, and when marked up with BreadcrumbList structured data they can drive the path Google shows in desktop search results. is formally a subtype of ItemList (with HowToSection, HowToStep, OfferCatalog) — the detail most guides miss. And structured dataStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding. is not a ranking factor — its payoff is eligibility and understanding, not position.
Evidence for this claim Schema.org ItemList models an ordered or unordered collection and ListItem can supply item positions and URLs. Scope: Schema.org ItemList vocabulary. Confidence: high · Verified: Schema.org: ItemList Evidence for this claim Google uses ItemList within specific features such as host carousels; a generic valid ItemList has no standalone guaranteed rich result. Scope: Current Google carousel implementation and eligibility. Confidence: high · Verified: Google Search Central: Carousel structured data

What ItemList actually is

Schema.org’s definition is deliberately broad: “A list of items of any sort—for example, Top 10 Movies About Weathermen, or Top 100 Party Songs.” The line that explains why the type needs to exist is the next one: “Not to be confused with HTML lists, which are often used only for formatting.” An <ol>/<ul> conveys “these are a list, in this order” purely by visual convention. ItemList declares the container (ItemList), each entry (ListItem), and each entry’s rank (position) as data a machine can read without inferring anything from layout.

Two properties do the heavy lifting:

  • itemListElement — the array of entries. Schema.org: “For itemListElement values, you can use simple strings (e.g. ‘Peter’, ‘Paul’, ‘Mary’), existing entities, or use ListItem.” For anything that wants a URL or a position (i.e. anything aiming at a rich result), you use ListItem.
  • position — a 1-based integer giving each ListItem its rank.

Two more are documented but skipped by most guides:

  • itemListOrder“Type of ordering (e.g. Ascending, Descending, Unordered).” A declaration, not something Google enforces.
  • numberOfItems“The number of items in an ItemList. Note that some descriptions might not fully describe all items in a list.” This one earns its keep on paginated lists: a “Top 100” split across five pages can use numberOfItems to state the full count even though any one page marks up only twenty entries.

(There’s also aggregateElement for holding aggregate ratings/offers across the list — genuinely niche; you’ll rarely touch it.)

The two implementation patterns

Google’s carousel documentation describes two shapes, and which one you use changes what each ListItem looks like:

Summary page and multiple detail pages

A summary page lists each item briefly, and each entry links out to a dedicated detail page. Here the ListItem is minimal — Google: the summary page defines an ItemList where each ListItem has only three properties: @type (set to ListItem), position (the position in the list), and url (the canonical URLHow search engines pick one canonical URL among duplicates and consolidate signals onto it. of the item’s detail page). The full per-item structured data (the Recipe, the Movie, etc.) lives on each detail page.

All-in-one summary page

Everything lives on one page, so each ListItem carries a nested item containing the full companion-type markup (the whole Recipe object, for instance) rather than just a url. Use this when there are no separate detail pages.

Here’s the accuracy spine of the whole topic. ItemList is a container; Carousel is a rich result built on top of it. ItemList alone, with no supported companion type, does not produce a distinct “list” rich result in classic Google Search. Google’s docs are explicit that carousel eligibility requires both pieces.

To be eligible for a host carouselA carousel rich result (Google calls it a \"host carousel\") is a horizontally scrollable row of cards, all from one site, built by wrapping two or more same-type items in an ItemList with position values. Only a short, shifting list of schema.org types qualifies — and a second, geographically limited beta carousel system now runs alongside the original. rich result, you add ItemList structured data in combination with one of a small, Google-controlled set of supported features. As of Google’s current (2026) documentation, that list is:

  • Course list
  • Movie
  • Recipe
  • Restaurant

That’s it for the classic carousel. Other types — Product, BlogPosting, Event — can carry ItemList markup for organization and machine understanding, but that alone does not make them classic-carousel-eligible.

Carousels (Beta) — the newer, geo-gated program

There’s a second, newer program — Carousels (Beta) — that Google describes as “a list-like rich result that people can scroll horizontally to see more entities from a given site.” It’s the more actively-evolving part of this feature area, and it differs from the classic carousel in three important ways:

  • Different supported types: ItemList combined with LocalBusiness and its subtypes (Restaurant, Hotel, VacationRental), Product, or Event — a broader and different set than the classic four.
  • Geographically limited: it’s available only in EEA countries, Turkey, and South Africa, on desktop and mobile, with the eligible query types varying by region. This is not a global feature — a caveat worth stating plainly, since several third-party write-ups discuss it as if it’s generally available.
  • A higher minimum: the beta requires a summary page plus detail pages with at least three itemListElement.item entries, versus the classic carousel’s two.
  • Mixing is allowed: unlike the classic carousel’s strict same-type rule, Google’s beta documentation says you “can mix and match different types of entities (for example, hotels, restaurants), if needed for your scenario” — don’t carry the classic same-type assumption over when you’re working with the beta.

Treat the beta as “watch this space” rather than a stable, universal feature.

How BreadcrumbList (and a few others) relate to ItemList

This is the single most under-covered, differentiating fact about ItemList, and it clears up a common point of confusion: BreadcrumbList is not a separate, unrelated schema type — it is formally a subtype of ItemList. Schema.org states it directly: “A BreadcrumbList is an ItemList consisting of a chain of linked Web pages, typically described using at least their URL and their name, and typically ending with the current page.” And schema.org’s own “More specific Types” list for ItemList is exactly four entries: BreadcrumbList, HowToSection, HowToStep, and OfferCatalog.

Practically, that means the itemListElement + position mechanics you use for a carousel are literally the same ones you use for breadcrumbsBreadcrumbs are a secondary navigation trail (Home > Category > Page) that shows where a page sits in a site's hierarchy. They create internal links that pass PageRank, and when marked up with BreadcrumbList structured data they can drive the path Google shows in desktop search results. — only the outer @type (BreadcrumbList vs. plain ItemList) and the semantic purpose change. Google frames breadcrumbs the same way: to specify breadcrumbs, you define a BreadcrumbList containing at least two ListItems. If you’ve implemented one, you already understand the other. (The breadcrumb side of this family lives in its own deep dive, and the visible carousel result is the subject of a sibling carousel piece — both sit in this same structured-data sub-cluster.)

Implementation requirements and common validation failures

Most carousel/ItemList failures come down to a handful of documented rules:

  • Minimum item count. Google requires the itemListElement array to contain two or more ListItem elements for the classic carousel (three or more for the beta). One item is not a list.
  • Same-type rule (classic carousel) — the frequent real cause of failures. Google: “All items in the list must be of the same type. For example, if a list is about recipes, only include Recipe items. Don’t mix different types.” A list that mixes Recipes and Products won’t validate as a classic carousel. This rule is specific to the classic program — the beta above explicitly permits mixing entity types, so don’t carry the same-type assumption over when that’s the program you’re targeting.
  • Visible-content parity. A general structured-data policy that’s called out specifically here: the text visible to the user must be similar to the information in the structured data. You can’t mark up items that aren’t genuinely represented in the visible page.
  • Same-domain URLs. A host carousel shows cards from the same site; the item URLs should be on your own domain.
  • Standard structured-data hygiene applies. JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal. is Google’s recommended format, all required properties for your companion type must be present (“Items that are missing required properties are not eligible for rich resultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show.”), and you must not block the marked-up pages from GooglebotGooglebot is Google's web crawler — the software that fetches pages so Google can index and rank them. It comes in two variants, Googlebot Smartphone (primary, under mobile-first indexing) and Googlebot Desktop, and runs an evergreen Chromium renderer. via robots.txtA plain-text file at the root of a host that tells crawlers which URLs they may and may not request. It controls crawling, not indexing — a blocked URL can still be indexed if it's linked from elsewhere. or noindexNoindex is a directive that tells search engines to keep a page out of their index, so it won't appear in search results. It works only on pages a crawler can actually fetch — a page blocked in robots.txt can never be noindexed.. These are the same general guidelines that govern every rich-result type — the broader structured-data hub covers them in full.

Does ItemList schema affect rankings? (No.)

Short answer: no. Structured data is not a ranking factor, and that includes ItemList. This is Google’s consistent, repeated position. At Search Central Live APAC 2025, Gary Illyes made the point that “excessive or redundant schema only adds page bloat and has no additional ranking benefits,” framing schema as an aid to entity understanding and machine features — explicitly not part of the ranking process. Google’s standing position across recent years is the same: structured data is not a ranking signal, and even in cases of structured-data misuse the consequence is loss of rich-result eligibility (via a manual action), not a ranking penalty.

Where does the value come from, then? Two places: rich-result eligibility (a carousel can lift click-through, not position) and machine understanding. On the second point, John Mueller — speaking personally, and explicitly “not official guidance” — noted in early 2026 that some features genuinely benefit from structured data, giving the example that “pricing, shipping, availability for shopping is basically impossible to read in high fidelity & accurately from a text page.” That’s the honest frame: ItemList helps machines understand a structured list; it does not rank it higher.

ItemList vs. CollectionPage — a quick disambiguation

These get confused because both apply to “listing” pages, but they answer different questions. ItemList describes an ordered list of discrete items — the entries and their positions. CollectionPage is a page type that represents a themed collection; it’s about page-level semantics (“this page is a collection of things”) rather than the ordering of specific list items. They’re not mutually exclusive — a category page can be a CollectionPage that also contains an ItemList of its products — but reach for ItemList when what you want to express is “here are the ranked items,” and CollectionPage when you want to express “this page is a curated collection.”

Where this fits

ItemList is a deep dive under the broader structured data hub, alongside the sibling pieces on the visible carousel rich result (ItemList’s main Google application) and on BreadcrumbList (formally a subtype of the very same mechanism). For the fundamentals that govern every type here — the schema.org vocabulary, JSON-LDJSON-LD (JavaScript Object Notation for Linked Data) is a script-based structured data format, typically paired with the schema.org vocabulary to describe page content for search engines and AI systems. Google recommends it over Microdata and RDFa because it's the easiest format to implement and maintain at scale — but all three work, and structured data isn't a ranking signal., the “not a ranking factor” spine, and the shrinking list of supported rich resultsRich results (formerly 'rich snippets') are enhanced search listings — stars, images, prices, breadcrumbs, video thumbnails, and more — that Google and Bing build from structured data. They're a display feature, not a ranking factor, and eligibility never guarantees they'll show. — see the Structured Data hubStructured data is a standardized way of labeling page content (using the schema.org vocabulary in JSON-LD, Microdata, or RDFa) so search engines can understand its meaning. It's not a direct ranking factor — its value is rich results and entity understanding.. That sub-cluster lives inside the broader on-page SEO cluster.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.