如何抓取谷歌AI概述:SEO和品牌AI可见性监控的完整指南
Advanced Data Extraction Specialist
主要要点:
- 一个演员,整个AI概述表面。
scraper.overview返回AI概述主体(Markdown + 纯文本)、引用来源面板、相关搜索网页来源、赞助位置以及购物标记设置——所有这些都以结构化JSON的形式通过单个HTTP POST返回。 - 国家固定的住宅出口。
input.country字段通过地理匹配的住宅代理路由请求,因此生成的AI概述是该国真实用户所看到的。已通过US和GB进行端到端验证。 - 一个权威的信封。 每个成功的响应都为
{ status, task_id, task_result }。task_result.content是带有[N]引用的Markdown;task_result.rawtext是无引用的相同主体;task_result.source和task_result.web_source是两个排名链接面板。 - 与
scraper.google.search和scraper.aimode配对。 AI概述是Google AI的一个表面——AI模式标签和经典的自然搜索结果页面是兄弟关系。同一Scrapeless账户,相同的身份验证头。 - 免费开始。 新的Scrapeless账户包括免费的Scraper API积分——在Scrapeless网站注册。
引言:结构化访问Google的AI概述
Google的AI概述(AIO)在越来越多的信息、比较和购物查询中位于搜索引擎结果页面(SERP)的顶部。对于SEO团队来说,它已经取代了特色摘要,成为承载答案的表面;对于品牌监测来说,它现在是潜在客户阅读产品信息的第一件事;对于AI基础管道,它是Google已验证的相关引用的精选集。
直接从呈现的SERP抓取AIO是一个不断变化的目标。该块在“生成”占位符后延迟加载,标记在A/B变体之间轮换,引用面板独立于主体填充。可以创建DOM抓取管道,但它承担了任何前端目标的选择器维护成本——而且它仍然需要住宅出口、JavaScript渲染和CAPTCHA处理。
Scrapeless Scraper AI概述API(actor: "scraper.overview")将所有这些简化为一个HTTP POST。调用者发送一个提示和一个国家;API返回一个结构化的JSON信封,其中包含AIO主体的两种格式(带引用的Markdown,无引用的纯文本)、引用的来源、相关搜索网页来源、AIO上方的赞助位置及购物/购买链接标记。身份验证、代理路由、JavaScript渲染、延迟加载轮询和选择器维护都是服务器端的问题。
本指南讲解了完整的集成:团队为什么使用API、请求和响应结构、参数和字段参考、可运行的Python和Node.js客户端、验证中观察到的错误矩阵,以及陪伴演员(scraper.google.search、scraper.aimode)的简短游览,这些演员完善了生产Google-AI管道。
你可以用它做什么
- 监测AI概述排名和存在。 跟踪哪些目标关键词实际上呈现了AIO,以及频率——AIO触发率在2026年本身就是一个高信号的SEO KPI。
- 地理引用跟踪。 获取每个AIO引用的域列表,按品牌、主题集、地理区域聚合引用份额。这是有机声音份额的地理等价物。
- 品牌在AI答案上的监测。 观察Google的AIO在潜在客户搜索您的品牌或竞争对手时展示了哪些第三方评论、比较和编辑内容。
- 竞争对手可见性审计。 比较竞争对手品牌查询的引用来源列表与您自己的——差距就是您的地理内容路线图。
- 用于大型语言模型评估和RAG的训练数据。 每个AIO都是一个经过筛选的查询→基础答案→引用集三元组。以固定时间戳和代理地理位置捕获,它是RAG评估和答案质量基准的可重复的真实数据。
- 赞助区域情报。 同一个响应包含了在AIO上方为相同查询运行的广告(广告主、标题、展示URL、跟踪令牌)。将其与AIO主体配对,以研究广告主在AI增强的SERP上的行为。
- 购物意图呈现。
task_result.is_overview_shopping、is_shopping和purchase_link是标记Google已将查询分类为商业的AIO级别标志。对于过滤购买意图术语的零售情报管道非常有用。 - 多区域捕获。 每个请求设置
input.country,以读取美国、英国、德国、法国、日本及其他支持的住宅代理区域真实用户看到的AIO。
在Scrapeless,我们仅访问公开可用的数据,同时严格遵守适用的法律、法规和网站隐私政策。本帖中的内容仅用于演示目的。
为什么使用无抓取器的Scraper AI概述API
该API将Google的AI概述块——一个懒加载、旋转的、地理敏感的界面——转变为一个单一的结构化JSON HTTP调用。
- 无DOM抓取,无Playwright,无选择器维护。 发送
{prompt, country},接收{ads, content, rawtext, source, web_source, ...}。主体以带有内联[N]引用的markdown格式交付,并且还提供一个去掉引用的纯文本版本。 - 国家固定的住宅出口。
input.country字段通过符合地理匹配的住宅代理路由请求。返回的AI概述是该国家真实用户会看到的内容——而不是通用的美国回退。 - 懒加载在服务器端处理。 AIOs在“生成中”占位符的后面进行渲染,执行者通过服务器端轮询来获取;这种轮询主导了在验证中观察到的约12–18秒的端到端延迟。调用者仅接收已完成的主体,而不需要实现等待循环。
- 预解析的引用面板。
task_result.source是AI概述的引用来源面板(Google将答案归属的链接);task_result.web_source是出现在AIO下方的相关搜索面板。两者都以{title, url, snippet, website_name, favicon, thumbnail}的数组形式到达。 - 购物信号作为一等字段。
is_overview_shopping、is_shopping和purchase_link标记了商业意图的AIO,无需调用者解析主体。 - 与产品线其他部分相同的无抓取认证。 Scraper AI概述API使用与
scraper.google.search、scraper.amazon和通用抓取API相同的x-api-token头。一个帐户,多个界面。
在Scrapeless网站获取免费计划的API密钥。Scraper API线与抓取浏览器、通用抓取API和AI代理一起在定价目录中。
先决条件
- 一个Scrapeless账户和API密钥——请在Scrapeless注册。
- 一个带有
curl的终端(用于烟雾测试)或Python 3.10+ / Node.js 18+的集成客户端。 - 对HTTP和JSON有基本了解。
无需浏览器,无需单独购买Playwright或代理计划。执行者处理住宅出口、JavaScript渲染、反检测和懒加载轮询。
Scraper AI概述API如何工作
集成是一个HTTP POST。从Scrapeless仪表板获取API令牌并将其存储为环境变量:
bash
export SCRAPELESS_API_TOKEN=your_token_here
端点为POST https://api.scrapeless.com/api/v2/scraper/execute,头部x-api-token: <YOUR_TOKEN>和一个命名执行者及其输入的JSON主体:
bash
curl --location 'https://api.scrapeless.com/api/v2/scraper/execute' \
--header 'Content-Type: application/json' \
--header "x-api-token: ${SCRAPELESS_API_TOKEN}" \
--data '{
"actor": "scraper.overview",
"input": {
"prompt": "最佳跑鞋",
"country": "US"
}
}'
成功调用在约15秒的端到端时间内返回HTTP 200,主体为以下标准封装。
请求参数
| 参数 | 必需 | 类型 | 描述 |
|---|---|---|---|
actor |
是 | 字符串 | 必须为"scraper.overview" |
input.prompt |
是 | 字符串 | 你希望AI概述的Google查询。自由形式的自然语言。空值返回HTTP 400,错误信息为Field validation for 'Prompt' failed on the 'required' tag。 |
input.country |
是 | 字符串 | ISO 3166-1 alpha-2国家代码——US、GB、DE、FR、JP等。确定住宅代理出口,从而确定Google返回的AIO的本地化。 |
响应封装
成功响应是一个具有三个顶级键的JSON对象:
json
{
"status": "success",
"task_id": "ca132d3f-dc04-464e-b652-53231a8aeb8f",
"task_result": {
"ads": [ /* AIO上方的赞助位置 */ ],
"content": "**GraphQL**是一种开源查询语言 ... ([GraphQL][1]) ([Postman博客][2]) ...\n\n[1]: https://graphql.org/ \"GraphQL — ...\"",
"rawtext": "GraphQL是一种开源查询语言 ...",
"is_overview_shopping": true,
"is_shopping": true,
"purchase_link": true,
"metadata": { "rawUrl": "https://www.google.com/search?ApiType=overview&IsShopping=true&oq=...&q=..." },
"products": null,
json
{
"source": [ /* AI 概览引用来源 */ ],
"web_source": [ /* AIO 下面的相关搜索网页来源 */ ]
}
python
def fetch_aio(prompt: str, country: str = "US", retries: int = 3, backoff: float = 3.0):
body = {"actor": "scraper.overview", "input": {"prompt": prompt, "country": country}}
last = None
for attempt in range(retries):
resp = requests.post(URL, headers=HEADERS, json=body, timeout=60)
last = resp
if resp.status_code == 200:
payload = resp.json()
if payload.get("status") == "success":
return payload["task_result"]
# 瞬态错误:400 和 "execution failed" 是可重试的情况
if resp.status_code == 400 and "execution failed" in resp.text:
time.sleep(backoff * (attempt + 1))
continue
# 硬错误:认证失败、行为者错误、缺失提示 — 不要重试
resp.raise_for_status()
raise RuntimeError(f"AIO 抓取已耗尽重试次数: {prompt!r}: {last.text}")
keywords = [
"最佳跑步鞋",
"最佳无线耳塞用于跑步",
"如何选择跑步鞋",
]
for kw in keywords:
result = fetch_aio(kw, country="US")
print(f"\n=== {kw} ===")
print(f" 引用来源: {len(result['source'])} "
f"网页来源: {len(result['web_source'])} "
f"广告: {len(result['ads'])}")
这是关键词批处理监控的承载模式。保持并发适中——每个令牌三个到五个并行工作者是一个安全的起始点——并在收到 execution failed 信号时进行退避,而不是将其视为硬错误。
在免费计划中获取您的 API 密钥:Scrapeless 网站
在 Node.js (18+) 中集成 API
在 Node 中使用内置 fetch 进行相同的调用:
js
const URL = "https://api.scrapeless.com/api/v2/scraper/execute";
async function fetchAIO(prompt, country = "US") {
const resp = await fetch(URL, {
method: "POST",
headers: {
"x-api-token": process.env.SCRAPELESS_API_TOKEN,
"Content-Type": "application/json",
},
body: JSON.stringify({
actor: "scraper.overview",
input: { prompt, country },
}),
});
if (!resp.ok) {
const text = await resp.text();
throw new Error(`HTTP ${resp.status}: ${text}`);
}
const payload = await resp.json();
if (payload.status !== "success") {
throw new Error(`AIO 抓取失败: ${JSON.stringify(payload)}`);
}
return payload.task_result;
}
const result = await fetchAIO("最佳跑步鞋", "US");
console.log(`购物标志: is_shopping=${result.is_shopping} ` +
`is_overview_shopping=${result.is_overview_shopping}`);
console.log("\n=== AI 概述 (原文) ===");
console.log(result.rawtext.slice(0, 1200), "...\n");
console.log("=== 最佳引用来源 ===");
for (const s of result.source.slice(0, 5)) {
console.log(` - ${s.website_name.padEnd(20)} ${s.url}`);
}
console.log(`\n广告高于 AIO: ${result.ads.length}`);
重试模式与 Python 版本相似:仅对 HTTP 400 + "execution failed" 进行重试;将 401、4xx 带有 code: 14002 (无效行为者)和对 提示 的验证错误视为硬错误,无法通过重试解决。
用于端到端 Google-AI 抓取的伴随行为者
Scraper AI 概述 API 涵盖了一个 Google AI 表面。监控品牌可见性、构建 GEO 数据集或训练答案质量模型的生产管道通常还想要另外两个。
scraper.google.search — 经典的自然 SERP
对于 AIO 下方的十个蓝色链接,常见问答对,知识面板,特色摘要和相关搜索块,scraper.google.search 是结构化的对应物。scraper.overview 的 source 数组中的引用来源域在孤立情况下是有用的,但当与相同查询的自然前十名连接时,它们才更有意义——这个连接告诉您引用域是否也在自然排名中,及其排名位置。
scraper.aimode — AI 模式标签
谷歌的 AI 模式是一个独立的、全页面的对话体验,源自 SERP。它以更类似聊天的格式重写答案,接受后续提示,并使用不同的引用面板布局。scraper.aimode 是专门为此设计的行为者。为完整了解谷歌 AI 搜索如何展示主题,在相同查询、相同国家、相同时间戳下捕获 scraper.overview、scraper.google.search 和 scraper.aimode 的所有三个数据。
其余 LLM 答案景观的通用抓取 API
谷歌 AI 概述是引用共享表面之一。对于品牌级 GEO 程序,您通常还需要监控 ChatGPT 搜索结果、Perplexity 答案和其他 LLM 驱动的搜索体验。 通用抓取 API 是专门为这些设计的——相同的 x-api-token,不同的行为者名称,相同的 JSON 信封结构。
scraper.amazon(Rufus)针对商业方面
当被监控的品牌是一个实物产品时,Amazon Rufus 是 AI 答复管道的另一端。Amazon Rufus actor 返回对任何自然语言产品查询的对话购物助手的具体答案。结合 Google AIO,它可以告诉你这两个最大的 AI 答复平台是如何定位你的产品或竞争对手的产品的。
所有四个 actor 共享一个 Scrapeless 账户、一个 x-api-token 头和一个信封形状。一次性连接一个客户端包装器,并在整个家庭中重复使用。
如何避免常见问题
你可能会看到的错误响应
API 会为每个错误情况返回结构化的 JSON。当存在时,code 字段是 Scrapeless 错误代码;message 是人类可读的解释。
| 场景 | HTTP | 响应体 |
|---|---|---|
| 无效的 API 令牌 | 401 |
{"code":14404,"message":"invalid access token"} |
| 错误的 actor 名称 | 400 |
{"code":14002,"message":"invalid actor: <name>","status":"failed"} |
缺少或空的 input.prompt |
400 |
{"message":"Key: 'overviewParam.Prompt' Error:Field validation for 'Prompt' failed on the 'required' tag","status":"failed"} |
| 无效的国家代码 | 400 |
{"message":"execution failed","status":"failed","task_id":"..."} |
| 查询未显示 AIO / 瞬时上游故障 | 400 |
{"message":"execution failed","status":"failed","task_id":"..."} |
| 成功 | 200 |
{"status":"success","task_id":"...","task_result":{...}} |
| 待处理 | 201 |
{"status":"pending","task_id":"..."} 任务正在执行,请稍后再试。 |
| 运行中 | 202 |
{"status": "running", "task_id":"..."} 任务已创建。稍后可以通过使用任务 ID 获取结果。 |
144xx 代码是身份验证和 actor 验证;Field validation 负载是请求形状;execution failed 包含无 AIO 和瞬态上游情况。始终存储任何失败响应中的 task_id — 这是 Scrapeless 支持需要关联单个错误执行的。
问题-解决方案对
问题:一个查询返回 execution failed 一次,但重试时有效。
解决方案:这是瞬时上游信号。现在失败的相同查询通常在五到三十秒后成功。重试时采用 3–6 秒递增退避和小尝试预算(3 次尝试)。将该预算内的持续失败视为“在该地理位置此查询没有可用 AIO”,而不是集成错误。
问题:一个查询无论重试如何始终返回 execution failed。
解决方案:并不是每个 Google 查询都会生成 AI 概述。单词查询、导航查询(例如:“facebook”)和 Google 没有选择进行基础的查询通常不会生成。通过从同一地理位置(住宅 VPN 或真实设备)打开 https://www.google.com/search?q=<query> 来验证;如果没有人类用户生成 AIO,actor 也不会生成。重新措辞查询,使其更具信息性(例如:“X 如何工作”,“最好的 X 为 Y”,“X vs Y”)。
问题:即使 is_shopping 为 true,task_result.products 仍然为 null。
解决方案:在某些购物 AIO 中,task_result.products 被填充,在其他情况下则为 null — 即使 is_shopping 为 true。当存在时,每个项都会携带 name、price、orig_price、discount、rating、review_count、seller、img、url、delivery、stores 和 section_title(当 Google 不显示该属性时,几个字符串字段可能为空)。当字段为 null 时,从 task_result.source(引文来源面板 — 通常是零售商页面)读取产品候选,并解析 task_result.content 中的 markdown 主体以获取内联产品提及。始终采取防御性编码来应对 null:result.get("products") or []。
问题:task_result.source 和 task_result.web_source 看起来相似 — 哪个是哪个?
解决方案:source 是 AI 概述自己的引文面板(AIO 被归因的链接)。web_source 是渲染在 AIO 下面的相关搜索面板。对于 GEO 引文追踪,从 source 开始计数;对于相关内容机会,使用 web_source。
问题:content 中的 AIO 主体具有 markdown 引文引用([1]、[2]),但我需要简单的散文。
解决方案:使用 task_result.rawtext — 这是去引文的版本,适合于嵌入、下游 LLM 提示和搜索索引摄取。在需要带有引用的回答呈现时使用 content。
问题:相同查询在不同调用时返回不同的 AIO 主体。
解决方案:AI 概述是非确定性的 — Google 根据会话重新生成它们,并且在几小时和几天内会漂移。对于监控用例,在每次捕获时固定时间戳和 country,并保留原始响应;将主体视为样本,而不是常量。引用源集通常比散文主体更稳定。
问题:速率限制和并发上限未在公共文档中说明。
解决方案:先进行串行调用。在监控HTTP 429或“执行失败”激增的情况下逐步增加并发。对于持续的大流量管道,请联系Scrapeless支持以获取专用通道。
结论:将结构化AIO作为单行依赖
谷歌的AI概览已成为SEO、GEO、品牌监控和AI基础管道的承重表面。通过DOM自动化进行抓取可以工作,但需要面对完整的选择器维护、住宅出口、延迟加载和验证码处理堆栈。Scrapeless Scraper AI概览API将整个集成简化为一次带有三个必填字段(actor,input.prompt,input.country)的HTTP POST,并返回一个结构化的JSON信封,其中AIO主体、所引用的来源、相关面板、位于AIO上方的广告以及购物标志都是一流的字段。
配合scraper.google.search用于自然搜索结果以及scraper.aimode用于谷歌的AI模式标签,这三个角色共同覆盖了谷歌的完整AI增强搜索表面,使用单个Scrapeless账户即可实现。伴随的通用抓取API将相同模式扩展到ChatGPT、Perplexity和其他LLM回答表面——这是生产GEO程序的构建模块。
在app.scrapeless.com注册获得免费的Scraper API积分,并在apidocs.scrapeless.com阅读完整的API参考。
准备构建您的AI驱动搜索管道吗?
加入我们的社区,领取免费计划,与构建基于Scrapeless的GEO、品牌AI和搜索监控管道的开发者联系:
Discord
Telegram
在Scrapeless网站注册以获取免费的Scraper API积分,并将上述模式应用于您的管道所需的关键词、国家和品牌术语。
常见问题
问1:抓取谷歌AI概览是否合法?
在google.com上显示的公共AI概览内容是公开可见搜索结果的一部分,广泛被认为是可以用于研究、SEO监控和竞争分析的公平访问。具体的司法管辖区和使用案例各不相同——商业用途、重新分发AIO主体以及大规模自动访问可能在谷歌的服务条款和当地数据保护法下有额外的考虑。在发布或重新分发抓取的AIO内容之前,请查看谷歌的服务条款及您当地的法规,并咨询法律顾问。
问2:每个谷歌查询都会产生AI概览吗?
不。谷歌选择何时显示AIO,且速率因查询类别、地区、语言和正在进行的产品实验而异。信息查询、比较查询、“X如何工作”、“最佳X”和购物意图查询在2026年更可能触发AIO。导航查询(例如“facebook”、“amazon login”)和单词模糊查询通常不会触发。对于谷歌未在该地区支持的查询,角色返回execution failed。
问3:input.country支持哪些国家?
国家字段接受ISO 3166-1 alpha-2代码,并在端到端进行US和GB的验证。支持该角色的住宅代理覆盖超过195个国家,因此大多数常见代码(如DE、FR、JP、CA、AU、BR、IN、ES、IT、NL)均可使用;不支持的代码返回execution failed。在扩展之前,请通过小规模测试验证特定国家。
问4:单次调用的速度有多快?
端到端延迟通常为12–18秒。大部分时间都用于服务器端轮询,直到AI概览在谷歌的“生成”占位符后稳定——角色仅返回已呈现的主体,而不是占位符。
问5:我可以并发处理多个查询吗?
可以。从每个令牌的三到五个并行工作者开始,并在监控execution failed率的同时逐步增加。公共速率限制和并发上限未记录;如需高流量通道,请联系Scrapeless支持。
问6:scraper.overview与scraper.google.search和scraper.aimode有什么不同?
scraper.overview专门返回AI概览块——主体、引用、相关面板、赞助位、购物标志。scraper.google.search返回SERP的其余部分——自然十个蓝色链接、特色摘要、相关问题、知识面板、相关搜索。scraper.aimode返回谷歌单独的AI模式对话页面。要全面了解谷歌的AI搜索如何呈现一个主题,请在相同查询、相同国家、相同时间戳下捕获所有三个。
问7:我可以获取购物AIO的结构化产品列表吗?
是的,对于一些购物AIO。当填充时,task_result.products是一个包含{name, price, orig_price, discount, rating, review_count, seller, img, url, delivery, stores, section_title}的数组(当Google未显示该属性时,几个字符串字段可能为空)。对于其他购物AIO,task_result.products为null,即使is_shopping为true——在验证中,5个购物捕获中有1个返回了10个项目的数组;其余均为null。当字段为null时,从task_result.source(通常是零售商页面)读取产品候选,并解析task_result.content中的内联提及。始终对null进行防御性编码(result.get("products") or [])。
Q8: is_overview_shopping是什么意思,它与is_shopping有什么不同?
当底层SERP包含购物模块(在自然结果上方的轮播)时,is_shopping为true。当Google将AI概述本身分类为购物导向时,is_overview_shopping为true。当AIO主体包含至少一个直接购买URL时,purchase_link为true。使用这些组合在零售智能管道中筛选出商业意图的AIO。
Q9:我需要自己处理惰性加载占位符吗?
不需要。AIO在“生成中”占位符后渲染,操作方在服务器端进行轮询,直到主体稳定后再返回。该轮询是大约12-18秒端到端延迟的主要组成部分。调用者不需要实现等待循环。
Q10:我应该如何存储响应以进行长期监控?
完整的API参考和实时请求游乐场:apidocs.scrapeless.com。SDK和集成文档:docs.scrapeless.com。
在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。



