3+
Minimum entities required per ItemList for carousel eligibility
3
Supported content types: LocalBusiness, Product, and Event
EEA
Currently available in EEA countries, Turkey, and South Africa only
7
Implementation steps to go from zero markup to carousel eligibility

What Are Google Structured Data Carousels — And Why Do They Matter?

A Google structured data carousel is a horizontally scrollable rich result that appears directly in Google Search. It displays multiple entities from a single website — restaurants, hotels, products, events — as individual tiles. Each tile can show the entity's image, name, price range, and star rating at a glance.

This is fundamentally different from a standard organic listing. Instead of one blue link, your site gets a visually rich row of items. Users can scroll through your offerings without ever leaving the search results page.

The feature is currently in beta, which means Google is actively refining it. Requirements may shift as the feature matures. But implementing it now — correctly — puts you ahead of the vast majority of websites. Google Search Central

🧾 Why This Feature Is a Strategic SEO Priority

Host carousels — where all tiles come from a single domain — give publishers significantly more SERP real estate than a standard listing. A travel site, restaurant directory, or e-commerce platform that implements carousels correctly could occupy a disproportionately large visual space in results.

Beyond visual prominence, the machine-readable entity data you publish via ItemList markup directly feeds into how large language models understand your site's topical authority. This is a dual benefit: better rich results today, stronger LLM citation signals for tomorrow.

The Difference Between a Host Carousel and a Multi-Source Carousel

Google shows two types of carousel results in search. A multi-source carousel aggregates results from multiple different websites — commonly seen for news, recipes, or top-10 roundups. That type of carousel does not require structured data from you directly.

A host carousel — the focus of this guide — shows results exclusively from one website. All tiles scroll from your domain alone. This is the carousel type that structured data carousels beta unlocks. It requires you to deliberately implement ItemList markup on a summary or category page.

Geographic Availability: Where Carousel Rich Results Currently Work

Before investing time in implementation, confirm whether your business or audience falls within the current eligible regions. Google has been explicit: carousel rich results are not globally available yet.

Region Supported Query Types Status
European Economic Area (EEA) Hotels, vacation rentals, ground transportation, flights, local businesses, events/tours/activities, shopping Available
Turkey Hotels, vacation rentals, local businesses only Partial
South Africa Hotels, vacation rentals, events/tours, flights, shopping, food delivery, car hire, bus booking Available
India, US, UK (outside EEA), Asia-Pacific Not yet available Not Live

If your site serves users in the EEA or Turkey, you must register interest through Google's official forms. For hotels, vacation rentals, local businesses, events, tours, and ground transportation, use the Google Search aggregator features interest form. For shopping queries in CSS Program countries, you need to enrol through the Comparison Shopping Services programme.

ℹ️ Note for Indian & Global Marketers

If your site is based in India — including Chennai, Bengaluru, Mumbai, or Delhi — carousel rich results are not live in your region yet. However, implementing the correct ItemList structured data now future-proofs your site for when Google expands the feature globally.

More importantly: the same structured data that enables carousels also strengthens your entity graph, improves Knowledge Panel eligibility, and increases your citations in AI Mode and large language model outputs. The investment has immediate returns even outside eligible regions.

The 7-Step Process to Implement Structured Data Carousels

Google's implementation path is clear and well-documented. Follow these seven steps precisely to give your pages the best chance of appearing as carousel rich results.

  1. Select a single summary page that lists at least three distinct entities — for example, a "Top Hotels in Paris" category page that links to individual hotel detail pages on your domain.
  2. Identify your content type — LocalBusiness (including Restaurant, Hotel, VacationRental subtypes), Product, or Event. Choose the most specific sub-type available for your scenario.
  3. Add ItemList structured data in JSON-LD format inside a <script type="application/ld+json"> block in the <head> of your summary page.
  4. Include all required properties: at minimum, each item in the list needs a name, a url pointing to its standalone detail page, and at least one image.
  5. Add recommended properties relevant to your content type: priceRange for local businesses, aggregateRating for any entity, amenityFeature for lodging, servesCuisine for restaurants, and offers for products and events.
  6. Validate your markup using the Google Rich Results Test. Fix any errors or warnings before deploying.
  7. Deploy, inspect, and monitor using the Google Search Console URL Inspection tool and the Rich Results report to track eligibility and appearance over time.
Learn Structured Data Hands-On

Master Schema Markup, Rich Results & Technical SEO at ZenX Academy

Our Digital Marketing Course in Chennai includes live schema markup labs, Rich Results Test workshops, and real site audits. Build skills that earn results — not just certificates.

Enrol Free Today

ItemList Structured Data — The Core of Every Carousel

The ItemList type is the container that holds all the entities in your carousel. Every carousel implementation begins here. All URLs inside the list must point to different pages on the same domain as the summary page.

Each entry inside itemListElement is a ListItem. A ListItem has two required properties: position (a 1-based integer indicating order) and item (the actual entity object with its own properties). The order you specify in the markup is the order Google uses to sequence tiles in the carousel.

Required Properties — What Every Item Needs

Every entity in your ItemList — regardless of type — needs three required properties at the item level. These are non-negotiable for carousel eligibility.

Property Type Notes
name Text The entity's display name. HTML formatting is ignored. Shown as the tile title in the carousel.
url URL Must link to a standalone detail page for this specific entity. No anchor links. All URLs must be unique and on the same domain as the summary page.
image URL or ImageObject At least one image of the entity. Do not use logos. Google recommends three images in 16×9, 4×3, and 1×1 aspect ratios at minimum 50K total pixels each.

Image quality is often the deciding factor in whether a carousel tile looks compelling enough to generate clicks. Google recommends providing multiple high-resolution images in three aspect ratios so it can select the best fit depending on the display context.

The minimum of 50,000 pixels means a 1×1 square image should be at least 224×224 pixels — though in practice, aiming for 800×800 or above produces far better results in SERP display. Always include 16×9, 4×3, and 1×1 variants when possible.

Type-Specific Properties — LocalBusiness, Product, and Event

LocalBusiness and Its Subtypes

The LocalBusiness type covers physical locations and service providers. When your entities are hotels, restaurants, cafés, vacation rentals, spas, or any brick-and-mortar business, use LocalBusiness or its most specific sub-type.

The most commonly used sub-types for carousel carousels are Restaurant, Hotel, and VacationRental. The more specific your type, the more recommended properties become available — and the richer your carousel tile can appear.

Property Applicable To Notes
priceRange All LocalBusiness Use "$", "$$", "$$$", "$$$$" or a range like "$–$$$". Must be fewer than 12 characters or Google ignores it.
aggregateRating All LocalBusiness Nest a ratingValue and reviewCount inside an AggregateRating object. Default scale is 1–5. Use bestRating and worstRating if your scale differs.
servesCuisine Restaurant only Text value for cuisine type: "Italian", "South Indian", "Japanese", etc.
amenityFeature LodgingBusiness (Hotel, VacationRental) only Use LocationFeatureSpecification with a name and value. Examples: beachAccess (boolean), freeBreakfast (boolean), internetType (string).

Note that amenityFeature is only available when you use the LodgingBusiness type or one of its sub-types. Generic types like LocalBusiness do not expose this property in structured data. Use the most specific type possible to unlock the richest set of optional properties.

Product Schema for Carousel Rich Results

If your summary page lists products — a "Top Coats of the Season" page, "Best Running Shoes Under ₹5000", or similar — use the Product type for each item. The key recommended property here is offers, which surfaces pricing directly in the carousel tile.

You can use either Offer (for a single price) or AggregateOffer (for a price range when multiple variants exist). Always include priceCurrency in ISO 4217 format — for example, INR for Indian Rupees, EUR for Euros, USD for US Dollars. If currency is omitted, Google defaults to USD.

Event Schema for Carousel Rich Results

For "Things to Do" style pages — tour listings, activity roundups, local event guides — use the Event type. Events support the same offers structure as products. If an event is free to attend, set offers.price to 0 explicitly.

You can mix Event and LocalBusiness entities on the same summary page when appropriate. A "Top Things to Do in Chennai" page might include both ticketed events and free local attractions. Google supports this mixed-type approach within a single ItemList.

JSON-LD Code Examples — Ready to Implement

The following examples show complete, valid JSON-LD blocks for three common carousel scenarios. Each is modelled after Google's official documentation structure and includes all required plus key recommended properties. Adapt the values to your real entities before deploying.

Restaurant Carousel Example

JSON-LD · Restaurant ItemList
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "item": {
        "@type": "Restaurant",
        "name": "Murugan Idli Shop",
        "image": [
          "https://example.com/photos/1x1/murugan.jpg",
          "https://example.com/photos/4x3/murugan.jpg",
          "https://example.com/photos/16x9/murugan.jpg"
        ],
        "priceRange": "$",
        "servesCuisine": "South Indian",
        "aggregateRating": {
          "@type": "AggregateRating",
          "ratingValue": 4.7,
          "reviewCount": 3820
        },
        "url": "https://www.example.com/restaurants/murugan-idli-shop"
      }
    },
    {
      "@type": "ListItem",
      "position": 2,
      "item": {
        "@type": "Restaurant",
        "name": "Sangeetha Veg Restaurant",
        "image": [
          "https://example.com/photos/1x1/sangeetha.jpg",
          "https://example.com/photos/4x3/sangeetha.jpg",
          "https://example.com/photos/16x9/sangeetha.jpg"
        ],
        "priceRange": "$",
        "servesCuisine": "South Indian Vegetarian",
        "aggregateRating": {
          "@type": "AggregateRating",
          "ratingValue": 4.5,
          "reviewCount": 2140
        },
        "url": "https://www.example.com/restaurants/sangeetha"
      }
    },
    {
      "@type": "ListItem",
      "position": 3,
      "item": {
        "@type": "Restaurant",
        "name": "Annalakshmi Restaurant",
        "image": [
          "https://example.com/photos/1x1/annalakshmi.jpg",
          "https://example.com/photos/4x3/annalakshmi.jpg",
          "https://example.com/photos/16x9/annalakshmi.jpg"
        ],
        "priceRange": "$$",
        "servesCuisine": "Indian Vegetarian",
        "aggregateRating": {
          "@type": "AggregateRating",
          "ratingValue": 4.6,
          "reviewCount": 1590
        },
        "url": "https://www.example.com/restaurants/annalakshmi"
      }
    }
  ]
}

Hotel Carousel Example

JSON-LD · Hotel ItemList with amenityFeature
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "item": {
        "@type": "Hotel",
        "name": "ITC Grand Chola",
        "image": [
          "https://example.com/photos/1x1/itc.jpg",
          "https://example.com/photos/4x3/itc.jpg",
          "https://example.com/photos/16x9/itc.jpg"
        ],
        "priceRange": "$$$$",
        "amenityFeature": {
          "@type": "LocationFeatureSpecification",
          "name": "swimmingPool",
          "value": true
        },
        "aggregateRating": {
          "@type": "AggregateRating",
          "ratingValue": 4.8,
          "reviewCount": 5240
        },
        "url": "https://www.example.com/hotels/itc-grand-chola"
      }
    },
    {
      "@type": "ListItem",
      "position": 2,
      "item": {
        "@type": "Hotel",
        "name": "The Leela Palace Chennai",
        "image": [
          "https://example.com/photos/1x1/leela.jpg",
          "https://example.com/photos/4x3/leela.jpg",
          "https://example.com/photos/16x9/leela.jpg"
        ],
        "priceRange": "$$$$",
        "amenityFeature": {
          "@type": "LocationFeatureSpecification",
          "name": "freeBreakfast",
          "value": true
        },
        "aggregateRating": {
          "@type": "AggregateRating",
          "ratingValue": 4.9,
          "reviewCount": 3110
        },
        "url": "https://www.example.com/hotels/leela-palace-chennai"
      }
    },
    {
      "@type": "ListItem",
      "position": 3,
      "item": {
        "@type": "Hotel",
        "name": "Hyatt Regency Chennai",
        "image": [
          "https://example.com/photos/1x1/hyatt.jpg",
          "https://example.com/photos/4x3/hyatt.jpg",
          "https://example.com/photos/16x9/hyatt.jpg"
        ],
        "priceRange": "$$$",
        "amenityFeature": {
          "@type": "LocationFeatureSpecification",
          "name": "internetType",
          "value": "Free"
        },
        "aggregateRating": {
          "@type": "AggregateRating",
          "ratingValue": 4.6,
          "reviewCount": 4780
        },
        "url": "https://www.example.com/hotels/hyatt-regency-chennai"
      }
    }
  ]
}

Product Carousel Example

JSON-LD · Product ItemList with AggregateOffer pricing
{
  "@context": "https://schema.org",
  "@type": "ItemList",
  "itemListElement": [
    {
      "@type": "ListItem",
      "position": 1,
      "item": {
        "@type": "Product",
        "name": "ProStride Running Shoes X1",
        "image": [
          "https://example.com/photos/1x1/prostride.jpg",
          "https://example.com/photos/4x3/prostride.jpg",
          "https://example.com/photos/16x9/prostride.jpg"
        ],
        "offers": {
          "@type": "AggregateOffer",
          "lowPrice": 3499,
          "highPrice": 4299,
          "priceCurrency": "INR"
        },
        "aggregateRating": {
          "@type": "AggregateRating",
          "ratingValue": 4.6,
          "reviewCount": 1842
        },
        "url": "https://www.example.com/products/prostride-x1"
      }
    },
    {
      "@type": "ListItem",
      "position": 2,
      "item": {
        "@type": "Product",
        "name": "SwiftGlide Trail Runner",
        "image": [
          "https://example.com/photos/1x1/swiftglide.jpg",
          "https://example.com/photos/4x3/swiftglide.jpg",
          "https://example.com/photos/16x9/swiftglide.jpg"
        ],
        "offers": {
          "@type": "Offer",
          "price": 2999,
          "priceCurrency": "INR"
        },
        "aggregateRating": {
          "@type": "AggregateRating",
          "ratingValue": 4.4,
          "reviewCount": 930
        },
        "url": "https://www.example.com/products/swiftglide-trail"
      }
    },
    {
      "@type": "ListItem",
      "position": 3,
      "item": {
        "@type": "Product",
        "name": "AirPace Road Runner Pro",
        "image": [
          "https://example.com/photos/1x1/airpace.jpg",
          "https://example.com/photos/4x3/airpace.jpg",
          "https://example.com/photos/16x9/airpace.jpg"
        ],
        "offers": {
          "@type": "AggregateOffer",
          "lowPrice": 4899,
          "highPrice": 5699,
          "priceCurrency": "INR"
        },
        "aggregateRating": {
          "@type": "AggregateRating",
          "ratingValue": 4.8,
          "reviewCount": 2380
        },
        "url": "https://www.example.com/products/airpace-road-runner-pro"
      }
    }
  ]
}

Carousel Rich Results Guidelines — What Google Actually Enforces

Passing the Rich Results Test is not the same as meeting all carousel eligibility requirements. Google enforces structural and content guidelines that no automated validator can fully check. Violating these guidelines silently disqualifies your pages from carousel display.

  • Your markup must be on a summary or category page — not an individual entity page or a homepage. The summary page must list at least three entities and link out to separate detail pages for each.
  • All detail page URLs in your ItemList must be unique, publicly crawlable, and not blocked by robots.txt, noindex tags, or login walls.
  • All URLs must live on the same domain as the summary page — same domain, sub-domain, or super-domain. Linking to third-party sites for detail pages disqualifies the carousel.
  • Mark up all entities listed on the summary page, not just a selection. For paginated category pages, add ItemList markup to each paginated page with the entities shown on that page.
  • Anchor links — URLs pointing to sections within the same page via #hash — are not supported as detail page URLs. You must have separate, standalone pages for each entity.
  • Generic types (like LocalBusiness rather than Hotel) are allowed but limit your access to recommended properties like amenityFeature. Use the most specific type that accurately describes your entities.
  • For infinite scroll pages, mark up the entities that are initially loaded in the viewport. You are not expected to mark up all dynamically loaded content.
  • Your page must comply with all Google Search Essentials and the General Structured Data Guidelines. Spammy markup usage can result in a manual action against your page.

How Structured Data Carousels Improve LLM Citation and AI Mode Visibility

Most marketers understand structured data as a tool for rich results. Far fewer recognise that it is also a primary signal for large language models — and that connection is becoming increasingly important in 2026.

When you implement ItemList with specific sub-types and rich entity attributes, you are publishing machine-readable statements about the entities your site covers. Google's Knowledge Graph ingests these signals. LLMs like Gemini, ChatGPT, and Perplexity use entity graphs to determine which sources to cite when answering user queries.

A site that clearly maps "Restaurant" → "South Indian cuisine" → "Chennai" → specific named restaurants with ratings and images is far more citable by an AI answering "best South Indian restaurants in Chennai" than a site with the same content but no entity-level markup.

🤖 Structured Data as a Vector SEO Signal

In vector-based retrieval systems — which power modern AI search and LLM responses — the precision of your entity definitions directly affects how your content is retrieved and ranked. ItemList schema creates explicit entity-to-category-to-location relationships that vector embeddings can anchor to.

Think of it this way: without structured data, your content is a cloud of words. With ItemList markup, it becomes a set of precise, typed, interlinked entities. Typed entities are far easier for embedding models to retrieve accurately. This is why structured data implementation in 2026 is as much an LLM optimisation strategy as it is a classic SEO tactic.

Entity-Level Signals That LLMs Prioritise

Large language models and Google's AI Mode use several entity-level signals to determine citation-worthiness. Structured data carousels help you satisfy many of them simultaneously.

Entity Type Specificity
Using Hotel rather than LocalBusiness creates a sharper type boundary. LLMs retrieve typed entities far more reliably than generic ones when answering category-specific queries.
Rating & Review Signals
Structured aggregateRating data gives LLMs quantitative quality signals. An entity with a 4.8 rating from 5,000 reviews is far more citation-worthy than one with no rating data.
Attribute Completeness
Amenity features, cuisine types, price ranges, and other attributes build a rich entity profile. The more complete your entity attributes, the more queries your content can answer accurately.
Topical Cluster Depth
A site with ten category pages each containing a properly marked-up ItemList signals deep topical authority. LLMs favour sites that demonstrate breadth and depth across a topic domain, not isolated pages.
URL Graph Integrity
The relationship between summary pages and detail pages — enforced by ItemList's URL requirements — creates an internal link graph that reinforces topical clustering signals for both Google and LLM systems.

Troubleshooting: Why Your Carousel Rich Results May Not Appear

Valid structured data markup does not guarantee carousel display. Google assesses multiple factors beyond technical correctness before showing a rich result. Here is a systematic approach to diagnosing why a carousel may not be appearing despite valid markup.

⚠️ Reason 1 — Geographic Eligibility

This is the most common reason carousels fail to appear. If your site primarily serves users outside EEA countries, Turkey, or South Africa, the feature is simply not available for your queries. Check your target audience location before all other diagnostics.

⚠️ Reason 2 — Fewer Than Three Entities

Google requires at least three itemListElement entries in your ItemList. A list of two items — even with perfect markup — will not qualify. Review your JSON-LD and confirm three or more unique entities are included, each with distinct detail page URLs.

⚠️ Reason 3 — Detail Pages Are Blocked or Missing

If any of the URLs referenced in your ItemList are blocked by robots.txt, noindex tags, redirects, or login requirements, Google cannot crawl and verify them. Use the URL Inspection tool to check each detail page for crawl accessibility issues.

⚠️ Reason 4 — Markup Is on the Wrong Page Type

Placing ItemList markup on an individual entity's detail page rather than a summary page is a structural error. The markup must be on a category or list page that aggregates multiple entities. Google explicitly does not support all-in-one pages where details are anchor links within the same page.

⚠️ Reason 5 — Content Quality or Spam Action

If your page has received a structured data manual action, Google ignores all markup on that page. Check your Search Console Manual Actions report to rule this out. Remember: structured data cannot compensate for thin content, low-quality pages, or policy violations.

If you have confirmed eligibility, valid markup, crawlable detail pages, and no manual actions — and the carousel still does not appear — be patient. It can take several weeks after initial indexing for Google to begin showing rich results. Monitor the Rich Results report in Search Console for status updates.

Internal Link Strategy for Structured Data Carousel Pages

The summary-to-detail page architecture required by ItemList markup is not just a technical constraint. It is also an internal link architecture opportunity that strengthens your entire site's SEO.

Your summary pages — which carry the carousel markup — should be treated as high-priority hub pages. They consolidate topic authority and distribute link equity to individual entity detail pages. This mirrors the ideal hub-and-spoke content model that Google rewards with topical authority signals.

From your detail pages, link back to the summary page using descriptive anchor text. A hotel detail page for "ITC Grand Chola" should link back to your "Top Luxury Hotels in Chennai" summary page. This creates a bidirectional link loop that reinforces the entity cluster and strengthens both pages in Google's assessment.

Cross-link between related summary pages as well. A "Top Restaurants in Chennai" summary page should contextually link to your "Best Dining Experiences in Tamil Nadu" or "South Indian Vegetarian Restaurants" pages where relevant. This builds the topical authority breadth that both Google and LLMs use to determine subject matter expertise.

For deeper reading on building entity-driven content architecture, see our ZenX Academy blog for related guides on topical authority, semantic SEO, and technical site structure.

Learn Structured Data and Modern SEO at ZenX Academy

Understanding schema markup conceptually is valuable. Knowing how to implement it, test it, and connect it to a broader topical authority strategy is what actually moves rankings. That is exactly what ZenX Academy's programmes teach — hands-on, with real sites and real results.

Frequently Asked Questions — Structured Data Carousels

Google structured data carousels are a beta rich result feature that displays a horizontally scrollable row of entities from a single website in Google Search. Each tile shows the entity's image, name, price range, and rating. They require ItemList structured data combined with at least one supported type — LocalBusiness, Product, or Event. They currently appear only in EEA countries, Turkey, and South Africa.

Three content types support carousel rich results: LocalBusiness (and its subtypes including Restaurant, Hotel, and VacationRental), Product, and Event. You must combine ItemList markup with at least one of these types on a summary or category page. You can mix types — for example, including both Event and LocalBusiness entities on a "Things to Do" page.

No. For the carousel rich result beta, Google only requires structured data on the summary or category page. You do not need to add markup to individual detail pages. However, detail pages must exist as publicly accessible, standalone pages on the same domain — anchor links within the summary page itself are not supported.

Google requires a minimum of three itemListElement entries for carousel eligibility. Each entry needs a unique position number (1-based integer) and a unique URL linking to a standalone detail page on the same domain. Two items — even with perfect markup — will not qualify for the carousel rich result.

ItemList structured data creates machine-readable entity relationships that large language models use to map topical authority. When your pages clearly define entity types, attributes (ratings, prices, features), and category relationships, LLMs can retrieve and cite your content more accurately when answering relevant user queries. This makes structured data a dual investment — rich results for today and LLM citation signals for AI-driven search.

No. Valid markup makes your page eligible but does not guarantee display. Google evaluates overall page quality, geographic eligibility, content compliance with Search Essentials, and relevance to the user's query. Monitor your status through Google Search Console's Rich Results report and ensure your summary and detail pages meet the highest content quality standards.

Yes — and you should. While the carousel rich result is only displayed in eligible regions currently, implementing ItemList markup now has three immediate benefits: it future-proofs your site for when Google expands the feature, it improves your entity graph for Knowledge Panel and AI Mode visibility, and it strengthens your site's structured internal link architecture. The implementation investment pays dividends even before the feature becomes available in your region.

After deploying valid markup, Google needs to crawl and re-index your summary page and all referenced detail pages. This typically takes days to a few weeks depending on your site's crawl frequency. Requesting re-crawl via the URL Inspection tool and submitting an updated sitemap can accelerate indexing. Even after indexing, carousel display timing depends on Google's quality assessments — there is no fixed timeline.

Future-Proof Your SEO Career in Chennai

Learn Schema Markup, LLM SEO & AI Marketing — Live at ZenX Academy

Join Chennai's most current digital marketing programme. Our AI Digital Marketing Training covers structured data, LLM citation strategies, AI Mode SEO, and hands-on schema implementation with real websites.

Book Free Demo