---
name: look-up-ai-shopping-product
description: "See how ChatGPT, Google AI Overviews, Google AI Mode, Microsoft Copilot and Naver AI Tab show a product to shoppers in the United States or South Korea: whether each engine lists it, which merchants sell it at what price and rating, and which pages the answers cite. Add competitors to compare them engine by engine and shopper prompts to see which products each engine recommends. 10 credits per product and 5 per shopper prompt."
---

# Look up a product in AI shopping answers with querying.ai

Product Lookup asks each AI shopping engine about a product by name and reads back, per engine, whether the answer showed it, the merchant listings it used and the pages it cited. Competitors get the same asks, and each shopper prompt is asked once per engine.

Send `Authorization: Bearer $QUERYING_API_KEY` on every request to https://api.querying.ai. Getting a key, and the 500 credits a new account starts with: https://querying.ai/auth.md

## Submit

```bash
curl -X POST https://api.querying.ai/v1/product-lookup \
  -H "Authorization: Bearer $QUERYING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"product": "belif Moisturizing Eye Bomb", "country": "US", "competitors": ["Clinique All About Eyes", "CeraVe Eye Repair Cream"], "prompts": ["best eye cream for puffiness"], "idempotencyKey": "eye-bomb-us"}'
```

- `product`: the name shoppers write, brand first, 1-200 characters. Not a URL or GTIN.
- `country`: `US` (ChatGPT, AI Overviews, AI Mode, Copilot) or `KR` (Naver AI Tab, ChatGPT, AI Mode). `engines[]` picks others; `GEMINI` only on request.
- `competitors[]`: up to 5 product names, 10 credits each. An answer about one product rarely names another, so name the ones to compare.
- `prompts[]`: up to 3 shopper prompts, 1-300 characters, 5 credits each whatever the engines.
- `idempotencyKey`: becomes the lookup id. Resending it adds only the asks that are missing, such as those refused over the plan's concurrency.

The POST answers with `lookup.id`, `credits.creditsToCharge` and `asks[]`, each ask queued as an ordinary task or refused with `success: false`. Failed asks are not charged.

## Read the result

Poll `GET /v1/product-lookup/{id}` every few seconds until `lookup.status` is `COMPLETED` or `FAILED`. A US product with two competitors and two prompts is 23 asks and finishes in about 2-3 minutes. A lookup stays readable for 24 hours.

- `summary`: `foundIn`, `notFoundIn`, `pending`, `failed` engines, `merchants[]` with the engines that list each and its price range, `priceRange` and `citedDomains[]`.
- `comparison[]`: the product and each competitor engine by engine, with `found`, `listings`, `merchants`, `mostReviewed`, `priceRange` and, with prompts, how many answers showed or named it.
- `prompts[].engines[]`: `shown` lists the looked-up products the answer showed as listings, `named` those its text names.
- `engines[]` and `competitors[]`: every listing with merchant, price, rating, review count and URL, and `citedPages[]`.

Answers vary between runs: which listings appear, and so `found` on ChatGPT, can change. Treat one lookup as a snapshot and repeat it to see a trend.

## Errors

| HTTP | `code` | When |
| --- | --- | --- |
| 401 | `MISSING_API_KEY` | The key is missing, wrong, expired or revoked. |
| 402 | `INSUFFICIENT_CREDITS` | The account balance is below the task's credits. |
| 403 | `KEY_SCOPE_DENIED` | The key is limited to other engines. |
| 422 | `REGION_UNSUPPORTED` | The engine serves other countries; pick another engine or country. |
| 429 | `KEY_DAILY_CREDIT_LIMIT` | The key reached its daily credit limit; `details.retryAfterSec` counts down to the next UTC day. |

- `409 RESOURCE_ALREADY_EXISTS`: the id already holds another product, country, competitor or prompt.
- `422 REGION_UNSUPPORTED`: `country` is not US or KR.
- `400 VALIDATION_ERROR` names the field: a URL or GTIN as the product, a repeated name, or an engine that does not answer in the country, such as `NAVER_AI_TAB` in the US.

## Over MCP

`run_product_lookup` on https://mcp.querying.ai/mcp submits and waits, then returns a summary of each product and prompt; `get_product_lookup` reads one by id. Pass `detail: "full"` for every listing.

Reference: https://docs.querying.ai/research/product-lookup
