## Shopping Cards Data Documentation

This section documents the **shopping cards** data returned by the [Google AI Mode endpoint](/content/docs/api-reference/endpoint/monitor-aimode/index.html): 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](/content/ai-mode/shopping/index.html) 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](/content/docs/api-reference/endpoint/aimode/inline-products/index.html). 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](/content/docs/api-reference/endpoint/aimode/inline-products#price-and-oldprice/index.html) 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"
          }
        ]
      }
    ]
  }
}
```
