ChatGPT 抓取 API:以 JSON 格式提供 AI 答案和引用
Advanced Data Extraction Specialist
TL;DR:
- ChatGPT抓取API将模型的答案转换为结构化的JSON。 向
scraper.chatgpt演员发送一个POST请求将返回响应文本、其背后的引用和ChatGPT参考的网络搜索结果——以字段的形式,而不是截图。 - 两个输入运行整个过程。
prompt携带问题;可选的country将运行锁定在该市场的住宅出口,以便捕捉到用户在该地区看到的答案。 - 引用准备就绪以便绘图。
content_references列表包含每个引用来源的标题、URL和归属——用于引用份额跟踪的原材料,无需解析步骤。 - 封装始终不变。 每个调用返回
{ status, task_id, task_result },与其他Scrapeless LLM演员的形式相同,因此为ChatGPT编写的包装可以不变地扩展到Grok、Gemini、Perplexity和Copilot。 - 无需看管的浏览器。 渲染、会话处理和代理轮换在服务器端运行;你只需调用一个端点,带上
x-api-token头,然后获取JSON响应。 - 免费开始。 新的Scrapeless账户包括免费试用积分——请在app.scrapeless.com注册。
介绍:答案是新的结果页面
ChatGPT直接回答产品问题:买家询问最佳帮助台工具、最佳客户关系管理(CRM)、最佳代理提供商,得到一份简短的综合推荐和少数引用来源。没有第二页。品牌要么在那个答案中被提及——要么对那个买家来说是不可见的。
这种变化产生了新的数据需求。曾经跟踪排名的团队现在需要答案本身:要存储、对比并随时间绘制,并带有解释模型为何如此回答的引用。通过在浏览器中操作聊天界面捕获这些内容意味着登录墙、流式响应和会在没有通知的情况下更改的标记。
scraper.chatgpt演员将问题简化为一个HTTP请求:问题在,结构化答案出。该指南涵盖请求形状、响应架构逐字段说明、可运行的Python客户端,以及将相同模式扩展到其他AI答案领域的辅助演员。有关工具类别本身的排名视图,请查看最佳LLM抓取工具指南,其中涵盖了ChatGPT及其他平台。
您可以用它做什么
- 引用份额跟踪。 定期在固定提示集上运行并计算ChatGPT针对每个问题引用了哪些域——取代排名跟踪的地理指标。
- 品牌提及监控。 检测回答购买问题时是否开始或停止提及您的产品,以及该提及来源于哪个来源。
- 竞争答案分析。 捕捉模型如何在各个市场和时间段描述一个产品类别,并将支持链接作为数据。
- 多地区捕捉。 将运行固定在不同国家并并排比较答案——地区的变化会影响答案和引用。
- 内容策略反馈。 查看您哪些页面实际上获得了引用,以及针对哪些提示,而不是凭猜测判断流量。
- 数据集构建。 收集提示-答案-引用三元组,以干净的JSON形式进行后续分析或评估管道。
为什么选择Scrapeless ChatGPT抓取工具
scraper.chatgpt演员是Scrapeless LLM聊天抓取工具家族的一部分,位于通用抓取API系列中。它将AI答案视为一类优先目标:
- 一个请求,结构化输出。 无需驱动浏览器,无需重组流式数据,无需解析DOM——演员在服务器端渲染聊天界面并返回解析字段。
- 引用作为数据。
content_references将每个引用来源作为一个独立对象;答案主体保留其内联引用标记,以便将两者绑定。 - 国家固定住宅出口。 运行通过195个国家的住宅代理,因此特定地区的答案可以在每个市场中重现。
- 一个令牌,一个封装,五个平台。 相同的
x-api-token和{ status, task_id, task_result }合同覆盖ChatGPT、Grok、Gemini、Perplexity和Copilot演员。
完整的参数参考可在LLM聊天抓取工具文档中找到。
前提条件
- 一个 Scrapeless 账户和 API 密钥 — 请在 app.scrapeless.com 注册。
- 使用
curl进行快速测试,或者使用 Python 3.10+ 运行下面的客户端。 - 对 HTTP 和 JSON 的基本了解。
将您的密钥存储在环境中,以确保它不会出现在代码中:
bash
export SCRAPELESS_API_KEY=your_api_token_here
ChatGPT 爬虫的工作原理
您指定演员,输入内容,并在一个头部中发送您的密钥。
- 端点:
POST https://api.scrapeless.com/api/v2/scraper/execute - 演员:
scraper.chatgpt - 认证头:
x-api-token: $SCRAPELESS_API_KEY
请求参数
| 输入字段 | 必需 | 描述 |
|---|---|---|
prompt |
是 | 要发送给 ChatGPT 的问题 |
country |
否 | 指定运行的居住地点的两字母国家代码(例如 US) |
使用 curl 快速捕获
bash
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.chatgpt",
"input": { "prompt": "什么是最好的网页抓取工具?", "country": "US" }
}'
响应信封
json
// 说明性示例 — 来自实时 scraper.chatgpt 运行的架构;值已简化
{
"status": "success",
"task_id": "7218e510-…",
"task_result": {
"prompt": "什么是最好的网页抓取工具?",
"model": "gpt-5-5",
"result_text": "最佳工具取决于用例…… ([source][1])",
"content_references": [
{ "title": "…", "url": "https://…", "attribution": "…" }
],
"search_result": [
{ "title": "…", "url": "https://…", "snippet": "…", "attribution": "…" }
],
"links": [],
"products": null,
"web_search": false
}
}
逐字段解析:
| 字段 | 类型 | 内容 |
|---|---|---|
status |
字符串 | 完成运行时为 success |
task_id |
字符串 | 运行的标识符,可作为您自己存储中的审计键 |
task_result.prompt |
字符串 | ChatGPT 接收到的提示 |
task_result.model |
字符串 | 回答的模型(例如,最近捕获的 gpt-5-5) |
task_result.result_text |
字符串 | 作为 markdown 的完整答案,内联引用标记被保留 |
task_result.content_references[] |
数组 | 每个引用的来源,格式为 { title, url, attribution } |
task_result.search_result[] |
数组 | ChatGPT 用于回答的网页搜索结果 |
task_result.links[] |
数组 | 答案中出现的裸链接,若存在 |
task_result.products |
数组 | null | 购物相关提示的产品参考;否则为 null |
在免费计划中获取您的 API 密钥:app.scrapeless.com
在 Python 中集成 API
一个完整的客户端:发送提示,检查信封,打印引用表。
python
import os
import requests
ENDPOINT = "https://api.scrapeless.com/api/v2/scraper/execute"
def ask_chatgpt(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.chatgpt", "input": {"prompt": prompt, "country": country}},
timeout=180,
)
resp.raise_for_status()
return resp.json()
if __name__ == "__main__":
data = ask_chatgpt("什么是最好的网页抓取工具?")
result = data.get("task_result", {})
refs = result.get("content_references") or []
print(f"status={data.get('status')} model={result.get('model')} citations={len(refs)}")
for i, ref in enumerate(refs, 1):
print(f" [{i}] {ref.get('attribution', '')}: {ref.get('title', '')[:60]} → {ref.get('url', '')[:60]}")
答案主体保持在 result.get("result_text") 中,格式为 markdown;对于引用分享工作,上述循环通常是整件工作的全部 — 按域对打印的 URL 进行分组并计数。
其余 AI 答案生态的辅助演员
相同的端点、头部和信封覆盖相邻平台 — 只有演员名称和一两个平台特定的字段有所不同:
scraper.grok— 添加所需的推理mode,并返回单独的web_search_results和x_search_results引用面板。scraper.gemini— 与 ChatGPT 相同的两个字段输入;返回result_text以及citations数组。scraper.perplexity— 需要country和web_search标志;返回web_results、media_items和相关提示。scraper.copilot— 在相同合同下的 Copilot 答案表面。scraper.overview/scraper.aimode— Google 的 AI 概述块和 AI 模式选项卡;AI 概述指南 涵盖了该对的所有内容。
该线路的定价基于使用量,注册时提供免费试用积分——当前的定价等级可在 定价 页面上查看。
如何避免常见问题
- 某些提示的
content_references为空。 ChatGPT 不会为每个答案引用来源——带有意见色彩或纯生成的提示可能会返回没有引用的答案。为了进行引用追踪,可以用研究购买者的方式表述提示(如“最佳 X 用于 Y”),这能可靠地触发基于网络的答案。 - 答案因运行而异。 相同的提示可以在几分钟内产生不同的答案和引用集合——这种波动性就是你所测量的现象。储存每个捕获的
task_id和时间戳,并将系列视为信号,而不是任意单次运行。 - 将每个字段视为可为空。
products在购物提示之外为null,links通常为空,并且引用计数在运行间波动。阅读现有内容,而不是强加固定形状。 - 故意锁定国家。 未固定的运行捕获 一个 答案;固定的运行捕获你关心市场的答案。将
country值保持在存储记录中,以便系列保持可比性。
结论:答案作为一行依赖项
捕获 ChatGPT 的答案归结为一个请求:POST { actor: "scraper.chatgpt", input: { prompt, country } } 并带上你的 x-api-token,阅读 result_text 以获取答案,content_references 以获取来源,并与其 task_id 一并存储。相同的客户端,指向一组提示和日程,成为引用份额程序;指向相关演员,则成为整个 AI 答案领域的覆盖。
准备好构建你的 AI 答案数据管道了吗?
加入我们的社区,领取免费计划并与正在构建 AI 答案管道的开发者联系: Discord · Telegram。
在 app.scrapeless.com 注册以获取免费试用积分,并将 scraper.chatgpt 演员指向你的监测程序所需的提示、市场和日程。
常见问题
问:抓取 ChatGPT 答案合法吗?
该演员捕获公开渲染的答案内容。规则因司法管辖区和平台的服务条款而异,因此请查看相关的服务条款,并咨询法律顾问以适用于你的用例——特别是在重新分发捕获的答案之前。切勿收集受 GDPR 或 CCPA 保护的个人数据。
问:我该如何进行身份验证?
每个请求都带有头信息 x-api-token: <你的密钥>。一个账户密钥适用于 scraper.chatgpt 和其他所有 Scrapeless 演员。可以在 app.scrapeless.com 的免费计划上创建一个密钥。
问:我需要代理吗?
不需要。居民出境和地理路由已内置于该演员中——输入中的 country 是整个配置。
问:country 实际上有什么变化?
该运行的居民退出市场。ChatGPT 的答案和引用对地点敏感,因此一个“德国”固定的运行可能会引用不同的产品和来源,而对同一提示来说,“美国”固定的运行可能会有所不同。
问:如何获取干净的引用列表?
读取 task_result.content_references ——每个条目是 { title, url, attribution }。不需要文本解析;result_text 中的内联标记仅在你希望将引用固定到句子时存在。
问:我可以在没有 SDK 或 AI 代理的情况下运行吗?
可以。这是普通的 HTTP——curl、Python requests、Node fetch 或任何 HTTP 客户端都可以直接针对 POST /api/v2/scraper/execute 工作。不需要 SDK。
问:相同的代码适用于 Grok 或 Gemini 吗?
信封和身份验证是相同的;只需替换演员名称并调整平台特定的输入字段(Grok 需要 mode,Perplexity 需要 country)。每个平台的 task_result 密钥各不相同,因此请根据每个演员进行映射。
在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。



