Example request
ads array documented below.
Overview
Sponsored ads are paid placements Google injects into the SERP. They cover both classic text ads (top and bottom of the page) and shopping-style sponsored cards (right-hand-side carousel and top-of-page carousels). All sponsored entries share the sameads[] array — the type field discriminates them.

Ad types
Each ad carries atype discriminator with two values:
RESULT— plain text ad. Displayed at the top or bottom of the main column with ad copy, sitelinks, and a normal destination URL.SHOPPING_CARD— shopping-style sponsored card. Carries a product image, price, optional MSRP /oldPrice, merchant name, and a Google-redirectedaclk?destination URL.
SHOPPING_CARD ads surface on three SERP positions, distinguished by blockPosition and category:
To discriminate, switch on
type first; for SHOPPING_CARD items use blockPosition + category to identify the surface.

Do not confuse
type: SHOPPING_CARD ads with the organic shoppingCards field. Sponsored cards live in ads[], are paid placements, and use Google aclk?-redirected URLs. Organic shopping cards live in shoppingCards[], come from the “Popular products” / “More products” grids, and use JS-hydrated productLink URLs that are usually empty in the static HTML response.Sponsored ad structure
Fields shared across all ad types:For
type: RESULT items, description is classic ad copy. For type: SHOPPING_CARD items it carries category-specific subtitle fragments joined with · — for example Used - 94k miles · Greeley on a “Sponsored vehicles” card.type: RESULT text ads:
Fields specific to
type: SHOPPING_CARD ads:
Price shape
price and oldPrice carry both a parsed and a raw representation:
raw is always present when price is emitted. value and currency are populated only when the visible string parses unambiguously. Installment / down-payment labels (common on phone-contract cards) parse the leading "$0" as value: 0 — use raw to disambiguate genuine free items from down-payment phrasing.