ChangelogNew

Now supporting Google Shopping in Commerce Search and Commerce Product

API
Google Shopping with the COMMERCE_SERP and COMMERCE_PRODUCT chips, the first three products for cerave moisturizing cream with price, rating and store, and the four stores Google lists for the first product, from Target at $4.19 to CVS Pharmacy at $7.49

Search Google’s Shopping tab in the US with Commerce Search, then read any product with Commerce Product to get every store Google lists for it, with its price, stock and product page.

What you get

  • site: "google_shopping" in COMMERCE_SERP: one task searches Google’s Shopping tab in the US and returns up to 40 products in Google’s order, each with rank, productId, title, price and url.
  • seller: the store named on each product card, such as Target, Ulta Beauty or Walmart, next to rating, reviewCount and imageUrl when the card shows them.
  • COMMERCE_PRODUCT reads any product from those results by its url and returns title, price, seller, inStock, rating, images and specs.
  • offers: every store Google lists for the product, each with seller, title, price, currency, inStock and the url of the store’s own product page.

How it works

Each search reads the Shopping tab Google shows for your query in the US, the page behind google.com/search?udm=28. A product url opens that results page and carries the product’s ID and title after #, which is how COMMERCE_PRODUCT finds the same product again.

A product read opens the results page, clicks the product and reads the panel Google shows for it: the stores, the description, the specs and the photos. The product’s price, listPrice, seller and inStock come from the first store, the one Google ranks as the best price. Google reshuffles the results of broad searches during the day, so the read looks the product up by its query first and by its title next.

reviewCount carries the exact counts Google shows, up to 1,000; Google writes larger counts in short forms such as 17K.

Where it helps

  • See which store holds Google’s best price for your product and how far the other stores sit above it.
  • Track the products Google Shopping ranks for a category search day by day, next to the Amazon, Walmart and Target rankings for the same query.
  • Collect the product pages of every store that sells a product, then read the Target, Walmart or Ulta page with Commerce Product.

Send a request

Send the request with your API key in the Authorization header.

curl -X POST https://api.querying.ai/v1/async/task \
  -H "Authorization: Bearer $QUERYING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "taskType": "COMMERCE_SERP",
    "payload": {
      "site": "google_shopping",
      "query": "cerave moisturizing cream",
      "limit": 10
    }
  }'

Request fields

taskTypestringRequired
The engine to run, such as CHATGPT or GOOGLE.
payload.sitestringRequired
The storefront to search, such as amazon, coupang or rakuten. The 21 values are listed with the engine.
payload.querystringRequired
The search query, written the way a shopper types it into the storefront’s search box. 1 to 500 characters.
payload.countrystring
The storefront’s own country, such as US for amazon or KR for coupang. It is also the default.
payload.limitinteger
Products to return, 1 to 40. Default 20.
webhook.urlstring
An HTTPS address on your server. The finished task is posted there the moment it completes.

Response

A finished task looks like this, trimmed for length.

JSON
{
  "success": true,
  "task": {
    "id": "b02ec42c-2ea1-4a6f-ba70-1b3099b8ceff",
    "taskType": "COMMERCE_SERP",
    "status": "COMPLETED",
    "createdAt": "2026-10-23T01:32:45.682Z"
  },
  "credits": { "creditsToCharge": 3, "creditsCharged": 3 },
  "response": {
    "site": "google_shopping",
    "query": "cerave moisturizing cream",
    "country": "US",
    "returnedCount": 10,
    "products": [
      {
        "rank": 1,
        "productId": "16245040360969784676",
        "title": "CeraVe Moisturizing Cream",
        "url": "https://www.google.com/search?q=cerave+moisturizing+cream&udm=28&gl=us&hl=en#product=16245040360969784676&title=CeraVe+Moisturizing+Cream",
        "price": 4.19,
        "currency": "USD",
        "seller": "Target",
        "rating": 4.7
      },
      {
        "rank": 2,
        "productId": "5074307725217910967",
        "title": "CeraVe Moisturizing Cream Pump",
        "url": "https://www.google.com/search?q=cerave+moisturizing+cream&udm=28&gl=us&hl=en#product=5074307725217910967&title=CeraVe+Moisturizing+Cream+Pump",
        "price": 17.99,
        "currency": "USD",
        "seller": "Target",
        "rating": 4.7
      },
      "…"
    ]
  }
}
task.statusstring
QUEUED, PROCESSING, then COMPLETED with the answer or FAILED with error.
credits.creditsChargedinteger
Credits charged for the finished task. A failed task charges 0.
response.returnedCountinteger
The number of products in products.
response.productsarray
Products in Google’s order: rank, productId, title, url, price, currency and seller, plus rating, reviewCount and imageUrl when the product card shows them.

Receive the result

The request returns the task right away with status QUEUED. Poll GET /v1/async/task/{id} until status is COMPLETED or FAILED, or add webhook.url and the finished task arrives at your server with the same task, credits and response. Results stay available for 24 hours after a task finishes.

curl https://api.querying.ai/v1/async/task/$TASK_ID \
  -H "Authorization: Bearer $QUERYING_API_KEY"

Read a product

Pass a product url from the search results to COMMERCE_PRODUCT. This is the read of the first product above, trimmed for length.

curl -X POST https://api.querying.ai/v1/async/task \
  -H "Authorization: Bearer $QUERYING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "taskType": "COMMERCE_PRODUCT",
    "payload": {
      "url": "https://www.google.com/search?q=cerave+moisturizing+cream&udm=28&gl=us&hl=en#product=16245040360969784676&title=CeraVe+Moisturizing+Cream"
    }
  }'
taskTypestringRequired
The engine to run, such as CHATGPT or GOOGLE.
payload.urlstringRequired
A product url from a google_shopping Commerce Search result. It opens the results page and carries the product’s ID and title after #.
JSON
{
  "success": true,
  "task": {
    "id": "9ee619d2-c87f-47ab-93cd-215ef3671734",
    "taskType": "COMMERCE_PRODUCT",
    "status": "COMPLETED",
    "createdAt": "2026-10-23T01:36:00.797Z"
  },
  "credits": { "creditsToCharge": 3, "creditsCharged": 3 },
  "response": {
    "site": "google_shopping",
    "country": "US",
    "url": "https://www.google.com/search?q=cerave+moisturizing+cream&udm=28&gl=us&hl=en#product=16245040360969784676&title=CeraVe+Moisturizing+Cream",
    "productId": "16245040360969784676",
    "title": "CeraVe Moisturizing Cream",
    "price": 4.19,
    "currency": "USD",
    "inStock": true,
    "seller": "Target",
    "rating": 4.7,
    "images": [
      "https://encrypted-tbn3.gstatic.com/shopping?q=tbn:ANd9GcTdoC3RoTxQCkmpSUypL2HqkAR300eBZ_E3W2NCfz2MP4541LroFfQ8ZzNM2XIpm_xS_3c4dZU4_LMYtqQjE89N-Z8wH4Y_gA",
      "…"
    ],
    "specs": [
      { "name": "Benefit", "value": "Moisturizing" },
      { "name": "Form", "value": "Cream" },
      "…"
    ],
    "offers": [
      {
        "seller": "Target",
        "title": "CeraVe Moisturizing Face & Body Cream for Normal to Dry Skin – 1.89 fl oz",
        "url": "https://www.target.com/p/cerave-moisturizing-face-38-body-cream-for-normal-to-dry-skin-8211-1-89-fl-oz/-/A-86467779",
        "price": 4.19,
        "currency": "USD",
        "inStock": true
      },
      {
        "seller": "Ulta Beauty",
        "title": "CeraVe Moisturizing Cream Body and Face Moisturizer - 1.8 oz",
        "url": "https://www.ulta.com/p/moisturizing-cream-body-face-moisturizer-xlsImpprod3530069?sku=2532670",
        "price": 6.99,
        "currency": "USD",
        "inStock": true
      },
      "…"
    ]
  }
}
response.pricenumber
What a shopper pays for the product as the page first shows it, before coupons and delivery, in currency (ISO 4217). listPrice is the struck-through regular price when it is above price.
response.offersarray
Every store Google lists for the product, in Google’s order: seller, title, price, currency and the url of the store’s product page, plus listPrice and inStock when the store row shows them. The first store is Google’s best price.

Errors

VALIDATION_ERRORHTTP 422
site is outside the 21 storefronts, query is empty or longer than 500 characters, limit is outside 1 to 40, or the payload carries another field. details names the field.
VALIDATION_ERRORHTTP 422
url is missing, longer than 2,048 characters or outside the 18 storefronts’ product pages, or the payload carries a field other than url and country. details names the field.
REGION_UNSUPPORTEDHTTP 422
country is another country than the storefront’s own, such as KR with amazon.
MISSING_API_KEYHTTP 401
The Authorization header is missing, or its key is unknown, expired or revoked.
INSUFFICIENT_CREDITSHTTP 402
The balance is below the price of the task. Add credits or upgrade the plan, then send again.

Pricing

Each completed search and each completed product read uses 3 credits, as on every other storefront. Credits are charged when the task completes.

More updates

Stay in the loop

Get new product updates in your inbox.

RSS feed