cloro WebsiteAPI Get an API key
API Reference › AI Mode › Inline products

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.

POST https://api.cloro.cloud/v1/aimode/extract

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

FieldTypeDescription
titlestringDisplay name of the product.
positioninteger1-based rank of the item within inline_products, following render order. Always present.
priceobjectStructured price for the item; see the price shape below.
old_priceobjectPre-discount price, using the same shape as price.
storestringName of the merchant offering the product (for example Amazon or Mercado Livre).
thumbnailstringProduct 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_linkstringDirect link to the product page.

Price object

Both price and old_price share the following fields:

FieldTypeDescription
valuenumber | nullNumeric amount parsed from the card. Returns null when the visible text cannot be resolved to a single unambiguous number.
currencystring | nullCurrency symbol such as $, £, R$, or . Returns null when no symbol is detected.
rawstringThe 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:

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