cloro WebsiteAPI Get an API key
API Reference › AI Mode › Ads

Ads

The sponsored-shopping block that Google AI Mode emits when a prompt carries strong buying intent, delivered inline as part of the standard AI Mode response.

Overview

Ads are not requested through a dedicated endpoint. When cloro parses a Google AI Mode result and Google has attached paid shopping placements, those placements are surfaced under the ads key of the same response you already receive from the AI Mode extraction call. There is no extra flag and no second round trip.

Whether ads appear is driven entirely by the query. Prompts that compare, shortlist, or shop for a concrete product category tend to trigger them, while informational prompts usually return none. In AI Mode the ads value is an object (an AdSection), not a flat array — it carries a heading plus a nested list of ad items. Parsers written against a provider that returns a plain ad array should branch on this wrapper shape.

Example prompt

{
  "prompt": "best 3D printers for hobbyists",
  "country": "US"
}

A commercially loaded prompt like the one above yields a response whose ads object matches the schema described here.

AdSection structure

FieldTypeDescription
titlestringHeading Google shows above the sponsored group, e.g. a short lead-in to the recommended products.
adsarrayOrdered list of individual sponsored ad items, each shaped as described below.

Ad item structure

FieldTypeDescription
titlestringAdvertised product name as displayed in the placement.
urlstringClick-through destination for the ad.
positionintegerOne-based rank of this item within the ads array.
priceobjectNormalized price broken into a numeric value and a currency symbol (see below).
storestringName of the merchant or retailer running the placement.
ratingnumberAverage product rating, when Google exposes one.
reviewsstringReview count as rendered, kept as text to preserve any formatting.

price

FieldTypeDescription
valuenumber | nullNumeric amount parsed from the ad. Returns null when the visible text cannot be resolved to a single unambiguous number.
currencystring | nullDetected currency symbol such as "$", "£", "R$", or "€". Returns null when no symbol is present.
rawstringThe price string exactly as it appeared in the ad. Populated whenever the parser had any source text to work from.

This price shape is shared by every price-bearing field across the AI Mode extractors; refer to the Inline products page for the full contract.

Response example

{
  "success": true,
  "result": {
    "text": "Here are some 3D printers to consider...",
    "ads": {
      "title": "Here are some 3D printers to consider",
      "ads": [
        {
          "title": "Bambu Lab X2D",
          "url": "https://www.google.com/aclk?sa=L&ai=abc",
          "position": 1,
          "price": {
            "value": 899.0,
            "currency": "$"
          },
          "store": "Bambu Lab US",
          "rating": 4.7,
          "reviews": "584"
        }
      ]
    }
  }
}

Notes

Expect the ads object to be absent when a prompt lacks shopping intent — treat its presence as optional. Always confirm the wrapper is an object before reading ads.ads. Questions about the schema can go to [email protected].