Google AI Mode shopping cards schema - cloro

Shopping Cards Data Documentation

This section documents the shopping cards data returned by the Google AI Mode endpoint: product information extracted when AI Mode detects shopping intent, part of the AI Mode response so no separate API call is needed. For use cases, pricing context, and copy-paste examples, see the AI Mode shopping API page on the product site.

Shopping cards in AI Mode

For individual product references embedded inline within the AI response text (rather than in a dedicated carousel), see inline products. Both arrays may appear in the same response.

Example request

Shopping cards are intent-detected; no flag is required.

{
  "prompt": "best wireless headphones under $200",
  "country": "US"
}

Shopping card structure

Field Type Description
title string Product title
position number 1-indexed rank across the shoppingCards array in DOM/render order.
price object Structured pricing with value, currency, and raw
store string Merchant/store name (conditionally populated — may be absent)
rating number Product rating
reviews string Review count in Google’s abbreviated format (e.g., "2.3k", "1m"). Parse as a string; convert client-side if you need a numeric value.
thumbnail string Product image URL
productLink string Direct product URL (conditionally populated — may be absent)
oldPrice object Original price before discount (conditionally populated — absent when no discount)
snippet string Product description snippet
snippet_links array Links found within the product snippet

store, productLink, and oldPrice are conditionally populated — not every item includes all fields. Build your pipeline to handle missing fields on any individual shopping card.

price and oldPrice

Field Type Description
value number | null Parsed numeric price. null when the visible text can’t be unambiguously parsed.
currency string | null Currency symbol (e.g. "$", "£", "R$", "€"). null when no symbol was found.
raw string Visible card text verbatim (e.g. "$149.99", "R$ 4,40/mês"). Always present when the parser had any input text.

The raw field captures the price string exactly as Google rendered it. Use it as a fallback display when value is null (installment offers, locale-ambiguous numerics) — see the inline products docs for the full price-shape contract; it’s shared across all AI Mode price-bearing fields.

snippet_links

Field Type Description
text string Link text
link string Link URL

Response example

{
  "success": true,
  "result": {
    "text": "Here are highly-rated wireless headphones under $200...",
    "shoppingCards": [
      {
        "title": "Sony WH-CH720N Noise Cancelling Headphones",
        "position": 1,
        "price": {
          "value": 149.99,
          "currency": "$",
          "raw": "$149.99"
        },
        "oldPrice": {
          "value": 199.99,
          "currency": "$",
          "raw": "$199.99"
        },
        "store": "Amazon",
        "rating": 4.5,
        "reviews": "2.3k",
        "thumbnail": "https://example.com/product.jpg",
        "productLink": "https://www.amazon.com/sony-wh-ch720n",
        "snippet": "Noise-canceling wireless headphones with 30-hour battery life",
        "snippet_links": [
          {
            "text": "noise canceling",
            "link": "https://www.google.com/search?q=noise+canceling"
          }
        ]
      }
    ]
  }
}