Skip to main content
This section documents the inline products data returned by the Google AI Mode endpoint. Inline products are part of the AI Mode response — no separate API call is needed.

Example request

Inline products are intent-detected: send a prompt that surfaces individual product mentions in the AI response. No flag is required.
{
  "prompt": "what are the best wireless headphones for travel",
  "country": "US"
}
This produces a response containing the inlineProducts array documented below.

Overview

Inline product cards found within the AI response text. Unlike shopping cards — which group multiple products into a dedicated carousel — inline products are stand-alone product references embedded directly in the AI’s prose. Both arrays may coexist in a single response.
Inline products in AI Mode

Inline product structure

FieldTypeDescription
titlestringProduct title
positioninteger1-indexed rank across the inlineProducts array in DOM/render order. Always emitted.
priceobjectStructured pricing — see price object for the shape
oldPriceobjectOriginal price before discount (same shape as price)
storestringMerchant/store name (e.g. "Amazon", "Mercado Livre")
thumbnailstringProduct image URL. May be a https:// URL or a data:image/jpeg;base64,... blob injected by Google’s client JS. Omitted when the page was captured before Google’s image loader ran.
productLinkstringDirect product URL

price and oldPrice

FieldTypeDescription
valuenumber | nullParsed numeric price. null when the visible text can’t be unambiguously parsed.
currencystring | nullCurrency symbol (e.g. "$", "£", "R$", "€"). null when no symbol was found.
rawstringVisible card text verbatim (e.g. "$329.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, which lets you handle three cases consumers tend to care about:
  • Parseable{value, currency, raw} all populated. Use value for math/aggregation.
  • Installment — Brazilian and other locales render monthly-payment offers like R$ 4,40/mês. We emit {raw} only (no value) because shipping 4.40 as the product price would be wrong. Fall back to raw for display.
  • Unparseable / locale-ambiguous — e.g. "Free", "€1.234" in an unknown locale context. We emit whatever was extractable (often just raw) so you can render the card text without losing the signal.

Response example

{
  "success": true,
  "result": {
    "text": "Based on expert reviews, here are the top wireless headphones for travel...",
    "inlineProducts": [
      {
        "title": "Sony WH-1000XM5",
        "position": 1,
        "price": {
          "value": 298.0,
          "currency": "$",
          "raw": "$298.00"
        },
        "oldPrice": {
          "value": 399.99,
          "currency": "$",
          "raw": "$399.99"
        },
        "store": "Amazon",
        "thumbnail": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/...",
        "productLink": "https://www.google.com/shopping/product/example"
      },
      {
        "title": "Short Floral Estampa Floral - Compre Já",
        "position": 2,
        "price": {
          "raw": "R$ 4,40/mês"
        },
        "store": "Mercado Livre",
        "productLink": "https://www.google.com/shopping/product/example2"
      }
    ]
  }
}