ItemList Schema Markup
ItemList markup can put a list of courses, movies, recipes or restaurants in a carousel in Google Search. It's also valid markup for any ordered list, such as listicles and product collections, but those don't get a carousel.
Google Search Features
- Carousel A list of movies, recipes or restaurants shown as a scrollable carousel. (Courses have their own course list.) Restaurant carousels are limited to a small set of providers.
- Course list A carousel of courses. It needs an ItemList of at least three courses. English only. A page with a single Course isn't eligible on its own.
When to Use ItemList
Properties
| Property | Type | Status | Description |
|---|---|---|---|
| itemListElement | ListItem (array) | required | Ordered list of items. |
| name | Text | optional | List title. |
| numberOfItems | Integer | optional | Total count. |
| itemListOrder | ItemListOrderType | optional | Ascending, Descending, or Unordered. |
JSON-LD Examples
Product List
A list of top-rated products.
{
"@context": "https://schema.org",
"@type": "ItemList",
"name": "Top 5 Running Shoes",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"url": "https://shoes.com/nike-air"
},
{
"@type": "ListItem",
"position": 2,
"url": "https://shoes.com/adidas-ultra"
},
{
"@type": "ListItem",
"position": 3,
"url": "https://shoes.com/asics-gel"
}
]
} Common Mistakes
Not including position numbers — each ListItem must have a position starting at 1.
Complete Guide to ItemList Schema Markup
ItemList markup enables Google's carousel rich result for courses, movies, recipes and restaurants, displaying the listed items as a horizontally scrollable set of cards. A carousel needs at least two ListItems of the same type (three for courses), either on a summary page that links to each item's own page or on one page that describes them all. Listicles, product roundups and other collections are valid ItemLists, but Google doesn't show them as carousels.
Related Types
Check Your ItemList Markup
The generator doesn't have a ItemList form yet. Paste your markup into the validator to check its types, properties and values, and what Google needs from it.
Open Validator