Scrape Google Shopping results straight from the rendered SERP as structured JSON: product title, structured price and oldPrice, store, rating, review count, and thumbnail. Monitor how your products — and your competitors' — surface on commercial queries.
4.8 · 33 reviewsThe result.shoppingCards array captures organic product cards in DOM order; the category field carries each card's parent section header so you can tell coexisting shopping modules apart. Sponsored product cards land in result.ads with type: "SHOPPING_CARD".
import requests
response = requests.post(
"https://api.cloro.dev/v1/monitor/google",
headers={
"Authorization": "Bearer sk_live_your_api_key_here",
"Content-Type": "application/json"
},
json={
"query": "wireless earbuds under 100",
"country": "US",
"device": "mobile"
}
)
print(response.json()) {
"success": true,
"result": {
"shoppingCards": [
{
"position": 1,
"title": "SoundCore Liberty 4 NC Wireless Earbuds",
"productLink": "https://www.google.com/shopping/product/...",
"category": "Popular products",
"price": {
"value": 79.99,
"currency": "$",
"raw": "$79.99"
},
"oldPrice": {
"value": 99.99,
"currency": "$",
"raw": "$99.99"
},
"store": "Example Electronics",
"rating": 4.5,
"reviews": "12K",
"thumbnail": "https://encrypted-tbn0.gstatic.com/shopping?q=..."
}
]
}
} | Field | Type | Description |
|---|---|---|
| position | integer | 1-indexed rank across the whole shoppingCards array in DOM order. |
| title | string | Product title. |
| productLink | string | Direct product URL (click destinations are JS-hydrated, so this is usually a Google Shopping product link). |
| category | string | Parent section header text — distinguishes cards from coexisting shopping modules on the same SERP. |
| price / oldPrice | object | Structured pricing: numeric value, currency symbol, and visible raw text; oldPrice carries the pre-discount price. |
| store | string | Merchant / store name. |
| rating / reviews | number / string | Product rating and review count as displayed. |
| thumbnail | string | Product image URL. |
Pick a plan that fits your volume. Price per credit drops as you scale.
Increased concurrency, overages on credits and credit discounts for annual contracts.
Know moreCredit cost per request varies by provider. The figures below are for async/batch requests; sync requests add a +2 credit surcharge.
ChatGPT full response includes query fan-out, ads, and shopping data. Google News uses the same pricing as Google Search.
No. Google's official Content API for Shopping manages your own Merchant Center listings — it can't show you what shoppers actually see on a search. This Google Shopping scraper returns the rendered shopping results for any query: your products, competitors' products, prices, and ratings as Google displays them.
The main SERP. These are the organic product-card modules Google injects into regular search results for commercial queries — which is where most shopping impressions actually happen. They're returned in every base Google SERP call at no extra cost.
Organic cards live in `result.shoppingCards`. Sponsored product cards are part of the paid surface and land in `result.ads` with `type: "SHOPPING_CARD"` and a `blockPosition` — see the Sponsored Ads API. Comparing the two tells you where you win organically vs. where competitors buy placement.
Yes — price and oldPrice are structured (numeric value + currency + raw text), so discount tracking is a subtraction, not a regex. Sample your product queries daily per country to catch competitor price moves and MSRP games as Google surfaces them.
Heavily. Mobile SERPs show more and different shopping modules, and card inventory is country- and city-sensitive. Use `device: "mobile"`, `country`, and `location`/`uule` to sample the surfaces your buyers actually see.
The complete SERP: organic results, ads, People Also Ask, related searches, and knowledge graph — one call, one price.