🎯 一款可定制、具备反检测功能的云浏览器,由自主研发的 Chromium驱动,专为网页爬虫AI 代理设计。👉立即试用
返回博客

ChatGPT购物数据:大规模收集产品、价格和优惠

Emily Chen
Emily Chen

Advanced Data Extraction Specialist

29-Jun-2026

简要总结:

  • ChatGPT购物数据为结构化产品输出,而非截图。scraper.chatgpt演员发送一个POST请求并启用shopping将返回按排名排列的产品,每个产品都包含价格、评分、评论数量和每个商家的报价列表——以JSON字段形式呈现。
  • 每个产品都有多个商家的报价。 单个耳机结果返回同一型号在索尼、百思买、沃尔玛、塔吉特等商家的价格,所有这些都在一个offers数组中,每个报价都有其自己可用性和配送说明。
  • 购物标志在input中。 返回产品的调用为{"actor":"scraper.chatgpt","input":{"prompt":"...","country":"US","shopping":true}},发送到POST /api/v2/scraper/execute——顶层购物参数会被拒绝。
  • 产品走马灯按会话渲染,而非每次调用。 购买意图提示在ChatGPT显示该会话的购物卡时填充products;同一次调用可能只返回答案文本并包含空数组——因此集合作为定期提示集运行,聚合填充的运行结果。
  • 购物响应的费用高于普通答案。 返回已解决的产品卡收费更高,因此请将提示集的范围缩小到相关产品。
  • 响应格式与其他LLM演员一致。 每个调用返回{ status, task_id, task_result },因此此处编写的客户端可以无缝扩展至Grok、Gemini和Perplexity。
  • 免费开始。 新的Scrapeless账户包括免费试用积分——请在app.scrapeless.com注册。

介绍:购买按钮移到答案中

ChatGPT现在通过产品走马灯回答购物问题。当购物者询问最佳降噪耳机时,模型返回带有图像、价格、星级评分和购买商家的排名产品——在聊天中,任何商店在点击前都不会被访问。对于一个品牌,结果页面的排名不再决定销售;您的产品是否出现在这个走马灯中,以及以什么价格出现,才是关键。

这种展示方式难以用肉眼读取,更难以跟踪。价格波动,商家进出每个产品的报价列表,排名会因查询和国家而异。通过驱动聊天界面捕获这些数据意味着登录墙、懒加载的卡片以及在答案流入后客户端解析的产品字段。

scraper.chatgpt演员将走马灯作为结构化产品数据返回:输入提示,输出products数组,每个产品携带其价格、评分、评论数量和每个商家的报价列表。接下来是填充products数组的请求、逐字段读取响应、按计划收集提示集的Python客户端,以及在其他答案引擎上读取相同结构的配合演员。关于同一转变的可见性侧面——模型在其答案中命名的品牌和来源——品牌AI可见性涵盖了回答及其引用的跟踪。


您可以用它做什么

  • 推荐分享跟踪。 在计划上运行固定的购买提示,并记录ChatGPT为每个提示排名的产品——相当于购物的声音份额。
  • 跨商家价格监测。 阅读单个产品的每个报价,并观察相同型号在索尼、百思买、沃尔玛和塔吉特之间的价格变化。
  • 目录可见性检查。 检测您的产品何时进入或退出某类提示的走马灯,以及其排名。
  • 竞争组合分析。 捕获模型为跨市场的类别显示哪些产品,并将评分和评论数量作为对比字段。
  • 报价和可用性监测。 跟踪哪些商家显示某个产品有现货,以及每个商家引用的交货时间。
  • 购物数据集构建。 将提示–产品–报价行收集为干净的JSON,用于定价模型或评估管道。

为什么选择Scrapeless ChatGPT购物抓取器

Scrapeless ChatGPT购物抓取器是启用shopping输入的scraper.chatgpt演员——是通用抓取API系列的一部分。专门针对购物查询,它提供:

  • 聊天会话的服务器端渲染,因此通常需要客户端解析的产品卡片将直接返回已填充的内容。
  • 在您传递的国家中进行住宅出口,因为产品及其价格都是本地化的。
  • 每个产品的完整报价列表,而不仅仅是标题价格——模型所显示的该商品的每个商家。
  • 一个信封({ status, task_id, task_result })与其他LLM参与者共享,因此同一客户端可以阅读ChatGPT、Grok、Gemini和Perplexity。
  • 不需要驱动浏览器:一个端点,一个x-api-token头,返回JSON。

app.scrapeless.com上的免费计划中获取您的API密钥。


前提条件

  • Python 3.10或更新版本(下面的客户端仅使用标准库和requests
  • Scrapeless账户和API密钥——请在app.scrapeless.com注册
  • 将密钥导出为SCRAPELESS_API_KEY
  • 对终端和JSON有基本了解

ChatGPT购物抓取器的工作原理

购物响应是标准的scraper.chatgpt调用,input内部将shopping设置为true。该参与者呈现查询,等待产品轮播解析,并将卡片作为products数组返回,连同通常的答案文本和引用来源。

请求参数

参数放在input对象内,而不是放在主体的顶层。

input字段 必要 描述
prompt 购物问题;用买的意图表述,以便触发轮播
country 两个字母的地区代码(例如US);本地化产品和价格
shopping 设置为true以填充products数组;购物响应的收费比普通答案高
web_search true允许模型提取实时来源,从而改善产品解析

使用curl快速捕获

bash Copy
# 需要在环境中设置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.chatgpt",
    "input": {
      "prompt": "最佳索尼降噪耳机购买",
      "country": "US",
      "shopping": true,
      "web_search": true
    }
  }'
# 使用管道:| jq '.task_result.products' 获取轮播。

响应信封

产品在task_result.products下。每个产品都带有一个标题price和一个merchants摘要,以及一个带有每个商家的一个条目的offers数组。下面的形状是针对上述耳机提示的真实捕获值,值为时间点,模型标识符为gpt-5-mini

json Copy
// 模式正是启用购物时scraper.chatgpt返回的内容;字段值是来自实时运行的示例(报价经过修剪)。
{
  "status": "success",
  "task_id": "…",
  "task_result": {
    "prompt": "最佳索尼降噪耳机购买",
    "model": "gpt-5-mini",
    "result_text": "这是最佳索尼降噪耳机 …",
    "products": [
      {
        "title": "Sony WH-1000XM6",
        "price": "$398.00",
        "merchants": "Sony + 其他",
        "rating": 4.7,
        "num_reviews": 6021,
        "url": "https://electronics.sony.com/audio/headphones/headband/p/wh1000xm6-b",
        "image_urls": ["https://…"],
        "offers": [
          { "merchant_name": "Sony",     "price": "$398.00", "available": true, "details": "网上有货,周四至周五免费送货" },
          { "merchant_name": "Best Buy",  "price": "$398.00", "available": true, "details": "网上和附近有货,周五前免费送货" },
          { "merchant_name": "Walmart",   "price": "$398.00", "available": true, "details": "" },
          { "merchant_name": "Target",    "price": "$398.00", "available": true, "details": "网上有货,6月19日至25日免费送货" }
        ]
      }
    ],
    "search_result": [ { "title": "…", "url": "https://…", "snippet": "…", "attribution": "…" } ]
  }
}

运行时的一些诚实观察:

  • 人口是按会话计算,而不是按调用。 对话提示返回的答案文本带有一个空数组,即使是购买意图提示在给定调用中也可能返回products为空——轮播概率性地渲染。一个调度的提示设置捕获显示出来的填充运行;将空数组视为可空,而不是错误。
  • titlepricerating一同解析。 当轮播渲染时,这些字段被填充;仅半触发购物的调用可能返回带有空字段的产品插槽,您应将其视为空可选,并跳过。
  • offers是价格监控表面。 相同的产品在每个商家处以单一价格点重复;读取数组,而不仅仅是顶层的price
  • 价格和可用性是时间点数据。 在您自己的管道中存储捕获时间戳;响应反映运行时刻。

在Python中集成API:大规模收集提示集

规模的模式是一个固定的提示集,每个提示调用一次,产品被压平为行。客户从环境中读取 SCRAPELESS_API_KEY,请求购物数据,并为每个报价发出一行,以便价格表直接输出。

python Copy
"""收集 ChatGPT 购物数据以用于提示集 (scraper.chatgpt)。
    export SCRAPELESS_API_KEY=your_api_token_here
    python collect_shopping.py
"""
import os
import requests

ENDPOINT = "https://api.scrapeless.com/api/v2/scraper/execute"
PROMPTS = [
    "最佳索尼降噪耳机购买推荐",
    "最佳预算机械键盘购买推荐",
    "300美元以下最佳机器人吸尘器",
]


def shop(prompt: str, country: str = "US") -> list[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, "shopping": True, "web_search": True},
        },
        timeout=220,
    )
    resp.raise_for_status()
    return resp.json().get("task_result", {}).get("products", []) or []


def offer_rows(prompt: str, products: list[dict]) -> list[dict]:
    rows = []
    for rank, product in enumerate(products, start=1):
        title = product.get("title")
        if not title:  # 半解析的卡片 — 视为可为空,跳过
            continue
        for offer in product.get("offers") or []:
            rows.append({
                "prompt": prompt,
                "rank": rank,
                "product": title,
                "rating": product.get("rating"),
                "reviews": product.get("num_reviews"),
                "merchant": offer.get("merchant_name"),
                "price": offer.get("price"),
                "available": offer.get("available"),
            })
    return rows


if __name__ == "__main__":
    for prompt in PROMPTS:
        rows = offer_rows(prompt, shop(prompt))
        print(f"{prompt}: {len(rows)} 个报价行")
        for row in rows[:5]:
            print(f"  #{row['rank']} {row['product']} — {row['merchant']} {row['price']}")

每个提示生成一组产品-商家-价格行:在轮播中的排名、产品、其评分和评论数量,以及每个商家的一个报价行。将这些行定期写入仓库,随时间的推移,价格波动、排名变化和商家流失将呈现为时间序列。

在免费计划上获取您的 API 密钥:app.scrapeless.com


其他答案引擎的伴随演员

购物轮播正在各个答案引擎中出现,并且相同的封装可以读取其中的所有内容。更改演员,保留客户端:

  • scraper.grok — Grok 的答案,具有其实时搜索行为
  • scraper.gemini — Gemini 响应
  • scraper.perplexity — Perplexity 答案和来源
  • scraper.overviewscraper.aimode — 谷歌的 AI 概述和 AI 模式界面

每个返回 { status, task_id, task_result },因此上面的 offer_rows 函数在平台展示产品后不会改变。排名的 最佳 LLM 抓取器 比较将这些界面并排展示。


如何避免常见问题

  • products 两个原因。提示可能不够交易性 — 使用明确的购买语言(如“最佳...购买推荐”、“... 低于300美元”)并保持 shoppingweb_search 都为 true。或者轮播在该会话中根本没有渲染:人口统计是按会话的,因此定期的提示集聚合返回卡片的运行,而下游代码将空数组视为可为空。
  • 半解析的卡片。 产品槽可能会带有空的 title/price;将这些字段视为可为空并跳过该行,而不是存储空白。
  • 本地化输出。 country 变化的产品及其价格,因此针对每个市场进行固定比较 — US 的运行和 JP 的运行是不同的数据集。
  • 成本。 购物响应的收费比常规答案高,因此将提示集范围限制在您实际跟踪的产品上。

结论:轮播作为数据源

ChatGPT购物简化为一个依赖项:启用shopping单个HTTP POST返回按排名排列的产品及其每个商家的报价,以JSON格式呈现。锁定国家,构建购买意图的提示,阅读offers数组而非标头价格,并将半解决的卡片视为可空。定期运行固定的提示集,使用Universal Scraping API积分,旋转木马便成为价格和品种的时间序列。请求的形状和字段名称与实时LLM Chat Scraper演员进行确认。


准备建立您的AI购物数据管道了吗?

加入我们的社区以申请免费计划,并与构建AI问答数据管道的开发者联系:Discord · Telegram

app.scrapeless.com注册以获取免费试用积分,并将上面的提示集指向您的定价程序所需的产品类别和市场。


常见问题解答

问:收集ChatGPT购物数据合法吗?
返回的数据是ChatGPT向任何用户显示的公开可见的购物答案。与任何抓取一样,合法性取决于管辖权和使用——在构建之前请查看相关条款并咨询律师。仅收集公开的产品和报价数据,绝不要收集个人数据。

问:为什么products数组是空的?
旋转木马仅在交易查询时渲染。对话提示返回result_text时,products数组为空;请用购买意图重新措辞,并保持shopping: true

问:我需要代理或浏览器吗?
不需要。渲染、会话处理和住宅出口在服务器端运行。您发送一个带有x-api-token头的POST请求,读取JSON响应;country字段选择出口市场。

问:这与ChatGPT抓取API指南有什么不同?
该指南涵盖答案文本及其引文以进行可见性跟踪。这个则涵盖shopping路径:products数组及其每个商家的offers,用于价格和品种监控。

问:每个产品返回多少个商家?
几个——耳机捕获在一个offers数组中返回了同一型号,价格分别由Sony、Best Buy、Walmart、Target等商家提供,每个都有自己的可用性和交付说明。

问:我可以跨国家运行吗?
可以。每次调用时传递不同的country;答案、产品和价格都将本地化,因此每个市场都是自己独立的数据集。

在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。

最受欢迎的文章

目录