Inline products
Stand-alone product mentions that Google AI Mode weaves directly into its answer text, returned as a structured array alongside the main response.
Overview
Inline products are not a separate endpoint. They arrive inside the payload returned by the Google AI Mode extract call, exposed through the inline_products array. Whereas shopping cards collect several offers into a dedicated carousel, inline products are individual items that AI Mode references within the flow of its prose. A single response can contain both structures at once.
Detection is intent-driven: no flag is required. Sending a prompt that naturally invites specific product suggestions is enough to surface the array.
{
"prompt": "which wireless earbuds work best for long flights",
"country": "US"
}
Inline product structure
| Field | Type | Description |
|---|---|---|
| title | string | Display name of the product. |
| position | integer | 1-based rank of the item within inline_products, following render order. Always present. |
| price | object | Structured price for the item; see the price shape below. |
| old_price | object | Pre-discount price, using the same shape as price. |
| store | string | Name of the merchant offering the product (for example Amazon or Mercado Livre). |
| thumbnail | string | Product image reference. This can be an https:// link or an inline data:image/jpeg;base64,… blob supplied by Google's client scripts. It is absent if the capture completed before the image loader executed. |
| product_link | string | Direct link to the product page. |
Price object
Both price and old_price share the following fields:
| Field | Type | Description |
|---|---|---|
| value | number | null | Numeric amount parsed from the card. Returns null when the visible text cannot be resolved to a single unambiguous number. |
| currency | string | null | Currency symbol such as $, £, R$, or €. Returns null when no symbol is detected. |
| raw | string | The price text exactly as Google rendered it (for example $329.99 or R$ 4,40/mês). Included whenever the parser received any input text. |
The raw field preserves the original string so you can react to the three cases that matter most:
- Fully parsed —
value,currency, andraware all set. Usevaluefor calculations. - Installment offer — some locales advertise monthly plans like
R$ 4,40/mês. Onlyrawis emitted, since treating 4.40 as the product price would misrepresent it. Renderrawinstead. - Unparseable or ambiguous — values such as
Freeor a figure with no clear locale keep whatever could be extracted (usually justraw) so no signal is dropped.
Response example
{
"success": true,
"result": {
"text": "Drawing on expert reviews, these are strong picks for travel-friendly wireless headphones...",
"inline_products": [
{
"title": "Sony WH-1000XM5",
"position": 1,
"price": {
"value": 298.0,
"currency": "$",
"raw": "$298.00"
},
"old_price": {
"value": 399.99,
"currency": "$",
"raw": "$399.99"
},
"store": "Amazon",
"thumbnail": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/...",
"product_link": "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",
"product_link": "https://www.google.com/shopping/product/example2"
}
]
}
}
Notes
- Because inline products travel with the AI Mode response, you receive them from the same request that returns
text— no extra call is needed. - Optional fields (such as
old_priceorthumbnail) may be omitted per item; always guard for their absence when reading the array. - Questions about parsing behavior or field coverage can go to [email protected].