This section documents the shopping cards data returned by the Google Search endpoint. Shopping cards are part of the same response, so no separate API call is needed.
Overview
Shopping cards are extracted from Google’s organic shopping grids (“Popular products” and “More products”) when they appear on the SERP. When a section header can be parsed, each card includes a category field naming its parent section, so callers can distinguish cards from coexisting shopping panels on the same SERP.
The wire shape borrows fields from AI Mode’s shopping_cards for cross-API familiarity but uses camelCase keys (productLink, oldPrice) emitted by the Google mapper. The shoppingCards field is omitted from result when no shopping section is present — treat it as optional rather than expecting an empty array.
Shopping cards on the Google SERP ('More products' grid)
productLink is JS-hydrated by Google, so it is usually an empty string in the static HTML response — the card opens a Google-side sidebar overlay rather than navigating externally. The title, price, store, and other static fields remain populated.
| Field | Type | Description |
|---|
title | string | Product title |
position | number | 1-indexed rank in the shopping grid, flat across the whole shoppingCards array (does not reset per category section). |
productLink | string | Direct product URL (usually empty due to JS-hydration) |
category | string | Parent section header (e.g., "Popular products", "More products") |
price | object | Structured pricing (see Price shape below) |
oldPrice | object | Original price before discount (same shape as price) |
store | string | Merchant/store name |
rating | number | Product rating |
reviews | string | Review count (e.g., “384”, “2.3k”) |
thumbnail | string | Product image URL |
price and oldPrice
Both fields carry a parsed and a raw representation:
| Field | Type | Description |
|---|
value | number | Numeric price. Present when the visible string parses unambiguously into a number. |
currency | string | Currency symbol (e.g. $, £, €). Present when a recognized symbol is detected. |
raw | string | Visible price text verbatim (e.g. "$169.99"). |
raw is always present when price is emitted; value and currency only when the string parses unambiguously.
Response example
{
"success": true,
"result": {
"shoppingCards": [
{
"title": "ASICS Women's Gel-Nimbus 28",
"position": 1,
"productLink": "",
"category": "More products",
"price": {
"value": 169.99,
"currency": "$",
"raw": "$169.99"
},
"store": "DICK'S Sporting Goods",
"rating": 4.5,
"reviews": "384"
}
]
}
}