Google Shopping Search API
Search Google Shopping by keyword and get up to 10 product offers (title, price, store, rating, and link), localized by country and language.
$18.00/1k req, pay per request, no subscription.
{"title": "Apple AirPods Pro 2 with USB-C","url": "https://www.google.com/shopping/product/11029384756?q=airpods","image": "https://encrypted-tbn0.gstatic.com/shopping?q=tbn:airpods-pro-2-usb-c","productId": "11029384756","seller": "Best Buy","brand": "Apple","price": 219.99,"priceText": "$219.99",... 6 more fields}
Pricing and providers
Google Shopping Search API pricing: one API, 2 interchangeable providers
The cheapest provider serves first. If it fails, the next one takes over in the same call.
capped at $0.0638 per request1 result$0.01435 results$0.036310 results$0.0638 capYou are charged for what comes back. Lower the limit to pay less - and no single request can cost more than the cap, however much comes back.
Call it
Get Google Shopping search in one request
import os, requests res = requests.post( "https://api.getanyapi.com/v1/run/google_shopping.search", headers={"Authorization": f"Bearer {os.environ['ANYAPI_KEY']}"}, json={ "query": "" }, ) print(res.json())
This sample shows 17 of 18 fields. See every field
{
"found": true,
"data": {
"items": [
{
"title": "Apple AirPods Pro 2 with USB-C",
"url": "https://www.google.com/shopping/product/11029384756?q=airpods",
"image": "https://encrypted-tbn0.gstatic.com/shopping?q=tbn:airpods-pro-2-usb-c",
"productId": "11029384756",
"seller": "Best Buy",
"brand": "Apple",
"price": 219.99,
"priceText": "$219.99",
"currency": "USD",
"listPrice": 249,
"listPriceText": "$249.00",
"discountPercent": "12% OFF",
"rating": 4.8,
"reviewsCount": 15234
},
{
"title": "Apple AirPods 4",
"url": "https://www.google.com/shopping/product/11029384812?q=airpods",
"image": "https://encrypted-tbn0.gstatic.com/shopping?q=tbn:airpods-4",
"productId": "11029384812",
"seller": "Target",
"brand": "Apple",
"price": 129,
"priceText": "$129.00",
"currency": "USD",
"listPrice": 0,
"listPriceText": "",
"discountPercent": "",
"rating": 4.7,
"reviewsCount": 8921
},
{
"title": "Apple AirPods Max",
"url": "https://www.google.com/shopping/product/11029384930?q=airpods",
"image": "https://encrypted-tbn0.gstatic.com/shopping?q=tbn:airpods-max",
"productId": "11029384930",
"seller": "Walmart",
"brand": "Apple",
"price": 449,
"priceText": "$449.00",
"currency": "USD",
"listPrice": 549,
"listPriceText": "$549.00",
"discountPercent": "18% OFF",
"rating": 4.6,
"reviewsCount": 3021
}
]
}
}Full parameter and response reference - every field, type, and example for this endpoint.
Reference
One request, one response shape.
Every field you send and every field you get back, each with a real example.
Last verified 2026-10-31 · uptime and latency measured over 30d
Request body
JSON, posted to this endpoint.
- querystring
airpods
Product name, brand, or keywords to search for (e.g. "Nike running shoes").
- conditionenum
NEW
Only return products in this condition (e.g. "USED"); defaults to any condition.
- countrystring
us
ISO 3166-1 alpha-2 country code for localized results (e.g. "us", "gb", "de").
- languagestring
en
ISO 639-1 language code for results (e.g. "en", "es", "fr").
- limitinteger
3
Maximum number of results to return (1-10, default 10).
- requireFieldsarray
Optional; omit it and routing is unchanged, with the cheapest source serving. Name the output fields this request must be able to return, for example `listPriceText` or `discountPercent`, and it is served only by a source that returns every one of them. Fields you do not name are still returned whenever the serving source has them. This can raise your price: when the cheapest source cannot return a named field, a dearer source serves, and you are quoted and charged its price. A named field can still be absent on a product that genuinely lacks it. Naming a combination that no single source returns together is refused as invalid input, with no charge.
- sortByenum
BEST_MATCH
Sort order for results (e.g. "LOWEST_PRICE"); defaults to relevance.
Response
JSON, one example value per field.
Matching Google Shopping product offers. Populated whenever the provider has data for the entity.
- brandstringcan require
Apple
Product brand; empty when not reported.
- currencystringcan require
USD
Price currency code, e.g. "USD"; empty when not reported.
- discountPercentstringcan require
12% OFF
Discount label when on sale, e.g. "23% OFF"; empty otherwise.
- imagestring
https://encrypted-tbn0.gstatic.com/shopping?q=tbn:airpods-pro-2-usb-c
Primary product image URL. Populated whenever the provider has data for the entity.
- listPricenumber
249
Pre-discount list price as a numeric amount; 0 when not on sale or reported only as text.
- listPriceTextstringcan require
$249.00
Pre-discount list price as displayed, e.g. "$130"; empty when not applicable.
- pricenumber
219.99
Current price as a numeric amount; 0 when the lane reports price only as text (see priceText).
- priceTextstringcan require
$219.99
Current price as displayed, e.g. "$99.99"; empty when the lane reports a numeric price instead.
- productIdstring
11029384756
Provider product identifier.
- ratingnumber
4.8
Average product rating, 0-5; null when unrated.
- reviewsCountinteger
15234
Number of ratings / reviews; null when none reported.
- sellerstring
Best Buy
Store / seller name offering the product, e.g. "Target".
- titlestring
Apple AirPods Pro 2 with USB-C
Product title. Populated whenever the provider has data for the entity.
- urlstring
https://www.google.com/shopping/product/11029384756?q=airpods
Google Shopping product page URL (query retained; it encodes the product identity). Populated whenever the provider has data for the entity.
- foundboolean
true
True when the search returned at least one product offer.
- reason"not_found"
Present only when `found` is false, and says why there is no result. `not_found`: the source states the target does not exist, or returned nothing for it. A `found: false` answer is a successful call, not an error, and `costUsd` is what it actually cost.
FAQ
About the Google Shopping Search API
The AnyAPI Google Shopping Search API returns Google Shopping search data as normalized JSON from one POST call to /v1/run/google_shopping.search. Search Google Shopping by keyword and get up to 10 product offers (title, price, store, rating, and link), localized by country and language. AnyAPI routes each request across 2 sources and falls back automatically when one fails. It costs from $18 per 1,000 requests, in US dollars with no subscription and no monthly minimum. Over the last 30 days, 97.7% of Google Shopping search calls through AnyAPI succeeded, with a median response time of 8.3 seconds across 469 measured calls.