Carousel Rich Results (Schema)

How Google's carousel rich result actually works — an ItemList wrapping multiple same-type items with position values. Which types qualify, the classic vs. beta split, and why valid ItemList isn't a visible carousel.

First published: Jul 2, 2026 · Last updated: Jul 17, 2026 · Advanced
demand #29 in Structured Data#59 in On-Page#267 in Technical SEO#360 on the site
1 evidence signal on this page

A carousel rich result (Google calls it a "host carousel") is a horizontally scrollable row of cards from one site, built by wrapping two or more same-type items in an ItemList, each carrying a 1-based position that sets the display order. The single most useful thing to know: valid ItemList does not equal a visible carousel — ItemList only becomes carousel-eligible when combined with a supported type. And there are two separate carousel systems right now: the mature, generally available Carousel (ItemList) feature (Course list, Movie, Recipe, Restaurant — with Restaurant gated behind a limited-access form) and a newer Structured data carousels (beta) / host carousel for LocalBusiness subtypes, Product, and Event, available only in the EEA, Turkey, and South Africa. They differ on minimum items (2 vs 3), same-type-only vs mixed-types-allowed, and page-structure options. Almost no competing guide separates them cleanly, and several still list Article as a carousel type — it isn't. Like every rich result, it's eligibility, not entitlement, and it's not a ranking factor.

TL;DR — A carousel rich resultA 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. (“host carousel”) is an ItemList wrapping two or more same-type ListItems, each with a 1-based position that fixes display order. The accuracy spine: valid ItemList ≠ visible carouselItemList is only carousel-eligible when combined with a supported type. There are two separate carousel systems live right now: the mature, generally available Carousel (ItemList) feature (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 — Restaurant is limited-access, sign-up-gated) and the newer 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. carousels (beta) / host carousel (LocalBusiness subtypes, Product, Event), available only in the EEA, Turkey, and South Africa. They differ on minimum items (2 vs 3), same-type- only vs mixed-types-allowed, and page-structure options (classic supports summary

  • detail or all-in-one; beta supports summary + detail only). It’s a display format, not a ranking guarantee; other search engines document their own features separately.
Evidence for this claim Google's carousel structured-data feature uses ItemList with supported item types and has documented eligibility requirements; valid markup does not guarantee display. Scope: Current Google carousel structured-data feature. Confidence: high · Verified: Google Search Central: Carousel structured data Evidence for this claim Schema.org ItemList describes an ordered or unordered list and supports ListItem positions; vocabulary validity is distinct from Google carousel eligibility. Scope: Schema.org vocabulary definition. Confidence: high · Verified: Schema.org: ItemList

Google’s definition is exact: “A carousel is a list-like rich result that people can swipe through on mobile devices. It displays multiple cards from the same site (also known as a host carousel).” The mechanism underneath is always the same — an ItemList container holding multiple ListItem entries, each pointing at an item of a supported type, each carrying a position. Google is explicit that order follows position: “The item’s position in the carousel. This is a 1-based number,” and items “will be shown in the order specified by the position property.”

The generic mechanics of ItemList — its properties, the summary-page pattern, how position and url work — are a topic in their own right; the sibling ItemList schema deep dive owns those. This page is about the specific thing ItemList unlocks: the carousel rich result. And the first rule of that is a myth-buster.

This is the accuracy spine. An ItemList on its own — or an ItemList wrapping an unsupported type like generic Article or BlogPosting — is not carousel- eligible. Google’s requirement is that you “add ItemList structured data in combination with one of the… supported structured data features.” The ItemList is necessary but nowhere near sufficient. This is where most guides go wrong, and it’s also why the creative works schema\"Creative Works schema\" is a practitioner label for the schema.org CreativeWork subtypes used to mark up authored content — Article, AudioObject, Book, Course, Dataset, Movie, Recipe, and VideoObject. hub keeps hammering “valid is not visible” — the same principle, applied here.

Almost no competing guide separates these cleanly, and that’s the single biggest source of confusion in this space. As of mid-2026 there are two differently-scoped carousel systems live in Google Search:

The mature feature, documented on the Carousel (ItemList) page (last updated 2025-12-10 UTC). Google’s supported-type rule: “To be eligible for a host carousel rich result for your site, add ItemList structured data in combination with one of the following supported structured data features: Course list / Movie / Recipe / Restaurant.” Minimum items: “Check that itemListElement contains two or more ListItem elements.” Same type only: “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.”

2. Structured data carousels (beta) — EEA, Turkey, South Africa only

A newer, separate system documented on the Carousels (beta) page (last updated 2026-01-21 UTC — the more actively iterated of the two). Google: “a new carousel rich result that’s in beta, which is a list-like rich result that people can scroll horizontally to see more entities from a given site.” Its type set is completely different: ItemList combined with LocalBusiness and its subtypes (Restaurant, Hotel, VacationRental), Product, or Event. Its minimum is three, not two: “To specify a list, define an ItemList that contains at least three itemListElement.item elements.” And the constraint that matters more than any on-page detail: “This feature is also only available in European Economic Area (EEA) countries, Turkey, and South Africa, on both desktop and mobile devices.” Sites also have to apply via an interest form, not just implement markup, and coverage differs by country. Google flags it as provisional: “This feature is in beta and you may see changes in requirements or guidelines, as we develop this feature.”

Side-by-side

AxisClassic Carousel (ItemList)Structured data carousels (beta)
AvailabilityGenerally availableEEA + Turkey + South Africa only
Eligible typesCourse list, Movie, Recipe, RestaurantLocalBusiness subtypes, Product, Event
Minimum items2+ ListItems3+ items
Mixing typesSame type onlyMixed types allowed
Page structureSummary + detail or all-in-one pageSummary + detail pages only
Sign-up required?No (except Restaurant)Yes — apply via interest form
DevicesHistorically mobile-leaningDesktop and mobile

I re-checked Google’s docs on 2026-07-02, and the master Search Gallery page (last updated 2026-06-15 UTC) corroborates the same four-type rule: “This feature must be combined with one of the following features: Recipe, Course list, Restaurant, Movie.” But there’s an asterisk on that list:

  • Recipe, Course list, and Movie are open to any qualifying site. (For the individual-type detail — Course being a 3+-course carousel only since the June 2025 single-card deprecation, and Movie’s carousel being mobile-only — see the creative works schema\"Creative Works schema\" is a practitioner label for the schema.org CreativeWork subtypes used to mark up authored content — Article, AudioObject, Book, Course, Dataset, Movie, Recipe, and VideoObject. hub, which documents each type’s rich result at the property level.)
  • Restaurant is listed but gated. The Local Business doc spells it out: “The Restaurant carousel is currently limited to a small set of restaurant providers. If you would like to participate, register your interest in our form.” So treating Restaurant as a fourth open-door type — as several third-party guides now do, having copied the updated type list without checking the gating — is a real, checkable inaccuracy. It’s supported on paper, sign-up-only in practice.

And the type that is not on the list: Article. At least one top-ranking guide lists Article as carousel-eligible. It isn’t — Article appears on neither the Carousel doc nor the master gallery. That’s almost certainly confusion with the unrelated, Google-controlled Top Stories feature, which you can’t trigger with your own markup.

Completely different set, per the beta doc: LocalBusiness and its subtypes (the doc names Restaurant, Hotel, VacationRental), Product, and Event. The beta also explicitly permits mixing — a genuine structural difference from the classic carousel: “You can mix and match different types of entities (for example, hotels, restaurants), if needed for your scenario.” Think a “Things to do in Switzerland” page listing both local events and local businesses in one carousel.

Availability is the gotcha, and it’s more granular than “EEA + Turkey + South Africa” — which query types are covered varies by country, per the 2026-01-21 doc: the EEA has the widest coverage (hotels, vacation rentals, ground transportation, flights, local businesses, things to do, shopping); Turkey covers only hotels, vacation rentals, and local businesses; South Africa covers hotels, vacation rentals, things to do, flights, shopping, food delivery, car hire, and bus booking. Because this is a beta, treat every one of those per-country lists as dated, not permanent — Google explicitly flags the feature as subject to change. If your audience is outside those three regions entirely, the beta carousel simply won’t appear no matter how clean your markup is.

How position builds the display order

In both systems, the display-order mechanism is the same: each ListItem carries a 1-based position, and Google promises order-in-markup equals order-on-screen. Two page-structure patterns exist for the classic carousel:

  • Summary page + detail pages. The summary page’s ItemList holds minimal ListItems (@type, position, url), and each linked detail page carries the full type-specific markup (e.g., complete Recipe schema). Google’s constraint: “all URLs in the list must point to different pages on the same domain.”
  • Single all-in-one page. One page contains the full ItemList with each item’s properties embedded, and each ListItem.url points to an anchor on that same page.

The beta only supports the summary + detail pattern — no all-in-one option. And a useful clarification Google added after early ambiguity: for the beta, “the markup must be on the summary page, and you don’t need to add markup to the detail pages in order to be eligible for this feature.”

Eligibility requirements and the honest caveats

  • Content parity. Google’s standard anti-cloaking rule applies: “The text visible to the user must be similar to the information contained in the structured data on the page.”
  • Same type (classic) vs mixed (beta) — covered above; it’s structural, not cosmetic.
  • Eligibility, not entitlement. Passing the Rich Results Test confirms syntax, not display. Google never guarantees a rich result will render, and it checks content/guideline compliance separately from syntax. If your markup validates but no carousel shows, that’s expected behavior, not a bug.
  • Not a ranking factor. This is a display format, not a ranking signal — consistent with Google’s general position that structured data doesn’t affect ranking. I won’t claim it lifts click-through either: that’s a common assumption in the SEO community, but Google doesn’t publish CTR data for carousel placements and I don’t have measured data of my own to back it, so treat any “carousels boost CTR” line (including in earlier versions of this article) as an unverified assumption, not a documented effect.
  • No Bing equivalent. Bing reads ItemList as generic structured data but has no documented host-carousel SERP featureSERP features are any element on a search results page beyond the classic ten blue links — featured snippets, People Also Ask, knowledge panels, sitelinks, image and video packs, AI Overviews, and structured-data-driven rich results. Google documents that losing rich-result eligibility doesn't affect ranking; their SEO relevance is CTR (they redistribute clicks). Some are unlocked by markup; most are purely algorithmic.. Don’t imply cross-engine parity.

Where this sits

Carousel 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. are one specific payoff of 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., inside the broader on-page SEO cluster. The generic ItemList mechanics (its properties, the summary-page pattern in full) live in the sibling ItemList schemaItemList is a schema.org type — a generic container for an ordered or unordered list of items ('a list of items of any sort'). Two properties do most of the work: itemListElement (the array of entries, usually ListItem objects) and position (a 1-based rank on each item). It's the underlying mechanism Google's Carousel rich result is built on, and BreadcrumbList is formally a subtype of it — but ItemList by itself is not a rich result and doesn't affect rankings. deep dive; the per-type rich-result detail for Course, Movie, Recipe, and Restaurant lives in creative works schema\"Creative Works schema\" is a practitioner label for the schema.org CreativeWork subtypes used to mark up authored content — Article, AudioObject, Book, Course, Dataset, Movie, Recipe, and VideoObject. and the local-business docs. This page owns the carousel mechanism — the two systems, the eligible-type lists, and the “valid ItemList is not a visible carousel” rule.

Add an expert note

Pin an expert quote

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