ChangelogNew

Introducing Product Lookup

Product Lookup
A Product Lookup comparison of belif Moisturizing Eye Bomb with two competitors: merchant listings, prices and ratings on ChatGPT, Google AI Overviews, AI Mode and Copilot, and how many of eight shopper prompt answers showed each product

Product Lookup asks the AI shopping engines about your product and its competitors, and returns, engine by engine, the merchants, prices and reviews each answer shows.

What you get

  • engines[]: whether each engine’s answers showed your product (found), and every merchant listing they showed with its price, stock, rating, review count and the catalog it came from.
  • modelSees: the title, description, rating and review count ChatGPT’s answering model was given for a listing, so you see your product the way the model reads it.
  • comparison[]: your product and up to five competitors side by side on each engine, with listings, merchants, the most-reviewed listing and the price range.
  • prompts[]: up to three shopper prompts, with the products from your lookup that each answer showed and named.
  • citedPages and summary.citedDomains: the pages each answer cites, grouped by site across engines.

How it works

Send a product name and a market. In the US, Product Lookup asks ChatGPT “Buy …” and “Find the best price for …”, and asks Google AI Overviews, Google AI Mode and Bing Copilot the product name. In Korea it asks Naver AI Tab and Google AI Mode the name, and ChatGPT “… 구매” and “… 최저가”. Every competitor gets the same asks, and each shopper prompt goes to every engine as written. The lookup below, three products and two prompts, finished in about two minutes.

It reads the product records in each answer and the shops and prices ChatGPT writes in its shopping cards, and keeps the ones whose title carries the product’s name. match.score shows how much of the name a listing carries, and sets, minis and refills come marked as variant. Every lookup reads live answers: a listing’s price, rating and review count hold steady from run to run, while the set of merchants an engine shows shifts from answer to answer, so compare repeated lookups to follow a trend.

Where it helps

  • See which engines show your product, and through which merchants and prices.
  • Put your review counts and prices next to your competitors’ on each engine. In the lookup below, Bing Copilot showed 2,942 reviews for belif against 85,773 for Clinique and 117,193 for CeraVe.
  • Ask the category questions shoppers use and see whose products the answers put forward. CeraVe appeared in 5 of the 8 answers below, belif in 2.
  • Run a lookup before and after you change a product feed or listing, and compare what each engine shows.

Send a request

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

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",
      "best moisturizing eye cream"
    ],
    "idempotencyKey": "eye-bomb-us"
  }'

Request fields

productstringRequired
The product’s name as shoppers search for it, 1 to 200 characters. A product page URL or a barcode returns VALIDATION_ERROR.
countrystringRequired
US or KR. The market sets the engines and the wording of the asks.
competitorsarray
Up to 5 competitor product names. Each one gets the same asks as your product.
promptsarray
Up to 3 shopper prompts, such as best eye cream for puffiness, asked of each engine as written.
enginesarray
Engines to ask. US asks CHATGPT, GOOGLE, AIMODE and BING_COPILOT by default, and KR asks NAVER_AI_TAB, CHATGPT and AIMODE. Add GEMINI to ask Gemini too.
idempotencyKeystring
Names the lookup. Sending it again returns the same lookup and adds only the asks that are missing.
webhook.urlstring
An HTTPS address on your server. Each ask’s finished task is posted there the moment it completes.

Response

The response, trimmed for length.

JSON
{
  "success": true,
  "lookup": {
    "id": "eye-bomb-us",
    "product": "belif Moisturizing Eye Bomb",
    "competitors": ["Clinique All About Eyes", "CeraVe Eye Repair Cream"],
    "prompts": [
      "best eye cream for puffiness",
      "best moisturizing eye cream"
    ],
    "country": "US",
    "engines": ["CHATGPT", "GOOGLE", "AIMODE", "BING_COPILOT"]
  },
  "summary": { "total": 23, "succeeded": 23, "failed": 0 },
  "credits": { "creditsToCharge": 40, "creditsCharged": 0 },
  "asks": [
    {
      "engine": "CHATGPT",
      "taskType": "CHATGPT",
      "role": "product",
      "prompt": "Buy belif Moisturizing Eye Bomb",
      "success": true,
      "task": {
        "id": "56be57f3-d316-4727-8bd3-ab065fed2ec1",
        "taskType": "CHATGPT",
        "status": "QUEUED",
        "priority": 1,
        "createdAt": "2026-10-20T09:22:43.422Z",
        "idempotencyKey": "eye-bomb-us:CHATGPT:buy"
      }
    },
    {
      "engine": "GOOGLE",
      "taskType": "GOOGLE",
      "role": "product",
      "query": "belif Moisturizing Eye Bomb",
      "success": true,
      "task": {
        "id": "0d6d6839-8705-44c1-ac3c-c5f56cb25d08",
        "taskType": "GOOGLE",
        "status": "QUEUED",
        "priority": 1,
        "createdAt": "2026-10-20T09:22:43.472Z",
        "idempotencyKey": "eye-bomb-us:GOOGLE:name"
      }
    },
    "…"
  ]
}
lookup.idstring
The lookup’s id: your idempotencyKey, or one the server creates. Read the lookup with GET /v1/product-lookup/{id}.
summaryobject
Counts for the asks: total, succeeded and failed.
credits.creditsToChargenumber
What the asks cost once they all answer: 10 credits per product and 5 per shopper prompt.
asksarray
One entry per ask: the engine, the text asked and its task, or error with its code when the ask was refused.

Receive the result

Each ask runs as its own task, so the lookup fills in as the answers arrive. Read it with GET /v1/product-lookup/{id} until lookup.status is COMPLETED, or add webhook.url to receive each ask’s finished task. A lookup stays readable for 24 hours after its asks finish.

curl "https://api.querying.ai/v1/product-lookup/$LOOKUP_ID" \
  -H "Authorization: Bearer $QUERYING_API_KEY"

A finished lookup looks like this, trimmed for length.

JSON
{
  "success": true,
  "lookup": {
    "id": "eye-bomb-us",
    "product": "belif Moisturizing Eye Bomb",
    "competitors": ["Clinique All About Eyes", "CeraVe Eye Repair Cream"],
    "prompts": [
      "best eye cream for puffiness",
      "best moisturizing eye cream"
    ],
    "country": "US",
    "status": "COMPLETED",
    "createdAt": "2026-10-20T09:22:43.422Z",
    "completedAt": "2026-10-20T09:24:36.695Z",
    "credits": 40
  },
  "summary": {
    "foundIn": ["CHATGPT", "GOOGLE", "AIMODE", "BING_COPILOT"],
    "notFoundIn": [],
    "merchants": [
      {
        "merchant": "Ulta Beauty",
        "engines": ["CHATGPT", "BING_COPILOT"],
        "price": { "currency": "USD", "min": 48, "max": 48 }
      },
      {
        "merchant": "Amazon",
        "engines": ["CHATGPT"],
        "price": { "currency": "USD", "min": 43, "max": 43 }
      },
      "…"
    ],
    "priceRange": { "currency": "USD", "min": 35.82, "max": 48 },
    "citedDomains": [
      {
        "domain": "ulta.com",
        "engines": ["CHATGPT", "GOOGLE", "AIMODE", "BING_COPILOT"]
      },
      "…"
    ],
    "credits": 10
  },
  "engines": [
    {
      "engine": "CHATGPT",
      "status": "COMPLETED",
      "found": true,
      "via": [
        {
          "taskType": "CHATGPT",
          "prompt": "Buy belif Moisturizing Eye Bomb",
          "taskId": "56be57f3-d316-4727-8bd3-ab065fed2ec1",
          "status": "COMPLETED",
          "credits": 2
        },
        "…"
      ],
      "listings": [
        {
          "ask": 1,
          "position": 1,
          "title": "belif Moisturizing Eye Bomb Eye Cream",
          "merchant": "Ulta Beauty",
          "source": "merchant_feed",
          "price": { "value": 48, "currency": "USD", "raw": "$48.00" },
          "available": true,
          "modelSees": {
            "rating": 4.5,
            "reviewCount": 105,
            "brand": "belif"
          },
          "match": { "score": 1 }
        },
        {
          "ask": 2,
          "position": 1,
          "title": "Amazon",
          "merchant": "Amazon",
          "source": "chatgpt_widget",
          "price": { "value": 43, "currency": "USD", "raw": "$43.00" },
          "match": { "score": 1 }
        },
        "…"
      ],
      "citedPages": [
        {
          "ask": 1,
          "domain": "lgbeauty.com",
          "title": "Moisturizing Eye Bomb"
        },
        "…"
      ]
    },
    "…"
  ],
  "comparison": [
    {
      "product": "belif Moisturizing Eye Bomb",
      "role": "product",
      "engines": [
        {
          "engine": "BING_COPILOT",
          "status": "COMPLETED",
          "found": true,
          "listings": 6,
          "merchants": 5,
          "mostReviewed": {
            "reviewCount": 2942,
            "rating": 4.58,
            "merchant": "Comparor"
          },
          "priceRange": { "currency": "USD", "min": 35.82, "max": 48 },
          "prompts": { "answered": 2, "appeared": 1 }
        },
        "…"
      ]
    },
    {
      "product": "CeraVe Eye Repair Cream",
      "role": "competitor",
      "engines": [
        {
          "engine": "BING_COPILOT",
          "status": "COMPLETED",
          "found": true,
          "listings": 6,
          "merchants": 6,
          "mostReviewed": {
            "reviewCount": 117193,
            "rating": 4.35,
            "merchant": "Pasteur Pharmacy"
          },
          "priceRange": { "currency": "USD", "min": 15.95, "max": 38.95 },
          "prompts": { "answered": 2, "appeared": 0 }
        },
        "…"
      ]
    },
    "…"
  ],
  "prompts": [
    {
      "prompt": "best moisturizing eye cream",
      "engines": [
        {
          "engine": "GOOGLE",
          "status": "COMPLETED",
          "shown": ["CeraVe Eye Repair Cream", "Clinique All About Eyes"],
          "named": [
            "belif Moisturizing Eye Bomb",
            "CeraVe Eye Repair Cream",
            "Clinique All About Eyes"
          ]
        },
        {
          "engine": "BING_COPILOT",
          "status": "COMPLETED",
          "shown": ["belif Moisturizing Eye Bomb"],
          "named": ["belif Moisturizing Eye Bomb"]
        },
        "…"
      ]
    },
    "…"
  ]
}
lookup.statusstring
QUEUED and PROCESSING while asks run, COMPLETED when every ask has finished and at least one answered, FAILED when every ask failed.
lookup.creditsnumber
Credits charged so far, for the asks that answered.
engines[].foundboolean
Whether the engine’s answers showed the product: one merchant listing or ChatGPT shopping card for it makes it true.
engines[].listingsarray
Each merchant listing shown for the product: merchant, price, available, rating and reviews, the catalog it came from (source) and, on ChatGPT, what the answering model was given (modelSees).
summary.merchantsarray
Every merchant that showed the product, with the engines that showed it and its price range.
comparisonarray
Your product and each competitor side by side on every engine: found, listings, merchants, mostReviewed, priceRange and how many shopper-prompt answers each appeared in.
prompts[].enginesarray
For each shopper prompt and engine, the products from your lookup that the answer showed (shown) and named in its text (named).

Errors

VALIDATION_ERRORHTTP 400
A field is missing or out of range. details names the field.
REGION_UNSUPPORTEDHTTP 422
country is a market other than US and KR.
RESOURCE_ALREADY_EXISTSHTTP 409
The idempotencyKey already names a lookup of another product, competitor, prompt or country. Send this request under a new key.
INSUFFICIENT_CREDITSHTTP 402
The balance is below the price of the task. Add credits or upgrade the plan, then send again.
PLAN_CONCURRENCY_LIMITHTTP 429
Your plan’s concurrent tasks are full. The asks that fit go in, the rest come back in asks[] with this code, and sending the same request after Retry-After seconds adds them. When none fit, the whole request returns 429.

Pricing

Each product, yours and each competitor, costs 10 credits, and each shopper prompt 5 credits, whichever engines you ask. The price is split across that product’s asks, and you pay only for the asks that answer. The lookup above, three products and two prompts, costs 40 credits.

More updates

Stay in the loop

Get new product updates in your inbox.

RSS feed