Google AIモードのスクレイピング方法:回答、引用、およびソース
Expert in Web Scraping Technologies
TL;DR:
- Google AIモードは、インラインAI概要ブロックではなく、フルページの会話型回答エンジンです。 1つのプロンプトを多くの並行サブ検索に分解し、独自の引用ソースを持つ長い合成された多部構成の回答を返します — ChatGPTやPerplexityに最も近いGoogleの類似品です。
scraper.aimodeアクターは、1つの同期POSTでこれをキャプチャします。/api/v2/scraper/executeへの1回の呼び出しで回答が返されるため、トリガー→ポーリング→ダウンロードの流れを管理する必要はありません。- 1回の呼び出しで3つの回答形式と引用が返されます。
task_resultにはresult_text(通常の文章)、result_md(Markdown)、result_html(レンダリングされた回答)、引用元から取得した情報の配列citations、出所を示すためのraw_urlが含まれます。 citationsは引用シェアの表面です。 各エントリには出所の名前(タイトル、URL、サイト名、スニペット)が記載されているため、GoogleのAIモードが研究意図のクエリのために引き出すドメインを重複排除してランク付けできます。- 出口は
countryで固定されており、回答の言語は保証されません。 同じプロンプトが特定の実行時に非英語の回答を返すことがあるため、国がそれを設定するのではなく、下流で言語を検出してください。 - エンベロープは他のアクターラインと一致します。 すべての呼び出しは
{ status, task_id, task_result }を返すため、ここで書かれたクライアントはChatGPT、Gemini、およびPerplexityも読み取ります。 - 無料で始められます。 新しいScrapelessアカウントには無料トライアルクレジットが含まれています — app.scrapeless.comにサインアップしてください。
はじめに:AIモードはGoogleの回答エンジンであり、SERPブロックではありません
Google AIモードは、別のチャットスタイルの回答ページです:質問を投げかけると、Googleがそれを多くの並行サブ検索に分解し、長い合成された回答を返します。これは従来の青いリンクの上にあるAI概要ボックスではなく、異なるアクターによってキャプチャされた異なるsurfaceです。 AIモードは、Googleが研究や比較の質問をルーティングする場所であり、結果ページというよりもChatGPTやPerplexityのように振る舞います。
ブランドや研究チームにとって、そのページは現在の主要な目的地であり、大規模に読むのは困難です。回答はJavaScriptでレンダリングされています、レイアウトが変わり、その背後のソースは通知なしに変更されるマークアップに埋もれています。手動でキャプチャすることは、自動化と闘う会話ページを運営することを意味します。
scraper.aimodeアクターは、そのページを1つのリクエストとしてデータで返します:プロンプトが入り、構造化された回答がプレーンテキスト、Markdown、HTMLで返され、引用元が配列として提供されます。以下のセクションでは、キャプチャリクエスト、応答スキーマのフィールドごとの説明、プロンプトセットを引用シェアテーブルに変えるPythonクライアント、およびGoogleのAIサーフェスの残りの部分の補助アクターをカバーします。インラインAI概要ブロックについては、Google AI概要のスクレイピングが別のscraper.overviewアクターをカバーしています。
Google AIモードデータでできること
- 引用のシェア追跡。 固定の研究プロンプトセットをスケジュールで実行し、それぞれのAIモードが引用するドメインをカウントします — GoogleがAIモードにルーティングするクエリのGEOメトリックです。
- ブランドおよび競合の監視。 購入または比較の質問で製品名が開始または停止されたとき、それがどのソースに由来するかを検出します。
- コンテンツギャップ分析。 AIモードがトピックのために引き出しているページと、あなたのページが全く表示されないページを確認します。
- RAGと評価データセット。
result_textとcitationsをクリーンなプロンプト–回答–ソース行として検索システムや評価セットに供給します。 - 時間による回答の差分。 各キャプチャごとに
result_htmlを保存し、レンダリングされた回答の差分を比較してGoogleの合成がどのように変化するかを観察します。 - マルチロケールのキャプチャ。 各呼び出しで
countryを設定し、回答およびそのソースが市場ごとにどのように変化するかを比較します。
Scrapeless Google AIモードスクレイパーの理由
Scrapeless Google AIモードスクレイパーは、ユニバーサルスクレイピングAPIラインの一部であるscraper.aimodeアクターです。AIモード専用に、次の特徴があります:
- 回答を返す1回の同期POST — 管理するトリガー→ポーリング→ダウンロードの流れはありません。
- 1つの応答で3つの出力形式:埋め込み用の
result_text、レンダリング用のresult_md、信頼性のあるアーカイブ用のresult_htmlです。 - 統一された
citations配列 — 広告やショッピングフィールドが混ざっていない、引用追跡用に運用可能な単一の属性表面。 - あなたが渡した
countryによってピン留めされた住宅出入口、サーバーサイドで実行されるレンダリングとアンチボット処理。 - 他のアクターラインと同じ
x-api-tokenヘッダーと{ status, task_id, task_result }エンクロージャ。
無料プランでのAPIキーを取得するには、app.scrapeless.com にアクセスしてください。
前提条件
- Python 3.10以上(下記のクライアントは
requestsのみを使用)またはcurl呼び出し用の任意のHTTPクライアント - ScrapelessアカウントとAPIキー — app.scrapeless.comでサインアップ
SCRAPELESS_API_KEYとしてエクスポートされたキー- 基本的なターミナルとJSONの理解 — ブラウザ、プロキシ、またはCAPTCHAソルバーを購入する必要はありません
Google AI モードスクレイパーの動作
/api/v2/scraper/execute への単一のPOSTリクエストで、scraper.aimode アクターが回答を返します。このアクターは、サーバーサイドでAIモードページをレンダリングし、応答エンクロージャに解析します。
リクエストパラメータ
パラメータは input オブジェクト内に入ります。
input フィールド |
必須 | 説明 |
|---|---|---|
prompt |
はい | AIモードに送信する自由形式の質問; 研究と比較のフレーズが最も信頼性の高い回答をトリガーします |
country |
はい | 2文字の地域コード(例: US);実行のために住宅出入口をピン留めします |
curlを使ったクイックキャプチャ
bash
# 環境にSCRAPELESS_API_KEYが必要です。
curl -sS -X POST https://api.scrapeless.com/api/v2/scraper/execute \
-H "Content-Type: application/json" \
-H "x-api-token: ${SCRAPELESS_API_KEY}" \
-d '{
"actor": "scraper.aimode",
"input": {
"prompt": "最良のランニングシューズ 2026",
"country": "US"
}
}'
# 引用されたソースのために | jq '.task_result.citations' にパイプします。
応答エンクロージャ
回答は、ソースが citations 配列として、起源のための raw_url とともに task_result の下に存在します。以下の形状は、上記のプロンプトに対する実際のキャプチャです; フィールドの値は、ライブ実行からの例示的サンプルです。
json
// スキーマはscraper.aimodeが返すもの; フィールドの値はライブ実行からの例示的サンプルです(オファー/引用は省略)。
{
"status": "success",
"task_id": "…",
"task_result": {
"result_text": "### 最良の日常用トレーナー(最も汎用性のあるもの)\n#### ASICS Novablast 5 — 価格: $129.95(以前は$150) | 販売者: ASICSなど | 評価: 4.x …",
"result_md": "### 最良の日常用トレーナー(最も汎用性のあるもの)\n\n…",
"result_html": "<div>… レンダリングされたAIモードの回答 …</div>",
"citations": [
{
"website_name": "GearLab",
"title": "2026年のベストランニングシューズ10選 | ラボテスト済み・ランク付け済み",
"url": "https://…",
"snippet": "…",
"favicon": "https://…",
"thumbnail": "https://…"
}
],
"raw_url": "https://…"
}
}
どの形式を読むかは仕事によって異なります:
result_text— 平文、埋め込み、言語検出、またはクイックパース用の最もクリーンなフィールド。result_md— レンダリング用のマークダウン構造; それがbase64データURIとしてインライン画像を運ぶことができるので、保存する前にそれらを取り除いてください。result_html— 忠実にレンダリングされた回答、大きい(数百KB);アーカイブと差分確認用に保持し、パース用ではありません。citations— 構造化された属性配列; これは重複を排除して引用シェア用にランク付けするものです。
運用からのいくつかの正直な観察:
- 言語は
countryで固定されません。 同じUSプロンプトは、ある実行で英語の回答を返し、別の実行では非英語の回答を返しました。回答の言語を変数として扱い、下流でresult_textから検出しフィルタリングし、国がそれを設定すると仮定しないでください。 - 出力は実行ごとに異なります。 同じプロンプトに対する呼び出し間で引用数と回答の長さが変わる —
task_idとキャプチャのタイムスタンプを保存してください、なぜなら時系列全体が信号であり、単一の呼び出しではないからです。 - すべてのクエリがAIモードをトリガーするわけではありません。 会話形式、研究、および比較のプロンプトが回答をトリガーします; 単純なナビゲーションクエリはそうではないかもしれません。研究の意図を持ってフレーズを作成してください。
- すべてのフィールドをnullableとして扱います。
citationsは空で戻ることがあり、特定の実行でフォーマットが欠けることがあるため、存在を仮定するのではなく、それに対してガードしてください。
無料プランでAPIキーを取得するには、app.scrapeless.com を訪問してください。
PythonでのAPI統合
スケールのためのパターンは、固定プロンプトセット、各々の呼び出し、領域集計にフラット化された引用です。クライアントは環境から SCRAPELESS_API_KEY を読み込み、プロンプトをポストし、引用ドメインの集計を構築しますので、引用シェアの表を直接生成できます。
python
"""プロンプトセットのためにGoogle AIモードの回答をキャプチャ(scraper.aimode)。
export SCRAPELESS_API_KEY=your_api_token_here
python capture_aimode.py
"""
import os
from collections import Counter
from urllib.parse import urlparse
import requests
ENDPOINT = "https://api.scrapeless.com/api/v2/scraper/execute"
PROMPTS = [
"2026年のベストランニングシューズ",
"小規模ビジネス向けのベストCRM",
"2026年の最も信頼性の高い電動SUV",
]
def capture(prompt: str, country: str = "US") -> dict:
resp = requests.post(
ENDPOINT,
headers={
"Content-Type": "application/json",
"x-api-token": os.environ["SCRAPELESS_API_KEY"],
},
json={"actor": "scraper.aimode", "input": {"prompt": prompt, "country": country}},
timeout=180,
)
resp.raise_for_status()
return resp.json().get("task_result", {}) or {}
def cited_domains(task_result: dict) -> list[str]:
domains = []
for citation in task_result.get("citations") or []:
url = citation.get("url") or ""
host = urlparse(url).netloc.removeprefix("www.")
if host:
domains.append(host)
return domains
if __name__ == "__main__":
tally = Counter()
for prompt in PROMPTS:
result = capture(prompt)
text = result.get("result_text") or ""
domains = cited_domains(result)
if not text and not domains:
# Persistent empty = no AI Mode answer for this query/geo. Record and move on.
print(f"{prompt}: AIモードの回答なし")
continue
tally.update(domains)
print(f"{prompt}: {len(text)} 文字, {len(domains)} 引用")
print("\n引用のシェア(プロンプトセット全体のドメイン):")
for domain, count in tally.most_common(10):
print(f" {count:>2} {domain}")
各プロンプトは回答テキストとAIモードが引用したドメインを生成します。セット全体のドメインを合計することで引用のシェアテーブルが作成されます。会話を続けるためには、フォローアップを独立したプロンプトとして送信します — 各呼び出しは1ターンをキャプチャし、マルチステップスレッドは同じトピックに基づく独立したキャプチャのシーケンスです。行を倉庫に定期的に書き込み、引用シェア、回答の漂流、新しいソースが時系列として抽出されます。
エンドツーエンドのGoogle AIキャプチャ用コンパニオンアクター
1つのアカウントと1つのエンベロープで、Googleのすべての回答サーフェスを読み取ります。同じクエリ、国、タイムスタンプでキャプチャすることで、完全な画像が得られます。
scraper.overview— インラインAI概要ブロック; すべてのAI概要作業をそこに送信します(Google AI Overview scrapingを参照)。scraper.google.search— 同じクエリのオーガニック結果、AIの回答と対比するためのもの。scraper.chatgpt,scraper.gemini,scraper.perplexity,scraper.grok— 同じ{ status, task_id, task_result }形状の残りの回答エンジン。ランク付けされた最も優れたLLMスクレーパー の比較は、同じエンベロープ上でこれらのサーフェスを読み取ります。
一般的な問題を避ける方法
- 空の出力または変動する出力。
result_textやcitationsが空の場合があり、カウントが実行ごとに変わることがあります。task_idとタイムスタンプを保存してください; シリーズがシグナルです。すべてのフィールドをヌル可能として扱います。 - クエリに対するAIモードの回答がない。 すべてのプロンプトがAIモードをトリガーするわけではありません — 研究や比較の質問としてフレーズ化してください; ナビゲーションのルックアップは何も返さない場合があります。
- 誤った言語。 回答の言語は、渡された
countryと異なる場合があるため、result_textから言語を検出してフィルター処理してください、仮定するのではなく。 - フォーマットの選択。 埋め込みや言語チェックには
result_textを、レンダリングにはresult_mdを使用し(インラインのbase64画像を削除)、アーカイブや差分化にはresult_htmlのみを使用します。
まとめ:Googleの会話回答のための1回のPOST
Google AIモードをキャプチャするには、1回の呼び出しが必要です:scraper.aimode アクターへのPOSTは、会話の回答を3つの形式で返し、引用ソースを配列として提供します。研究の意図でプロンプトをフレーズ化し、countryを固定し、result_textとcitationsを読み取り、下流で言語を検出し、すべてのフィールドをヌル可能として扱います。定期的に固定のプロンプトセットをユニバーサルスクレイピングAPIクレジットで実行し、AI概要ブロックとオーガニック結果と共にAIモードをキャプチャして、Google-AIの全体像を得ます。リクエストの形状とフィールド名は、LLM Chat Scraperリファレンス内のライブscraper.aimodeアクターに対して確認されています。
AI回答の可視化パイプラインを構築する準備はできましたか?
無料プランを取得し、AI回答データパイプラインを構築している開発者とつながるためにコミュニティに参加してください: Discord · Telegram.
以下のリンクから[app.scrapeless.com](https://app.scrapeless.com/passport/login/?utm_source=website&utm_medium=blog&utm_campaign=universalscrapingapi&utm_term=scrape-google-ai-mode)にサインアップして無料トライアルクレジットを取得し、上記のプロンプトを研究質問やマーケットの可視化プログラムが追跡するものに向けてください。
---
## よくある質問
**Q: Google AIモードをスクレイピングすることは合法ですか?**
返されるデータは、Googleがどのユーザーにも表示する公開されているAIモードの回答です。スクレイピングに関しては、法的な状況や使用方法によって合法性が異なるため、関連する規約を確認し、構築前に法律に相談し、公開されている回答とソースデータのみを収集してください。
**Q: Googleは公式のAIモードAPIを提供していますか?**
いいえ。AIモードの回答に対する公式のエンドポイントは存在せず、そのためページをレンダリングおよび解析する管理されたアクターが必要です。
**Q: プロキシやCAPTCHAソルバーは必要ですか?**
いいえ。レンダリング、住宅からのエグレス、およびボット対策はサーバーサイドで動作します。`x-api-token`ヘッダーを持つPOSTを1回送信し、JSONを読み返します;`country`フィールドがエグレスマーケットを選択します。
**Q: AIモードはAIオーバービューとどのように異なりますか?**
AIモードは完全なページの会話型回答エンジンで、プロンプトを多くのサブ検索に展開します;AIオーバービューはオーガニック検索結果の上にあるインラインブロックです。これらは別個の表面であり、別々のアクター(ここでは`scraper.aimode`、ブロックのための`scraper.overview`)があります。
**Q: 返されるデータの形式は何ですか?**
封筒はJSONです:`{ status, task_id, task_result }`。回答自体は3つの形式で提供されます — `result_text`、`result_md`、および`result_html` — さらに`citations`配列と`raw_url`があります。
**Q: 引用されたソースをどのように抽出しますか?**
`task_result.citations`を読み取ります;各エントリーはソースのタイトル、URL、サイト名、およびスニペットを持っています。各URLからホストを解析し、キャプチャ全体で引用シェアを集計します。
**Q: RAGにはどの形式を使用するべきですか?**
埋め込み用には`result_text`を使用し、構造を求める場合は`result_md`を使用します — インラインのbase64画像を取り除いた後に。アーカイブ用には`result_html`を保持し、取得には使用しないでください。
**Q: 特定の国の回答をキャッチできますか?**
`country`コードを渡すことで、市場ごとに住宅のエグレスを固定できます。これがエグレス地域を制御します;回答言語は依然として異なる可能性があるため、言語を検出し、下流でフィルターしてください。
**Q: なぜ私の応答が空だったり、ブラウザと異なるのですか?**
クエリがAIモードを引き起こさない場合や、地域が異なる場合、または出力が実行ごとに異なる場合があります。研究の意図でフレーズを作成し、`country`を固定し、`task_id`とタイムスタンプを保存し、フィールドをヌル許容として扱います。
Scrapelessでは、適用される法律、規制、およびWebサイトのプライバシーポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツは、デモンストレーションのみを目的としており、違法または侵害の活動は含まれません。 このブログまたはサードパーティのリンクからの情報の使用に対するすべての責任を保証せず、放棄します。 スクレイピング活動に従事する前に、法律顧問に相談し、ターゲットウェブサイトの利用規約を確認するか、必要な許可を取得してください。



