Example request
Inline products are intent-detected: send a prompt that surfaces individual product mentions in the AI response. No flag is required.inline_products 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
| Field | Type | Description |
|---|---|---|
title | string | Product title |
position | integer | 1-indexed rank across the inline_products array in DOM/render order. Always emitted. |
price | object | Structured pricing — see price object for the shape |
old_price | 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. Omitted when the page was captured before Google’s image loader ran. |
product_link | string | Direct product URL |
price and old_price
| 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. |
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. 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.