Google AI Mode inline products schema - cloro
Inline products in AI Mode
This section documents the inline products data returned by the Google AI Mode endpoint: product cards found within the AI response text, part of the AI Mode response so no separate API call is needed. 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. For use cases, pricing context, and copy-paste examples, see the AI Mode shopping API page on the product site.
Example request
Inline products are intent-detected; no flag is required.
{
"prompt": "what are the best wireless headphones for travel",
"country": "US"
}
Inline product structure
| Field | Type | Description |
|---|---|---|
title |
string | Product title |
position |
integer | 1-indexed rank across the inlineProducts array in DOM/render order. Always emitted. |
price |
object | Structured pricing — see price object for the shape |
oldPrice |
object | Original price before discount (same shape as price) |
store |
string | Merchant/store name (e.g. "Amazon", "Mercado Livre") |
thumbnail |
string | Product image URL. May be a https:// URL or a data:image/jpeg;base64,... blob injected by Google’s client JS. |
productLink |
string | Direct product URL |
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. "$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 covers three cases:
- Parseable —
{value, currency, raw}all populated. Usevaluefor math/aggregation. - Installment — Brazilian and other locales render monthly-payment offers like
R$ 4,40/mês. We emit{raw}only (novalue) because shipping4.40as the product price would be wrong. Fall back torawfor display. - Unparseable / locale-ambiguous — e.g.
"Free","€1.234"in an unknown locale context. We emit whatever was extractable (often justraw) 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"
}
]
}
}