Shopping cards
Product blocks that cloro parses out of a ChatGPT answer — each one carries the title, price, merchant, rating, and per-seller offers behind a recommended item.
Overview
Shopping cards are not a standalone endpoint. They ride along inside the payload returned by the ChatGPT extract call, so there is no separate request to make. When ChatGPT surfaces commercial or product-style content for a prompt, cloro normalizes those cards into a shoppingCards array on the result object.
Extraction is opt-in. Add include.shopping: true to your request body and the cards appear in the response; leave it out and they are skipped. Turning the flag on carries no extra charge. Cards tend to show up when ChatGPT routes the prompt through its lightweight shopping model, and because the model is chosen per request they will not be present in every answer.
Request example
{
"prompt": "What are the best sneakers under $100?",
"model": "CHATGPT",
"country": "US",
"include": { "shopping": true }
}
Shopping card structure
Every entry in the shoppingCards array holds a set of category tags plus the products grouped under that card.
| Field | Type | Description |
|---|---|---|
| tags | array | Category labels describing the card, for example ["electronics", "deals"]. |
| products | array | The product objects that belong to this card. |
Product information
Each product object exposes the commerce details cloro could pull for that item.
| Field | Type | Description |
|---|---|---|
| title | string | Display name of the product. |
| position | integer | 1-based rank counted flat across every card in the response, not restarted per card. |
| url | string | Link to the product page, carrying ChatGPT attribution parameters. |
| description | string | Short product description. |
| price | string | Current price as shown, for example "$57.00". |
| featured_tag | string | Style or category label highlighted for the product. |
| merchants | string | Summary of sellers, for example "Amazon.in + others". |
| image_urls | array | Product image links. |
| rating | float | Average rating on a 0–5 scale. |
| num_reviews | integer | Count of reviews behind the rating. |
| id | string | Stable identifier for the product. |
| cite | string | Citation reference token, for example "turn0product0". |
| offers | array | Per-merchant offers for the product (see below). |
| offersSeeMoreBoundary | integer | How many offers are visible before a "see more" control. |
| rating_grouped_citation | object | Rating source attribution with supporting websites. |
| showcaseMetadata | object | Display metadata used to lay out product imagery. |
| providers | array | Identifiers of the data providers that fed the product. |
| productLookupKey | object | Key used to look up refreshed product data. |
| productLookupData | object | Structured lookup query for the product. |
| showPriceDisclosure | boolean | Whether a price disclosure should be shown. |
| analyticsMeta | object | Analytics metadata, including a productEventUuid. |
| metadataSources | array | Origins of the product metadata, for example ["p2"]. |
| generatedProductQuery | string | The broader shopping query ChatGPT generated for the item. |
Offer information
Each element of offers describes one merchant's listing for the product.
| Field | Type | Description |
|---|---|---|
| merchant_name | string | Name of the merchant, for example "Amazon.in". |
| merchant_subtitle | string | Secondary merchant detail. |
| marketplace_seller | string | Third-party seller operating on the marketplace. |
| seller_name | string | Seller name. |
| brand | string | Brand of the product. |
| product_name | string | Product name as the merchant lists it. |
| url | string | Offer link with ChatGPT attribution. |
| price | string | Offer price. |
| details | string | Stock and delivery notes. |
| original_price | string | Pre-discount price, when present. |
| available | boolean | Whether the offer is in stock. |
| checkoutable | boolean | Whether the offer supports direct checkout. |
| checkout_payload | string | Encoded data for the checkout flow. |
| checkout_image_urls | array | Images used during checkout. |
| is_digital | boolean | Whether the product is a digital good. |
| price_details | object | Line-item price breakdown (see below). |
| tag | object | Promotional tag on the offer (see below). |
| shop_id | string | Identifier of the shop. |
| provider | string | Provider code, for example "p2". |
Price details
When an offer includes a cost breakdown, price_details splits it out.
| Field | Type | Description |
|---|---|---|
| display_price | string | Formatted price for display. |
| base | string | Base price of the product. |
| shipping | string | Shipping cost. |
| tax | string | Tax amount. |
| total | string | Total including any added costs. |
Offer tag
| Field | Type | Description |
|---|---|---|
| text | string | Tag label, for example "Best price". |
| tooltip | string | Explanatory text for the tag. |
Rating citation information
Products may carry attribution for where their rating came from via rating_grouped_citation.
| Field | Type | Description |
|---|---|---|
| title | string | Source title. |
| url | string | Source URL. |
| supporting_websites | array | Additional websites backing the rating (see below). |
| attribution | string | Attribution text; may be null. |
| pubDate | string | Publication date; may be null. |
| snippet | string | Excerpt of the source; may be null. |
| attributionSegments | array | Segmented attribution data; may be null. |
| refs | array | Reference objects. |
| hue | string | Color hue hint; may be null. |
Supporting website
Entries of rating_grouped_citation.supporting_websites.
| Field | Type | Description |
|---|---|---|
| title | string | Supporting website title. |
| url | string | Supporting website URL. |
| pub_date | string | Publication date; may be null. |
| snippet | string | Content excerpt; may be null. |
Showcase metadata
Layout hints for product imagery, primarily on inline products.
| Field | Type | Description |
|---|---|---|
| image | object | Image info: url, width, height. |
| background | object | Background colors: type, primary, secondary. |
| slots | object | Named display slots with positioning and fit data. |
Response example
{
"success": true,
"result": {
"text": "If you're shopping for sneakers under $100, here are a few options...",
"shoppingCards": [
{
"tags": ["stylish casual leather sneaker", "canvas everyday skate-inspired"],
"products": [
{
"title": "Adidas VL Court 3.0",
"position": 1,
"url": "https://www.adidas.com/us/vl-court-3.0-shoes/ID8797.html?utm_source=chatgpt.com",
"price": "$57.00",
"featured_tag": "stylish casual leather sneaker",
"merchants": "adidas + others",
"cite": "turn0product0",
"image_urls": ["https://images.example-cdn.com/static/AY2CiYu1..."],
"id": "3250714974047560249",
"rating": 4.7,
"num_reviews": 10394,
"showPriceDisclosure": false,
"offersSeeMoreBoundary": 3,
"providers": ["product_info"],
"metadataSources": ["p2"],
"offers": [
{
"merchant_name": "adidas",
"seller_name": "adidas",
"product_name": "Adidas Women's VL Court 3.0",
"url": "https://www.adidas.com/us/vl-court-3.0-shoes/ID8797.html?utm_source=chatgpt.com",
"price": "$57.00",
"details": "In stock online and nearby, delivery Sat - Mon $4.99",
"original_price": null,
"available": true,
"checkoutable": false,
"is_digital": null,
"provider": "p2",
"price_details": { "base": "$57.00", "total": "$57.00" },
"tag": { "text": "Best price" }
}
]
}
]
}
]
}
}
Notes
Shopping cards are best treated as opportunistic: their presence depends on how ChatGPT answers a given prompt, and individual fields can be null or absent. Guard for missing keys when you read them. For help interpreting a specific card, reach out at [email protected].