Product Lookup
商品と、指定した競合商品やショッピングプロンプトについて、AIショッピングエンジンに尋ねます。
curl --request POST \
--url https://api.querying.ai/v1/product-lookup \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"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"
}
'import requests
url = "https://api.querying.ai/v1/product-lookup"
payload = {
"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"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
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'
})
};
fetch('https://api.querying.ai/v1/product-lookup', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.querying.ai/v1/product-lookup",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'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'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.querying.ai/v1/product-lookup"
payload := strings.NewReader("{\n \"product\": \"belif Moisturizing Eye Bomb\",\n \"country\": \"US\",\n \"competitors\": [\n \"Clinique All About Eyes\",\n \"CeraVe Eye Repair Cream\"\n ],\n \"prompts\": [\n \"best eye cream for puffiness\",\n \"best moisturizing eye cream\"\n ],\n \"idempotencyKey\": \"eye-bomb-us\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.querying.ai/v1/product-lookup")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"product\": \"belif Moisturizing Eye Bomb\",\n \"country\": \"US\",\n \"competitors\": [\n \"Clinique All About Eyes\",\n \"CeraVe Eye Repair Cream\"\n ],\n \"prompts\": [\n \"best eye cream for puffiness\",\n \"best moisturizing eye cream\"\n ],\n \"idempotencyKey\": \"eye-bomb-us\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.querying.ai/v1/product-lookup")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"product\": \"belif Moisturizing Eye Bomb\",\n \"country\": \"US\",\n \"competitors\": [\n \"Clinique All About Eyes\",\n \"CeraVe Eye Repair Cream\"\n ],\n \"prompts\": [\n \"best eye cream for puffiness\",\n \"best moisturizing eye cream\"\n ],\n \"idempotencyKey\": \"eye-bomb-us\"\n}"
response = http.request(request)
puts response.read_body{
"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": "CHATGPT",
"taskType": "CHATGPT",
"role": "competitor",
"prompt": "Buy Clinique All About Eyes",
"success": true,
"task": {
"id": "35f300a4-7603-4ad0-97ba-82eb6a07eed9",
"taskType": "CHATGPT",
"status": "QUEUED",
"priority": 1,
"createdAt": "2026-10-20T09:22:43.637Z",
"idempotencyKey": "eye-bomb-us:CHATGPT:buy:c1"
}
},
{
"engine": "AIMODE",
"taskType": "AIMODE",
"role": "prompt",
"query": "best eye cream for puffiness",
"success": true,
"task": {
"id": "bff41168-d081-4bce-a873-9609baafbaa5",
"taskType": "AIMODE",
"status": "QUEUED",
"priority": 1,
"createdAt": "2026-10-20T09:22:44.149Z",
"idempotencyKey": "eye-bomb-us:AIMODE:p1"
}
}
]
}{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Request validation failed",
"details": [
{
"field": "product",
"message": "product takes a product's name; a GTIN or barcode is not supported"
}
],
"timestamp": "2026-10-20T09:22:43.000Z"
}
}{
"success": false,
"error": {
"code": "MISSING_API_KEY",
"message": "Missing or invalid API key",
"timestamp": "2026-07-09T04:12:00.000Z"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
],
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
],
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"success": false,
"error": {
"code": "RESOURCE_ALREADY_EXISTS",
"message": "lookup 'eye-bomb-us' was created for another product, competitor, prompt or country; send this lookup under a new idempotencyKey",
"timestamp": "2026-10-20T09:22:43.000Z"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
],
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"success": false,
"error": {
"code": "REGION_UNSUPPORTED",
"message": "Product lookups ask the engines of US and KR only; country='JP' is not one.",
"details": {
"country": "JP",
"supportedCountries": [
"US",
"KR"
],
"retryable": false
},
"timestamp": "2026-10-20T09:22:43.000Z"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
],
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
],
"timestamp": "2023-11-07T05:31:56Z"
}
}承認
Your API key, sent as Authorization: Bearer <key>.
ボディ
The product's name, such as belif Moisturizing Eye Bomb. A product page URL or a GTIN is a 400 VALIDATION_ERROR.
1 - 200Market: US (United States) or KR (South Korea), case-insensitive. Any other value is a 422 REGION_UNSUPPORTED.
US, KR Other products' names, asked what the product is asked. A name that is the product's or is listed twice is a 400; names that differ only in case, punctuation or spacing are the same name.
51 - 200Shopper prompts, such as best moisturizing eye cream. Each is asked of each engine once, as written.
31 - 300The engines to ask, case-insensitive. Default for US: CHATGPT, GOOGLE, AIMODE and BING_COPILOT. Default for KR: NAVER_AI_TAB, CHATGPT and AIMODE. NAVER_AI_TAB in a US lookup is a 400.
1 - 6 elementsAn engine a product lookup can ask. GOOGLE is Google AI Overviews and AIMODE is Google AI Mode. NAVER_AI_TAB answers in KR only.
CHATGPT, GOOGLE, AIMODE, GEMINI, BING_COPILOT, NAVER_AI_TAB Names the lookup; without it the server picks a UUID. Sending the lookup again under the same key admits only the asks that are missing.
1 - 200Set on every ask. Values outside 1-10 are clamped. It does not guarantee execution order.
1 <= x <= 10Optional. Each ask's task is posted here when it reaches a terminal state.
Show child attributes
Show child attributes
レスポンス
Asks processed. Each entry of asks[] holds its task, or the error that refused it.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
creditsToCharge adds up the prices of the asks in asks[], held from your balance until each ask finishes. creditsCharged is what those asks have been charged already: 0 on a first submit, and on a resend the charges of the asks that had finished.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
curl --request POST \
--url https://api.querying.ai/v1/product-lookup \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"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"
}
'import requests
url = "https://api.querying.ai/v1/product-lookup"
payload = {
"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"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
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'
})
};
fetch('https://api.querying.ai/v1/product-lookup', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.querying.ai/v1/product-lookup",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'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'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.querying.ai/v1/product-lookup"
payload := strings.NewReader("{\n \"product\": \"belif Moisturizing Eye Bomb\",\n \"country\": \"US\",\n \"competitors\": [\n \"Clinique All About Eyes\",\n \"CeraVe Eye Repair Cream\"\n ],\n \"prompts\": [\n \"best eye cream for puffiness\",\n \"best moisturizing eye cream\"\n ],\n \"idempotencyKey\": \"eye-bomb-us\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.querying.ai/v1/product-lookup")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"product\": \"belif Moisturizing Eye Bomb\",\n \"country\": \"US\",\n \"competitors\": [\n \"Clinique All About Eyes\",\n \"CeraVe Eye Repair Cream\"\n ],\n \"prompts\": [\n \"best eye cream for puffiness\",\n \"best moisturizing eye cream\"\n ],\n \"idempotencyKey\": \"eye-bomb-us\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.querying.ai/v1/product-lookup")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"product\": \"belif Moisturizing Eye Bomb\",\n \"country\": \"US\",\n \"competitors\": [\n \"Clinique All About Eyes\",\n \"CeraVe Eye Repair Cream\"\n ],\n \"prompts\": [\n \"best eye cream for puffiness\",\n \"best moisturizing eye cream\"\n ],\n \"idempotencyKey\": \"eye-bomb-us\"\n}"
response = http.request(request)
puts response.read_body{
"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": "CHATGPT",
"taskType": "CHATGPT",
"role": "competitor",
"prompt": "Buy Clinique All About Eyes",
"success": true,
"task": {
"id": "35f300a4-7603-4ad0-97ba-82eb6a07eed9",
"taskType": "CHATGPT",
"status": "QUEUED",
"priority": 1,
"createdAt": "2026-10-20T09:22:43.637Z",
"idempotencyKey": "eye-bomb-us:CHATGPT:buy:c1"
}
},
{
"engine": "AIMODE",
"taskType": "AIMODE",
"role": "prompt",
"query": "best eye cream for puffiness",
"success": true,
"task": {
"id": "bff41168-d081-4bce-a873-9609baafbaa5",
"taskType": "AIMODE",
"status": "QUEUED",
"priority": 1,
"createdAt": "2026-10-20T09:22:44.149Z",
"idempotencyKey": "eye-bomb-us:AIMODE:p1"
}
}
]
}{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Request validation failed",
"details": [
{
"field": "product",
"message": "product takes a product's name; a GTIN or barcode is not supported"
}
],
"timestamp": "2026-10-20T09:22:43.000Z"
}
}{
"success": false,
"error": {
"code": "MISSING_API_KEY",
"message": "Missing or invalid API key",
"timestamp": "2026-07-09T04:12:00.000Z"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
],
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
],
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"success": false,
"error": {
"code": "RESOURCE_ALREADY_EXISTS",
"message": "lookup 'eye-bomb-us' was created for another product, competitor, prompt or country; send this lookup under a new idempotencyKey",
"timestamp": "2026-10-20T09:22:43.000Z"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
],
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"success": false,
"error": {
"code": "REGION_UNSUPPORTED",
"message": "Product lookups ask the engines of US and KR only; country='JP' is not one.",
"details": {
"country": "JP",
"supportedCountries": [
"US",
"KR"
],
"retryable": false
},
"timestamp": "2026-10-20T09:22:43.000Z"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
],
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"success": false,
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
],
"timestamp": "2023-11-07T05:31:56Z"
}
}