What is Carousel (ItemList) Structured Data? #
- A carousel is a swipeable list of cards shown in Google Search (mostly on mobile).
- It displays multiple items (like courses, movies, recipes, restaurants) from the same website (host carousel).
- To enable this, you add ItemList structured data on a page, combined with a supported content type (Course, Movie, Recipe, Restaurant).
How to Implement Carousel Structured Data #
Choose Your Page Type #
- Summary Page + Multiple Detail Pages:
- Summary page shows brief info and links to separate detail pages for each item.
- The summary page uses an ItemList with ListItems having:
- position (order)
- url (link to detail page)
- position (order)
- Each detail page contains the full structured data for that specific item (like a full Recipe or Movie markup).
- Summary page shows brief info and links to separate detail pages for each item.
- Single All-in-One Page List:
- One page contains all items with full data embedded.
- The ItemList’s ListItems contain the full item data (name, image, rating, etc.).
- No links to other pages required.
- One page contains all items with full data embedded.
JSON-LD Examples #
Summary Page (ItemList with URLs only) #
{
“@context”:”https://schema.org”,
“@type”:”ItemList”,
“itemListElement”:[
{
“@type”:”ListItem”,
“position”:1,
“url”:”https://example.com/peanut-butter-cookies.html”
},
{
“@type”:”ListItem”,
“position”:2,
“url”:”https://example.com/triple-chocolate-chunk.html”
},
{
“@type”:”ListItem”,
“position”:3,
“url”:”https://example.com/snickerdoodles.html”
}
]
}
Detail Page (Full Item Data for One Recipe) #
{
“@context”: “https://schema.org/”,
“@type”: “Recipe”,
“name”: “Peanut Butter Cookies”,
“image”: “https://example.com/photos/1×1/photo.jpg”,
“author”: {
“@type”: “Person”,
“name”: “Wendy Darling”
},
“datePublished”: “2024-03-10”,
“description”: “This Peanut Butter Cookie recipe is everyone’s favorite”,
“prepTime”: “PT10M”,
“cookTime”: “PT25M”,
“recipeCategory”: “Cookies”,
“recipeIngredient”: [
“2 cups of peanut butter”,
“1/3 cup of sugar”
],
“recipeInstructions”: [
{ “@type”: “HowToStep”, “text”: “Mix together the peanut butter and sugar.” },
{ “@type”: “HowToStep”, “text”: “Roll cookie dough into small balls and place on a cookie sheet.” },
{ “@type”: “HowToStep”, “text”: “Bake for 25 minutes.” }
]
}
Single All-in-One Page List (Full items inline) #
{
“@context”: “https://schema.org”,
“@type”: “ItemList”,
“itemListElement”: [
{
“@type”: “ListItem”,
“position”: 1,
“item”: {
“@type”: “Movie”,
“name”: “A Star Is Born”,
“url”: “https://example.com/2024-best-picture-noms#a-star-is-born”,
“image”: “https://example.com/photos/6×9/photo.jpg”,
“dateCreated”: “2024-10-05”,
“director”: {
“@type”: “Person”,
“name”: “Bradley Cooper”
}
}
},
{
“@type”: “ListItem”,
“position”: 2,
“item”: {
“@type”: “Movie”,
“name”: “Bohemian Rhapsody”,
“url”: “https://example.com/2024-best-picture-noms#bohemian-rhapsody”,
“image”: “https://example.com/photos/6×9/photo.jpg”,
“dateCreated”: “2024-11-02”,
“director”: {
“@type”: “Person”,
“name”: “Bryan Singer”
}
}
}
]
}
Important Guidelines #
- All items in one carousel must be the same type (all recipes, all movies, etc.).
- The structured data must match visible content on the page.
- The order shown to users must match the position property.
- At least two ListItems required for carousel eligibility.
- URLs must be unique and within the same domain.
- Use Google’s Rich Results Test to validate your markup.
- After deployment, monitor through Google Search Console for errors and indexing status.
- Allow time for Google to crawl and update your listings (could take several days).
Why Use Carousel Structured Data? #
- Your site can show multiple items in a neat, swipeable carousel on mobile search results.
- Increases user engagement and click-through rates.
- Makes your site look more professional and discoverable.