先に、私の結論
悩みや表現を見つけて論点を整理するなら、まずGrok APIが使いやすい。
投稿原文、件数、日時、反応数を正確に集めるならX APIが向く。
Grokが選んだ投稿を引用するときは、投稿IDとX側のデータを照合する。
一般に「Grok API」と呼ばれているものの正式な提供元はxAIです。この記事では、以降「xAI API(Grok API)」と表記します。
Grok APIとX APIは、得意な仕事が違う
ざっくり言うと、xAI API(Grok API)はX上の声を探して論点を整理するのが得意です。X APIは、投稿ID、原文、投稿日時、反応数などを決めた条件で集めるAPIです。
- 悩みや不満、実際に使われている言葉を探したいなら、まずGrok API
- 件数、日時、いいね数などを集計したいなら、X API
- Grokが選んだ投稿を記事や資料で引用するなら、X側の一次データで再確認
定性調査だけならGrok APIから始め、定量データが必要になった時点でX APIを追加するのが現実的です。
Grok APIとX APIの比較
| 比較項目 | xAI API(Grok API) | X API |
|---|---|---|
| 提供元・管理画面 | xAI・console.x.ai | X・console.x.com |
| 認証情報 | XAI_API_KEY |
Bearer Token、OAuthなど |
| 課金・クレジット | モデルと検索ツールの利用料をxAI側で管理 | 投稿取得などの利用料をX側で管理 |
| 主な役割 | 生成、推論、検索結果の要約・整理 | Xの投稿データを構造化して取得・操作 |
| X検索の方法 | Grokがサーバー側ツールのx_searchを使う |
Recent Search、Full-Archive Searchなどを直接呼ぶ |
| 投稿原文の正確性 | 最終回答はAI生成。引用候補の再確認が必要 | 投稿オブジェクトとして原文を取得できる |
| 投稿日時 | 検索条件には使えるが、収集データとしての保証は別 | created_atなどのフィールドで取得できる |
| エンゲージメント数値 | 正確な集計用途には不向き | public_metricsで取得できる |
| 網羅性・ページネーション | 全件取得を保証する仕組みではない | next_tokenを使って複数ページを取得できる |
| セマンティック検索 | 得意。意味の近い投稿を探せる | 基本は検索演算子で条件を指定する |
| 向いている分析 | 定性調査、論点整理、仮説づくり | 定量調査、時系列分析、定期監視 |
| 導入のしやすさ | xAIのキーとクレジットで始められる | Developer登録、アプリ作成、認証情報、X側クレジットが必要 |
xAIの公式資料では、x_searchはキーワード・意味・ユーザー検索、スレッド取得に対応しています。期間やハンドルを絞り、画像・動画を理解させる設定もあります。
X APIには直近7日間のRecent Searchと、2006年以降を対象にできるFull-Archive Searchがあり、ページネーションもできます。
実際に接続してからCSVへ保存するまで
最初にxAI APIへ接続すると、クレジット購入前は403で「新しいチームにクレジットまたはライセンスがない」という内容が返りました。
購入後はモデル一覧の取得とGrokの応答に成功。x_searchでX投稿を調べるPythonのCLIを作りました。出力は人が読むMarkdownと、分類・集計用のCSVの2種類です。
ただ、最初は出力の長さが安定しませんでした。そこでJSON Schemaによる構造化出力を導入し、次の5章を必須にしました。
- 主要な論点
- 共感・肯定の声
- 不満・懐疑の声
- 使われている表現
- 母集団に関する注意
JSON Schemaは、AIの返答の項目や形式を決める仕組みです。xAIの公式資料でも、対応範囲では指定したスキーマに合う出力を返すと説明されています。
ここまでは順調でした。しかし、次に大きな問題が見つかりました。
今回初めて分かった5つのこと
1. Grok APIとX APIの契約・残高は別
xAI APIが使えるようになっても、X APIがそのまま使えるわけではありませんでした。
xAI側はconsole.x.aiとXAI_API_KEY、X API側はconsole.x.comとBearer Tokenなどを使います。管理画面、認証情報、残高も別です。
X APIへBearer Tokenを付けてリクエストすると、今回は401ではなくクレジット不足を示す402が返りました。少なくとも、要求は認証情報の欠落ではなく、X API側のクレジットを確認する段階まで進んでいました。クレジット購入後の投稿取得は試していません。
2026年8月17日時点のX APIは従量課金で、公開投稿の読み取りは1件0.005ドル。xAI側のx_searchは、モデル料金に加えて1,000回あたり5ドルです。料金は変わるため、利用前に公式ページで確認してください。
2. GrokのX Searchは、X APIの代替ではない
x_searchは、生活者が何に困り、どんな言葉で話しているかを探す定性調査に強いと感じました。単語が完全一致しなくても意味の近い投稿を探し、論点をまとめてくれるからです。
一方、全件取得、正確な日時・反応数、同じ条件で繰り返せる集計にはX APIが向いています。
Grok APIは「調査して整理する人」、X APIは「条件どおりにデータを運ぶ仕組み」と考えると分かりやすいです。
3. JSON Schemaは形式を保証しても、事実を保証しない
5章構成やCSVの列は固定できました。しかし、実APIテストではuserExample1という架空ハンドルと、サンプルのような投稿IDが出力されました。
JSONとしては正しく、必要な列も揃っています。それでも、引用元としては使えません。
つまり「決めた形式で出た」と「中身が事実である」は別問題でした。
4. citationも、そのまま全件採用してはいけない
xAIのレスポンス末尾には、検索中に参照したcitationが返ります。私が確認したものはhttps://x.com/i/status/{id}形式で、投稿者のハンドルは含まれていませんでした。
このURLは実際の投稿URLへ307リダイレクトされました。X公式のoEmbed APIでは、認証なしで本文、投稿者、URLを取得できました。
ただし、citationは「最終回答で引用した投稿の一覧」とは限りません。xAIの公式資料にも、検索中に出会った全ソースが入り、最終回答で直接使われなかったURLも含まれると明記されています。
5. 定性リサーチでも一次データ検証が必要
AIの要約は、仮説を作るところまではとても便利です。ですが、実在する投稿として紹介するなら、投稿ID、Xの公式URL、X側から取得した本文まで戻って確認する必要があります。
生成AIが得意な整理と、一次データが担う証明を分けるという話です。
架空引用と周辺投稿が混ざった問題
最初はGrokが出した引用文、ハンドル、URLをCSVへ保存していました。しかしuserExample1のような例が出たため、この方式はやめました。自然な文でURLの形も正しくても、投稿は実在しません。
反対に、citationの投稿が実在しても、それだけでは採用できません。今回の1回の検索ではcitationが60件あり、59件はoEmbedで実在確認できました。しかし全件入れると、周辺情報やテーマとの関係が薄い投稿まで混ざりました。
ここで分かったのは、「実在性」と「今回の回答への関連性」は別々に確認しなければならないということです。
三重一致で引用を確認した
最終的に、次の3条件が同じ投稿IDで一致したものだけをCSVへ入れる設計にしました。
- Grokが最終的な引用対象として選んだ投稿ID
- xAIの
x_searchが返した実在citation ID - X公式oEmbedで本文、ハンドル、完全なURLを取得できた投稿
この三重一致を満たしたのは9件でした。
60件、59件、9件という数字は、今回行った1回の検索結果です。Grok API全体の精度や一般的な採用率を示す数字ではありません。
CSVの本文も、Grokの生成文ではなくoEmbedで取り直した本文へ差し替えました。
なお、oEmbedは本来、投稿をWebページへ埋め込む仕組みです。大量収集や継続監視まで広げるなら、利用条件を確認してX APIへ移行するのが安全です。
Grok APIが向いている用途
- 悩みや不満の探索
- 実際に使われている語彙の発見
- 論点の分類と仮説づくり
- セマンティック検索
- 少数の代表投稿を使う定性調査
- 画像・動画を含む投稿の探索
X APIが向いている用途
- 投稿原文の正確な収集
- 投稿件数の集計
- 投稿日時の分析
- いいね、リポスト、返信数の分析
- ページネーションを使った大量取得
- 定期モニタリング
- 再現可能な定量調査
- 投稿IDを基準にしたデータ管理
私なら、この順番で組み合わせる
- Grokの
x_searchで、テーマ、検索語、代表的な悩みを見つける - citationの投稿IDで、実在する投稿か確認する
- X公式oEmbedまたはX APIで、本文と投稿者を取り直す
- Codexなどで重複除外、分類、CSV化、レポート作成を行う
- 件数、日時、反応数が必要になったらX APIを追加する
「生活者がどんな言葉を使っているか」を数件から探すならGrok API。「この不満は何件か」「先月より増えたか」「反応が大きい投稿はどれか」まで見るならX APIです。
まとめ
Grok APIとX APIは、名前やX検索で結びついて見えますが、別々に契約・管理するサービスです。
Grok APIは会話から悩みや表現を発見し、X APIは投稿データを正確に取得して件数や日時、反応数を扱うのに向いています。
一番の学びは、構造化出力がきれいでも引用の真正性までは保証されないことでした。citationも周辺投稿を含むため、全件採用はできません。
AIには「探す・読む・整理する」を任せ、引用に使うデータはX側へ戻って確認する。この役割分担が、Xリサーチを安全に実務へ入れる近道だと思います。
※仕様・料金は2026年8月17日時点のものです。利用前にxAI・Xの公式ドキュメントと利用条件を確認してください。
コピーして使えます
Xリサーチの方法を決めるための指示
ついでに気になったこと
Grok APIだけでXの定性調査はできる?
悩み、語彙、論点を探す定性調査なら始められます。ただし、代表投稿を引用するときは、citationとX側の一次データを使って実在性と本文を確認する必要があります。
Grok APIを契約すればX APIも使える?
自動的には使えません。xAI APIとX APIは管理画面、認証情報、クレジットが分かれています。利用前にそれぞれの公式コンソールで現在の条件を確認してください。
JSON Schemaを使えば架空引用を防げる?
形式や必須項目は固定できますが、引用先の実在までは保証しません。今回も形式は正しいまま、架空のハンドルと投稿IDが入りました。
oEmbedだけで大量の投稿を集めても大丈夫?
oEmbedは本来、投稿をWebページへ埋め込むための仕組みです。少数の引用確認には使えますが、大量収集や継続監視は利用条件を確認し、X APIを使う設計を検討してください。
最初からGrok APIとX APIの両方が必要?
定性調査だけならGrok APIから始められます。投稿件数、日時、公開反応数を意思決定に使う段階で、X APIを追加するのが現実的です。