What is ItemList in Schema.org?
ItemList is the Schema.org type that describes a list of items of any kind, such as the products in a category or a ranking. Each item goes in the itemListElement property: a text, an entity or a ListItem with its position. In Google, ItemList can trigger the carousels that show several pages from the same site in a single result.
Key takeaways
- ItemList describes a list, and the order is set by the position property of each ListItem, not by the order they appear in the code.
- Breadcrumbs (BreadcrumbList) are a type of ItemList: a chain of pages that usually ends at the current one.
- With products, Google uses ItemList in a beta carousel available in the European Economic Area and South Africa, not in the rest of the world.
- A category with ItemList is still a category: Product markup for merchant listings is for single-product pages.
- You mark up everything the page shows, and on a paginated category each page carries its own list.
A category page, a "best sellers" list or a guide to the ten best products for something all have one thing in common: they are lists. ItemList is the Schema.org type that describes them in the page's structured data. It should not be confused with HTML lists, the bulleted kind, which the vocabulary itself sets apart because they are often used only for layout.[1]Schema.org. ItemList It matters to you because categories are the pages of a store that most often go without markup, because ItemList is the type that fits them and because it is easy to expect more from it than Google does with it.
How it works
A list is described with three properties of ItemList's own:[1]Schema.org. ItemList
itemListElement, the items. They can be plain strings ("Peter", "Paul", "Mary"), entities already described or ListItem nodes. Schema.org recommends strings for lists of words, entities for a simple, unordered list, and ListItem for ordered lists or when the same item might appear in different places in different lists.itemListOrder, the type of ordering: ascending, descending or unordered.numberOfItems, how many items the list has. If the page shows only part of it, as on a paginated category, the number is that of the whole list.
The vocabulary adds a warning that changes how the markup is written: the order of the items in the code is not enough to indicate the order of the list. That is what ListItem is for, with its position property.[1]Schema.org. ItemList Each ListItem carries the position, the item itself (item) and, if needed, links to the previous and the next (previousItem and nextItem).[2]Schema.org. ListItem
ItemList has a subtype that almost every store already publishes without knowing it: BreadcrumbList, the one for breadcrumbs, which Schema.org defines as an ItemList made up of a chain of linked pages.[3]Schema.org. BreadcrumbList Schema.org estimates that ItemList is used by between one and ten million domains, with data from Google's index of August 2026.[1]Schema.org. ItemList
What Google does with a marked-up list
Google uses ItemList for one of its rich results: the carousel, a row of cards from a single site that slides horizontally. It has two separate documents, and it helps not to mix them up.
The general carousel combines ItemList with one of four kinds of content: courses, movies, recipes or restaurants. It supports two page shapes: a summary page, where each ListItem carries only @type, position and url, and each URL points to a different page on the same domain; or a page that contains everything, where the URLs point to anchors on the page itself. It asks for at least two ListItems, all of the same type.[4]Google Search Central. Carousel (ItemList) structured data Products are not on that list.
Products are in the second: a beta carousel that combines ItemList with Product, with local businesses or with events, and that can show the price, the rating and the images on each card. It exists only in the countries of the European Economic Area, in Turkey and in South Africa, and in Turkey it does not cover products. For product queries in the countries of the comparison shopping services (CSS) program, the documentation refers you to start with that program.[5]Google Search Central. Structured data carousels (beta) The conditions it sets, according to its version of September 11, 2026:[5]Google Search Central. Structured data carousels (beta)
- The markup goes on a summary or category page with at least three items, which links to other pages on the same site. A page that contains everything does not qualify.
- All the items the page shows are marked up. On a paginated category, each page carries its own ItemList with what it shows; with infinite scroll, what loads at the start.
- Each item needs
name,imageandurl. For a product,offerswithpriceandpriceCurrencyis recommended, and if the currency is missing, Google assumes it is dollars. - The order of the markup is the order of the cards.
And one thing ItemList does not do: turn a category into a product page. Google's product results only accept pages centered on a single product (or on variants of it), and Google recommends marking up product pages, not pages that list products or a category.[6]Google Search Central. Merchant listing (Product, Offer) structured data
On a store
Fictional example. The first page of the "Linen shirts" category of Calella, an invented store, with 14 shirts spread over five pages of three. The block, trimmed to two items:
{
"@context": "https://schema.org",
"@type": "ItemList",
"numberOfItems": 14,
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"item": {
"@type": "Product",
"name": "Calella linen shirt, blue",
"image": "https://www.example.com/img/calella-blue.jpg",
"url": "https://www.example.com/calella-linen-shirt",
"offers": { "@type": "Offer", "price": "39.90", "priceCurrency": "USD" }
}
},
{
"@type": "ListItem",
"position": 2,
"item": {
"@type": "Product",
"name": "Calella linen shirt, white",
"image": "https://www.example.com/img/calella-white.jpg",
"url": "https://www.example.com/calella-linen-shirt-white",
"offers": { "@type": "Offer", "price": "39.90", "priceCurrency": "USD" }
}
}
]
}
It reads like this. numberOfItems says 14 even though the page shows three, because it counts the whole list. Each ListItem has its position, and each product has the three properties the beta carousel requires and an Offer with the currency written out. The URLs lead to the product pages, on the same domain. Page 2 would carry its own block with its three shirts.
To see what a stock theme ships, you can read its templates. Cornerstone, BigCommerce's default theme, released its version 6.22.0 on September 21, 2026: in it, the JSON-LD block for Product goes on the product page and the one for BreadcrumbList in the breadcrumbs, and no template includes ItemList.[7]BigCommerce on GitHub. Cornerstone, the default Stencil theme (release 6.22.0) On a store with that theme, the category only describes where it is, not what it contains.
What gets confused
Believing that adding ItemList to a category is enough to appear in a Google carousel. For products, the only carousel that supports it is in beta and only in the European Economic Area and South Africa, asks for at least three items with name, image and URL, and Google may change its requirements while it remains in beta.[5]Google Search Central. Structured data carousels (beta) Outside those countries, a category well marked up with ItemList describes the page, but there is no product rich result to trigger.[4]Google Search Central. Carousel (ItemList) structured data
How to check it
- Open the page source of a category and search for
ItemList. If it does not appear, see what is there: often it is just the breadcrumbs. - Count the items in the markup and the products you see. They should match: Google asks you to mark up everything the page shows, and on page 2, what is on page 2.[5]Google Search Central. Structured data carousels (beta)
- Go over each ListItem: a
positionthat starts at 1 and does not repeat, and aurlthat leads to a product page on your domain.[1]Schema.org. ItemList[5]Google Search Central. Structured data carousels (beta) - Look at each product's price:
pricewith a decimal point andpriceCurrencyset to the currency you charge in (USD in the example). Without a currency, Google assumes dollars.[5]Google Search Central. Structured data carousels (beta) - Check that the category does not carry a Product block as if it were a product page. Product results are for single-product pages.[6]Google Search Central. Merchant listing (Product, Offer) structured data
Related concept: breadcrumbs (BreadcrumbList)
Breadcrumbs and the product list are the two lists a category carries, and both are marked up with the ItemList family. But they say different things. BreadcrumbList is a chain of linked pages that usually ends at the current page, with the home page or the section at the start and position to rebuild the order.[3]Schema.org. BreadcrumbList The breadcrumbs say where the page is; the category's ItemList says what it contains. A category can, and usually should, carry both.
To keep going, the structured data reading path puts the rest of the terms in order, and the PLP entry explains what else a listing page needs: pagination, filters and what gets indexed.
Synonyms
- English
- ItemList schema, item list markup
- Español
- marcado de lista, lista de elementos
Sources
- [1] Schema.org. ItemList. Accessed . ↑ ↑ ↑ ↑ ↑
- [2] Schema.org. ListItem. Accessed . ↑
- [4] Google Search Central. Carousel (ItemList) structured data. Accessed . ↑ ↑
- [5] Google Search Central. Structured data carousels (beta). Accessed . ↑ ↑ ↑ ↑ ↑ ↑
- [6] Google Search Central. Merchant listing (Product, Offer) structured data. Accessed . ↑ ↑
- [7] BigCommerce on GitHub. Cornerstone, the default Stencil theme (release 6.22.0). Accessed . ↑
Change history
- First English version.
This definition is published under CC BY 4.0. Reuse this definition freely, crediting Clione with a link to this page.
Related terms
PLP
What a PLP is, which pages count as one, how Google crawls them, and how to handle pagination, filters and sorting without losing product pages.
Category page
What a category page is, how it differs from a filter or internal search results, how Google reads it and how to check it.
Breadcrumbs
What website breadcrumbs are, how to mark them up with BreadcrumbList, what changed in Google in 2025 and how to check that the path and the markup match.
Product
What the Schema.org Product type is, which properties it carries, what Google requires for product snippets and merchant listings, and how to check it.
WebSite and SearchAction
What WebSite and SearchAction are in Schema.org, why Google retired the sitelinks search box in 2024 and how it uses WebSite for your site name today.
@id
What the @id identifier in JSON-LD is, how it ties your schema nodes together, why it should not change and how to avoid two products where there is one.
Make your catalog easy for bots to read
Clione fills every product page with what bots read best: the JSON-LD graph with its structured data, the meta description and the FAQs. You review and press Push; then we check your live store so it all stays published.