用途:把智能体接到实时的电商商品数据,包括价格、库存、品牌、评分和图片 URL,数据来自零售商页面,无需自行托管。该技能指向 E-commerce Scraping Tool,这是 Apify 官方的付费 Actor。
两条路径:运行时调用与定时刷新不可互换,区别在成本模型。运行时调用适用于必须当下为真、商品数量少的场景,走 MCP,成本为每次调用一个 start 事件加按商品计费,用户会感受到数秒到数十秒延迟。定时刷新适用于被反复查询的目录,走 REST API,每批一个 start 事件,索引已热,无延迟。多数生产环境两者都用:定时刷新覆盖广度,运行时调用验证用户将要据以行动的单品价格。定时任务从 MCP 得不到收益,故走 REST API。
MCP 连接:服务器为 https://mcp.apify.com,可用 ?tools=apify/e-commerce-scraping-tool 收窄到该 Actor,使工具选择更可靠;去掉该参数则允许智能体在运行时搜索整个 Apify Store。交互式客户端首次使用走 OAuth,无人值守用 Apify Console 的 bearer token。
抓取流程需写入智能体指令:调用 Actor 返回运行元数据与 datasetId,不含商品;若状态非终态,用校验过的 runId 轮询 get-actor-run,直到成功或达到调用方设定的截止时间,FAILED、ABORTED、TIMED-OUT 视为失败,RUNNING 是正常状态;get-dataset-items 返回商品,用点号记法传 fields 投影以控制上下文体积。未投影记录约 88 KB、142 个字段。投影会把响应展平为字面点号键,代码需读 item["offers.price"]。服务器同时暴露 get-actor-run、get-dataset-items、get-key-value-store-record、abort-actor-run。
定时刷新:维护商品 URL 列表,按 Actor 超时与结果上限分批调用;失败或超时后检查 run ID 与数据集取部分结果,勿把部分结果当作完成;存储前按零售商归一化字段名与嵌套;每条文档打上抓取时间戳;用基于规范 URL 的稳定 id 做 upsert;丢弃既无名称也无价格的行。要让智能体知晓索引的新鲜度,把时间戳放进嵌入文本并指示其引用时说明读取时间,需要当下为真时改调工具。
成本控制:Actor 按事件计费,包括每次调用一个 start 事件、每推送一个商品,以及零售商需要时的住宅代理与浏览器渲染。maxProductResults 是结果上限,须设置但不能当作总花费上限。批量调用更省。scrapeMode 为 HTTP 更便宜更快,但浏览器渲染的价格会失败,AUTO 是安全默认。
参考实现:ecommerce-agent-starter 仓库用 Python 提供两条路径,含轮询至完成再抓取的 MCP 客户端、可插拔 sink 的批量刷新脚本,以及针对真实 Actor 输出做测试的归一化模块。
注意点:工具名为 apify--e-commerce-scraping-tool,两个连字符;须发送 additionalProperties: true,否则库存、评分、标价与标识符会缺失;首次调用元数据中的 itemCount 尚未确定,应统计实际返回;RUNNING 不是失败,重试 Actor 会重复付费;给代码解析用未投影,给模型读用投影;官方 mcp Python SDK 需 Python 3.10 以上且 API 为 snake_case,仅用 REST 可在 3.9 运行;additionalProperties 单品可达约 100 KB,Pinecone 元数据上限 40 KB 每向量,须排除;不同零售商及同 URL 不同调用的延迟差异大,如某 Amazon 商品一次 10 秒、一次 40 秒;SSE 传输已于 2026 年 4 月 1 日移除,改用 Streamable HTTP。