メインコンテンツへスキップ
Product Lookup は、AIショッピングエンジンが買い物客に商品をどう見せているかを確認するために使います。商品名と市場を送ると、querying.ai が各エンジンにその商品について尋ねます。エンジンごとに、回答が商品を表示したか、どの販売店の出品(販売店、カタログ、価格、在庫、評価とレビュー数)を表示したか、回答がどのページを引用したかを返します。競合商品を5つまで加えるとエンジンごとに並べて比較でき、best moisturizing eye cream のようなショッピングプロンプトを3つまで加えると、各エンジンがこれらの商品のうちどれを買い物客に見せるかがわかります。 1回のルックアップで次のことがわかります。
  • ChatGPT、Google AIによる概要、AIモード、Copilot に商品について尋ねたとき、その商品が表示されるか
  • 各エンジンがどの販売店とカタログの記録から、どの価格、評価、レビュー数で表示しているか
  • ChatGPT の回答モデルが商品について何を読み取ったか
  • エンジンごとに競合商品と比べてどうか
  • ショッピングの質問に対して、各エンジンがこれらの商品のうちどれを表示するか

ルックアップを送信する

ルックアップは質問に分かれます。質問とは、1つの商品または1つのショッピングプロンプトを1つのエンジンに尋ねることです。質問はそれぞれ通常のタスクとしてキューに入り、レスポンスにその一覧が入ります。次の例は、23件の質問のうち3件だけを残したものです。
  • lookup.id は送った idempotencyKey、送らなかった場合はサーバーが決めた UUID です。この値でルックアップを読み取ります。
  • asks[] の各項目には、role(product、competitor、prompt)、尋ねた内容(prompt または query)、その質問の task が入ります。拒否された質問には task の代わりに success: false と error が入ります。エラーを参照してください。
  • credits.creditsToCharge はレスポンスに入っている質問の料金の合計で、各質問が終わるまで残高から確保されます。creditsCharged はそれらの質問にすでに請求された額です。
lookup.status が COMPLETED になるまで GET /v1/product-lookup/{id} でルックアップを読み取ります。この例では約2分かかりました。ルックアップは最も遅いエンジンが回答した時点で終わります。webhook.url を指定すると、各質問のタスクが終わるたびに送信され、task.idempotencyKey にはルックアップ id で始まるその質問のキーが入ります。ルックアップ全体の完了を知らせる Webhook はないため、受け取るたびにルックアップを読み取って lookup.status を確認してください。スキーマは API リファレンスのProduct LookupとProduct Lookupの取得にあります。

リクエストフィールド

エンジンと質問

商品と各競合商品は同じ質問を受けます。 「指定時のみ」は、engines に入れたときだけ尋ねるという意味です。engines を省略すると、US のルックアップは ChatGPT、AIによる概要、AIモード、Copilot に尋ね、商品ごとの質問は5件です。KR のルックアップは NAVER AIタブ、ChatGPT、AIモードに尋ね、商品ごとの質問は4件です。ショッピングプロンプトは各エンジンに1回ずつ尋ねるので、US の既定では4件、KR の既定では3件です。上の例の質問は 3 × 5 + 2 × 4 = 23件でした。 ChatGPT に2回尋ねるのは、1回の質問で商品の記録が出るのは商品の半分ほどで、同じ質問を繰り返すと別の半分で出ることが多いためです。ほかの既定のエンジンは、2026-10-20 に50商品で試したときに商品を表示したエンジンです。 ChatGPT の行は、US の12商品と KR の10商品をそれぞれ2回ずつルックアップした結果です。Gemini は両市場の115件の質問で、商品の記録を1件も表示しませんでした。

ルックアップを読み取る

結果は5つの部分からなります。
  • lookup: 尋ねた内容、status、これまでに請求された credits。
  • summary と engines[]: 商品についての回答を、エンジン全体とエンジンごとにまとめたもの。
  • competitors[]: 競合商品ごとの、同じ形の summary と engines[]。
  • comparison[]: 商品と競合商品をエンジンごとに並べたもの。
  • prompts[]: 各ショッピングプロンプトへの各エンジンの回答。
lookup.status は、質問が始まるまで QUEUED、終わっていない質問があるあいだは PROCESSING です。すべての質問が終わって1件以上が完了すると COMPLETED、すべて失敗すると FAILED になります。質問が終わるたびに項目が埋まるので、完了前でも読み取れます。 次の例は、上のルックアップの lookup、summary、engines[] です。4つのエンジンのうち2つと、各リストの一部だけを残しています。
4つのエンジンすべてが商品を表示しました。ChatGPT は Ulta Beauty の販売店フィードの記録を表示し、回答モデルはこの記録から評価4.5とレビュー105件を読み取りました。ChatGPT は Amazon を含む3つの販売店のウィジェットカードも書きました。AIモードは1つの販売店の出品と、variant が付いたスティック版を表示し、同じブランドのアイジェルは otherListings に入れました。

summary

engines[]

尋ねたエンジンごとに1項目です。

出品のフィールド

出品とは、エンジンが持つ1つの販売店の商品の記録です。エンジンが返すフィールドだけが入ります。 source は、出品がどのカタログから来たかを示します。

ChatGPT のウィジェットカード

ChatGPT は、ショッピングの質問にカードで答えることがよくあります。カードにはそれぞれ販売店のページで読み取った販売店と価格がありますが、その裏にカタログの記録はありません。ルックアップはこのカードを、回答の記録のあとに chatgpt_widget の出品として読み取り、found にも数えます。
  • merchant はカードに書かれた販売店名、または購入リンクのドメインです。description はカードの説明行です。
  • カードには rating、reviewCount、available、ids、modelSees がありません。価格が $40–$62 のような範囲の場合、price は入りません。
  • 購入リンクも販売店の行もないカードは読み取りません。
  • その商品の記録や前のカードと、販売店と価格が同じカードは除きます。販売店名やリンク先のサイトが同じか、一方がもう一方で始まる場合は同じ販売店とみなします。Ulta、Ulta Beauty、ulta.com がその例です。
カタログの記録だけを見るには、source が chatgpt_widget の出品を除いて読んでください。

競合商品と比べる

1つの商品について尋ねた回答には、ほかのブランドの商品はほとんど出てきません。50商品の試験では一度も出ませんでした。そのため競合商品は自分で指定し、各競合商品に商品と同じ質問をします。competitors[] の各項目には競合商品の product、summary、engines[] があり、商品と同じように読みます。 comparison[] は、商品と競合商品を1行ずつ並べ、各行にエンジンごとの項目を置きます。次の例は、上のルックアップから Copilot だけを残し、商品については ChatGPT も残したものです。
3つの商品はいずれも4つのエンジンすべてで見つかりました。Copilot では、商品の最もレビューの多い出品が2,942件で、2つの競合商品は85,773件と117,193件でした。8件のショッピングプロンプトの回答のうち、CeraVe Eye Repair Cream は5件に、商品と Clinique All About Eyes は2件ずつに登場しました。

ショッピングプロンプト

prompts[] の各項目には、prompt と、エンジンごとに1項目ずつの engines[] があります。 ショッピングプロンプトへの回答には多くのブランドの商品が出てくるため、記録にブランド、つまり商品名の最初の単語が含まれている場合にだけ、ルックアップの商品として数えます。本文中の名前は、GEOモニターがブランドの言及を数えるのと同じ方法で、商品名全体を探して数えます。 次の例は、上のルックアップで AIによる概要と Copilot が best moisturizing eye cream に答えた内容です。出品はルックアップの商品だけを残しています。
AIによる概要は本文で商品の名前を挙げましたが、記録は2つの競合商品のものだけを表示しました。Copilot は3つの販売店の、商品の出品を表示しました。判定は名前で行うため、Clinique All About Eyes Rich のように名前に単語が加わった版も、その商品として数えます。

もう一度送る

質問にはそれぞれ、ルックアップ id から作られたキーがあります。
  • 商品の質問: <id>:<engine>:<ask>。例: eye-bomb-us:CHATGPT:buy。ChatGPT の質問は buy と price、ほかのエンジンの質問は name です。
  • n番目の競合商品の質問には、末尾に :c<n> が付きます。例: eye-bomb-us:CHATGPT:buy:c1。
  • n番目のショッピングプロンプトの質問: <id>:<engine>:p<n>。例: eye-bomb-us:AIMODE:p1。
同じ idempotencyKey でルックアップをもう一度送ると、すでにある質問はそのまま返し、足りない質問だけを追加します。請求されるのも、追加した質問の分だけです。クレジットや同時実行数の上限で拒否された質問を埋めるときや、リストの末尾に競合商品やショッピングプロンプトを加えるときに使います。再送で省いた競合商品やショッピングプロンプトは、ルックアップに残ります。 商品や国を変えたり、すでに埋まっている位置に別の競合商品やショッピングプロンプトを入れたりすると、409 RESOURCE_ALREADY_EXISTS を返し、何も書き込みません。失敗した質問は、再送しても失敗したまま返ります。エンジンに改めて尋ねて新しい回答を得るには、新しい idempotencyKey で送ってください。

料金

ルックアップは、商品(商品と各競合商品)ごとに10クレジット、ショッピングプロンプトごとに5クレジットで、どのエンジンに尋ねても同じです。
  • 上のルックアップは 3 × 10 + 2 × 5 = 40クレジットです。最大のルックアップ(商品1つ、競合商品5つ、ショッピングプロンプト3つ)は75クレジットです。
  • 商品やショッピングプロンプトのクレジットは、その質問に分けて割り当てます。US の既定のエンジンでは、商品の質問1件が2クレジット、ショッピングプロンプトの質問1件が1.25クレジットです。KR の既定のエンジンでは、商品の質問1件が2.5クレジット、ショッピングプロンプトの3件の質問は1.67、1.67、1.66クレジットです。エンジンを減らしても料金は変わりません。ChatGPT だけに尋ねると、商品の2件の質問はそれぞれ5クレジットです。
  • 質問はほかのタスクと同じく、送信時に確保され、完了時に請求されます。失敗した質問は請求されません。
  • プランの料金に換算すると、商品1つは Basic で $0.025、Max で $0.010 です。
確保とプランについてはクレジットと制限を参照してください。

結果を正しく読む

  • 1回のルックアップは、ある時点の記録です。 各エンジンは1〜2件の質問に答えます。1回だけ出た差で判断する前に、新しい idempotencyKey でもう一度ルックアップしてください。
  • 記録の値は変わらず、どの記録が出るかが変わります。 同じルックアップを4回実行したところ、同じ販売店の記録の価格、評価、レビュー数は、316個の値のうち307個が同じでした。実行ごとに変わるのは、回答がどの記録を表示するかです。そのため found(特に ChatGPT)、販売店、mostReviewed、priceRange、ショッピングプロンプトの shown と named は変わることがあります。
  • 数分の間隔でも、数時間の間隔と同じくらい変わります。 ChatGPT、AIモード、Copilot の回答は、3分の間隔でも11時間の間隔と同じくらい違いました。AIによる概要は数秒以内に尋ね直すと同じ回答が返ることがあるため、すぐに尋ね直した結果は新しい標本になりません。
  • 1件の回答より合計のほうが安定します。 4回の実行で、ショッピングプロンプトの回答は1件ずつ見ると変わりましたが、最も多くの回答に登場した商品は毎回上位でした。ショッピングプロンプトを継続して追跡するにはGEOモニターを使ってください。
  • found: false は今回の回答についての結果です。 今回の実行の質問が商品を表示しなかったという意味です。エンジンのカタログに商品がないという意味ではありません。
  • 判定は名前で行います。 GTIN を返すエンジンはありません。名前が変わった、または翻訳された商品は otherListings に入ることがあり、名前で区別できない版はその商品として数えることがあります。出品がおかしく見えるときは match を確認してください。

制限事項

  • 入力は商品名です。商品ページの URL と GTIN には対応していません。
  • 市場は US と KR です。
  • 1回のルックアップには、競合商品を5つ、ショッピングプロンプトを3つまで入れられます。US の既定のエンジンでは、最大のルックアップは質問42件です。
  • 競合商品は自分で指定したものだけです。ルックアップが競合商品を探すことはありません。エンジンが買い物客にどの商品を見せるかは、ショッピングプロンプトで確認します。
  • ChatGPT からは記録とウィジェットカードを読み取ります。回答の本文や表に書かれた販売店と価格は読み取りません。
  • 1件の回答から、出品は60件、引用ページは20件まで入ります。
  • ルックアップは、質問のタスクを読み取れるあいだ、つまり完了から24時間まで読み取れます。非同期タスクを参照してください。

エラー

送信時の拒否

拒否された質問

質問は単一のタスクと同じように受け付けられるため、残高(402 INSUFFICIENT_CREDITS)、プランの同時実行数(429 PLAN_CONCURRENCY_LIMIT)、キーの1日あたりのクレジット上限(429 KEY_DAILY_CREDIT_LIMIT)、ほかのエンジンだけを使えるキーのために拒否されることがあります。拒否された質問は success: false と error を持って asks[] に残り、ほかの質問はそのまま進みます。 質問は1件ずつ受け付けられます。各商品についての全エンジンの最初の質問と、各ショッピングプロンプトが、2件目の質問より先に入ります。そのため、プランに一部の質問しか入る余裕がない場合は、受け付けられた質問ができるだけ多くのエンジンと商品をカバーします。商品の最初の質問が1件も入らなかった場合はほかの質問はせず、最初の拒否がそのステータスのままレスポンスになります。402 INSUFFICIENT_CREDITS がその例です。同時実行数が2の Free プランでは、US のルックアップは商品の ChatGPT の最初の質問と AIによる概要の質問だけが入ります。それらが終わってからもう一度送ると、残りが入ります。最大の US のルックアップ(質問42件)は、ほかのタスクがなければ Basic の同時実行数50に収まります。 認証エラーはほかのリクエストと同じです。エラーを参照してください。

失敗した質問と読み取り

  • 失敗した質問は via[] で status: "FAILED" と error を持ち、請求されません。質問がすべて失敗したエンジンは status: "FAILED"、found: null で、summary.failed に入ります。
  • GET /v1/product-lookup/{id} は、アカウントにその id のルックアップがなければ 404 RESOURCE_NOT_FOUND を返します。タスクの読み取り期間を過ぎたルックアップも同じです。

次のステップ

GEOモニタリング

ショッピングプロンプトを複数のAIエンジンで定期的に追跡します。

Prompt Research

ある分野で人々が尋ねるショッピングの質問を見つけます。