Google Shopping product and offer data. Search by keyword, by Google product ID, or by a structured product record for higher-precision matching.
country accepts: us de uk (gb) au at br ca cz dk fr in ie it jp mx no pl nz nl ru sg za es se fi ch tr ar cl co be gr hu pt ro sk hk id il my ph sa kr tw th ua vn ae
uk and gb are two codes for the same UK marketplace — not a separate locale.
| Key | Values | Description |
|---|---|---|
term | Free text | Keyword search — returns a list of product cards. |
id | Google Shopping product ID | Direct product lookup with offers. |
product | Structured product record | GTIN plus additional product data — the highest-precision lookup (see format below). |
Google Shopping has no direct GTIN lookup, so a bare GTIN can be ambiguous. With key: product you send the GTIN together with everything else you know about the product — title, brand, your price, a deeplink — and kwery uses all of it to select the right Google Shopping product. This is the recommended key when your catalog has more than just an EAN.
The value is a ||-separated record; empty fields are allowed, position is fixed:
title||brand||gtin||price||deeplink||sizeExample:
Tissot T-Touch Expert Solar||Tissot||7611608277942||850.00||https://www.example.de/tissot-t-touch||The title and the deeplink host carry the most matching signal — include them whenever you have them.
| Topic | Description |
|---|---|
search (default) | Product lookup with seller offers. |
| Field | Description |
|---|---|
id | Google Shopping product ID. |
identity | Product identity key. |
name | Product title. |
brand_name | Brand, where available. |
description | Product description. |
url | Product URL. |
review_rating / review_count | Aggregate reviews. |
price_min / price_avg / price_max | Offer price aggregates. |
offers_count | Number of offers gathered. |
total_offers_count | Total seller count Google reports for the product (may exceed offers_count). |
offers | Seller offers (seller name, price, currency, shipping, condition). |
For key: term, the result is a list of product cards, each with the product id you can use for a follow-up lookup.
When
total_offers_countis greater thanoffers_count, the snapshot is partial — more sellers exist than were gathered. On stream deliveries withinclude_meta: true, this is also surfaced asmeta.partial.
curl -s https://api.kwery.co/job \
-H "Authorization: Bearer $KWERY_API_KEY" \
-H "Content-Type: application/json" \
-d '{"source":"google","country":"de","key":"term","values":["Tissot T-Touch Expert Solar"]}'Results are fetched with GET /job/{id}/download once the job is finished — each entry is the result for one input value (abridged); a term search returns a list of product cards:
[
{
"key": "Tissot T-Touch Expert Solar",
"success": true,
"reason": null,
"content": {
"products": [
{
"id": "1234567890",
"name": "Tissot T-Touch Expert Solar",
"url": "https://www.google.com/shopping/product/1234567890",
"price_min": 799.00,
"currency": "EUR"
}
]
}
}
]