Skip to content

About

使用 Python 的 Amazon 抓取工具:通过 Bright Data Amazon 爬虫工具 API,以 JSON 格式抓取商品、评论、卖家和搜索结果。无需登录,无需浏览器。

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

使用 Amazon 爬虫工具 API 抓取 Amazon 数据:产品、评论、卖家和搜索结果。通过 ASIN、关键词和 UPC 采集或发现数据。免费开始使用。

适用于 Python 的 Amazon 爬虫工具

实时检查 最后验证时间

快速入门 · 无需 PA-API · CLI · 端点 · 数据 · 错误 · MCP 和 Claude Code · 免费积分 · 文档 · 支持

使用 Python 以 JSON 格式获取 Amazon 产品、评论、卖家和搜索结果。无需登录,无需浏览器。基于 Bright Data Amazon 爬虫工具 API 构建。

使用 Bright Data Python SDK。完整 API 文档:Amazon 爬虫工具 API。

此外还提供:用于产品的一键式 CLI,以及完全不需要 Python 的 Bright Data CLI。

如何使用 Python 抓取 Amazon 产品数据

需要 Python 3.10 或更高版本。

pip install brightdata-sdk
export BRIGHTDATA_API_TOKEN=YOUR_API_KEY

从 Bright Data 控制面板获取令牌。也可以在项目根目录中放置 .env 文件,但 virtualenv 必须位于项目内。

也可以不使用令牌。运行一次 npx -p @brightdata/cli bdata login:它会打开浏览器,此后 SDK 将自行找到已存储的凭据,供你以及在该终端中工作的任何编码智能体使用。智能体无法点击完成登录,因此请先自行登录。

还没有账户?创建账户;新账户每月可获得 5,000 个免费积分。

from brightdata import SyncBrightDataClient

with SyncBrightDataClient(auto_create_zones=False) as client:
    product = client.scrape.amazon.products("https://www.amazon.com/dp/B0CRMZHDG8").data
    print(product["title"])
    print(product.get("final_price"), product["currency"], "|", product["rating"], "stars |",
          product["reviews_count"], "reviews")
STANLEY Quencher H2.0 Flow State Tumbler, 40 oz, Fuchsia
39.95 USD | 4.7 stars | 205036 reviews

每个产品消耗一个积分,API 给出的预估时间约为每个输入 7 秒。

每次都传入 auto_create_zones=False。如果保持启用,SDK 会在启动时为网络解锁器和 SERP 创建区域;这是此爬虫从不使用的另外两款 Bright Data 产品,而没有付款方式的账户会在创建区域时失败(sdk-python#57)。

products 接受 URL,而不是 ASIN,因此请像上面那样将 ASIN 写成 /dp/ URL。

使用 .get() 读取价格。缺货产品返回时,is_available 会设为 false,并且根本不会包含 final_price、initial_price、buybox_prices 或 availability,因此 product["final_price"] 会引发 KeyError。

无需 Product Advertising API 即可抓取 Amazon

Amazon 爬虫工具 API 不需要 Amazon 账户、卖家账户或 Product Advertising API(PA-API)访问密钥。唯一凭据是 Bright Data API 密钥,可将其设为 BRIGHTDATA_API_TOKEN,或通过 bdata login 存储。

批量 Amazon 爬虫 CLI

此仓库中的命令会同时针对多个 ASIN 运行 Python 快速入门流程,并写入一个 JSON 文件。

pip install git+https://github.com/bright-cn/amazon-scraper-python
amazon-scraper B0CRMZHDG8 B085DVHQ57
Fetching 2 Amazon products: B0CRMZHDG8, B085DVHQ57
One job for all of them. One credit per product.
asking  2 products...

got     B0CRMZHDG8: 100 fields (STANLEY Quencher H2.0 Flow State Tumbler, 40 oz,)
got     B085DVHQ57: 99 fields (Owala FreeSip Stainless Steel Water Bottle 32 oz)

Saved 2 of 2 products as JSON to amazon.json

它既可以接受产品 URL,也可以接受其中的 ASIN。同一 ASIN 出现两次时只会抓取一次,因此重复项不会产生费用。

在终端中,asking 行会被以下内容原地更新,让你看到它正在工作以及已经运行了多长时间:

⠹ 2 products 0:00:14
--out PATH   output file, default amazon.json

python -m amazon_scraper 也可以使用。

你请求的每个 ASIN 都会放入同一个任务。API 按记录而不是按任务计费,因此抓取十个产品与抓取一个产品的等待时间相同。

也可以导入它而不是直接运行,以便按 ASIN 获取 ok 和 error,而非原始数据行。scrape 不会因某个无效 ASIN 而引发异常;读取 product 前请先检查 ok:

from amazon_scraper import scrape

for outcome in scrape(["B0CRMZHDG8", "B0ZZZZZZZZ"]):
    if outcome.ok:
        print(f"{outcome.asin}: {outcome.product['title']}")
    else:
        print(f"{outcome.asin} failed: {outcome.error}")
B0CRMZHDG8: STANLEY Quencher H2.0 Flow State Tumbler, 40 oz, Fuchsia
B0ZZZZZZZZ failed: The navigation resulted in a dead page (404 status code)

抓取 Amazon 产品、评论、卖家和搜索结果

该命令涵盖下表第一行。这里的每个代码片段都完整可用,并且只需要 brightdata-sdk:按原样粘贴即可。它们每周一都会在 Actions 中运行,规模较小的检查则每隔一天运行一次,顶部徽章显示最新结果。

你已有 你想要 调用
产品 URL 该产品 client.scrape.amazon.products(url)
关键词 一页搜索结果 client.search.amazon.products(keyword=...),请参阅下方说明
卖家 URL 该卖家 client.scrape.amazon.sellers(url)
产品 URL 其评论 client.scrape.amazon.reviews(url),每条评论消耗一个积分,另请参阅下方说明
关键词、分类 URL、畅销商品 URL 或 UPC 完整产品记录 没有对应的 Python 版本;请参阅下方说明

timeout 参数的单位是秒,Amazon 默认值为 240。

抓取 Amazon 评论,以及为什么这里不运行该调用

评论按每条评论一个积分计费。reviews() 接受 numOfReviews、pastDays 和 keyWord,但不会发送其中任何一个:请求仅根据 URL 构建(sdk-python#62)。因此,reviews(url, numOfReviews=20) 会请求全部评论,并且不会有任何警告。

API 确实支持上限参数 max_reviews,Bright Data 自己记录的示例也将其设为 20。SDK 不会将 numOfReviews 映射到该参数。

快速入门中的产品显示有 205,036 条评论。这只需一次调用。在 SDK 开始发送上限参数前,如果你需要数量受限的数据片段,请直接调用 REST 端点。

按关键词抓取 Amazon 搜索结果

client.search.amazon.products(keyword=...) 会返回产品搜索数据集中的数据行,每行约 30 个字段,每条搜索结果对应一行。它与对应 Node 版本的关键词发现功能不同,后者返回包含全部 119 个字段的产品记录。

它没有限制返回行数的参数,也不会发送 pages_to_search。这里不会运行它,因为此 README 中的每个代码片段都会每周重新运行。

API 还可通过关键词、分类 URL、畅销商品 URL 和 UPC 发现完整产品记录。此 SDK 不支持这四种方式;JavaScript SDK 则全部支持。

在一个任务中抓取多个 Amazon ASIN

URL 列表会作为一个任务处理,而不是每个产品一个任务。

from brightdata import SyncBrightDataClient

with SyncBrightDataClient(auto_create_zones=False) as client:
    results = client.scrape.amazon.products([
        "https://www.amazon.com/dp/B0CRMZHDG8",
        "https://www.amazon.com/dp/B085DVHQ57",
    ])
    for result in results:
        row = result.data
        print(row["asin"], "|", row["brand"], "|", row.get("final_price"), row["currency"])
B0CRMZHDG8 | STANLEY | 39.95 USD
B085DVHQ57 | Owala | 29.99 USD

请像上面那样,从数据行自身的 asin 读取其对应的产品,绝不要读取 result.url。SDK 会按位置将结果与你传入的 URL 配对,而 API 每次运行返回的数据行顺序都不同,因此 result.url 可能指向一个产品,而 result.data 中保存的是另一个产品。每个结果还都会被标记为 success=True,包括失效 ASIN 的错误行(sdk-python#60)。

立即触发,稍后获取

对于多于几个产品的任务,不要让进程阻塞一小时。触发任务、保存快照 ID,并在就绪后获取。快照可在 30 天内下载。

import time

from brightdata import SyncBrightDataClient

with SyncBrightDataClient(auto_create_zones=False) as client:
    job = client.scrape.amazon.products_trigger("https://www.amazon.com/dp/B0CRMZHDG8")
    print("snapshot:", job.snapshot_id)
    while (status := client.scrape.amazon.products_status(job.snapshot_id)) not in ("ready", "failed"):
        time.sleep(5)
    print("status:", status)
    record = client.scrape.amazon.products_fetch(job.snapshot_id)[0]
    print("fetched:", record["asin"], "|", record["title"][:40])
snapshot: sd_muars9x1e0ejmq4cx
status: ready
fetched: B0CRMZHDG8 | STANLEY Quencher H2.0 Flow State Tumbler

Amazon 产品数据字段(JSON)

大多数人需要的产品字段:

asin  title  brand  final_price  currency  rating  reviews_count  availability

代码没有硬编码任何字段列表。API 返回的所有内容都会写入 result.data,也会写入命令生成的文件。

API 在架构中使用 pii: true 将以下 3 个字段标记为个人数据:seller_name、zipcode 和 coupon。get_metadata() 会丢弃该标记(sdk-python#61),因此下表改为读取原始元数据端点。

全部 121 个字段,包含类型和说明

每天通过原始元数据端点从数据集架构重新生成,因此不会过时。一条产品记录会包含适用于它的字段:示例文件包含这 121 个字段中的 97 个,此外还有架构中未列出的 timestamp 和 input。

字段 类型 说明
title 文本 产品标题
seller_name 文本 个人数据。卖家名称
brand 文本 产品品牌
description 文本 产品的简要说明
initial_price 价格 初始价格
currency 文本 产品货币
availability 文本 产品库存状态
reviews_count 数字 评论数量
categories 数组 产品分类
parent_asin 文本 产品的父 ASIN
asin 文本 每个产品的唯一标识符
buybox_seller 文本 购买框中的卖家
number_of_sellers 数字 产品的卖家数量
root_bs_rank 数字 常规分类中的畅销商品排名
ISBN10 文本 图书的 ISBN-10 标识符
answered_questions 数字 已回答的问题数量
domain URL 产品域名的 URL
images_count 数字 图片数量
url URL 直接链接到产品的 URL
video_count 数字 视频数量
image_url URL 直接链接到产品图片的 URL
item_weight 文本 产品重量
rating 数字 产品评分
product_dimensions 文本 产品尺寸
seller_id 文本 每个卖家的唯一标识符
image URL 直接链接到产品图片的 URL
date_first_available 文本 产品首次上架日期
discount 文本 产品折扣信息
model_number 文本 产品型号
manufacturer 文本 产品制造商
department 文本 产品所属部门
plus_content 布尔值 表示是否存在额外内容的布尔值
upc 文本 通用产品代码
video 布尔值 表示是否存在视频的布尔值
top_review 文本 产品的热门评论
final_price_high 价格 最终价格为区间时的最高值
final_price 价格 产品最终价格
variations 数组 同一产品不同变体的详细信息
delivery 数组 配送相关信息
features 数组 产品特性
format 数组 图书格式相关信息
buybox_prices 对象 产品价格详情
input_asin 文本 输入的 ASIN(当前未启用)
ingredients 文本 产品成分,主要适用于食品
origin_url URL 用于提取此记录的源页面 URL
bought_past_month 数字 过去一个月的购买量(按 Amazon 显示)
is_available 布尔值 表示产品是否仍然有货
root_bs_category 文本 畅销商品根分类
bs_category 文本 畅销商品分类
bs_rank 数字 特定分类中的畅销商品排名
badge 文本 产品徽章。例如:#1 Best Seller 或 Amazons Choice
subcategory_rank 数组 按子分类划分的畅销商品排名条目
amazon_choice 布尔值 指定产品是否为 Amazons Choice
images 数组 产品图片 URL
product_details 数组 完整产品详情
prices_breakdown 对象 标价/常规价格及优惠状态的明细
country_of_origin 文本 产品原产国
from_the_brand 数组 页面上显示的品牌推广媒体
product_description 数组 嵌入产品描述部分的媒体
seller_url URL Amazon 上的卖家店面/资料 URL
customer_says 文本 客户评价
sustainability_features 数组 带有参考信息的可持续性徽章/认证
climate_pledge_friendly 布尔值 产品是否显示 Climate Pledge Friendly 徽章
videos 数组 产品视频 URL
other_sellers_prices 数组 其他卖家提供的同一产品报价
downloadable_videos 数组 直接媒体 URL
editorial_reviews 数组 图书的编辑评论
about_the_author 文本 作者简介信息
zipcode 文本 个人数据。用于配送和库存预估的 ZIP/邮政编码
coupon 文本 个人数据。优惠券
sponsered 布尔值 赞助
store_url URL 产品商店 URL
ships_from 文本 商品发货地
city 文本 与配送或卖家/位置上下文相关的城市
customers_say 对象 从评论中提取的 Amazon Customers say 摘要
max_quantity_available 数字 允许加入购物车的最大数量
variations_values 数组 变体及其可能的值
language 文本 产品页面/内容的语言
return_policy 文本 产品页面上显示的退货政策文本
inactive_buy_box 对象 购买框不可用/未启用时的价格信息
buybox_seller_rating 数字 购买框卖家的评分
premium_brand 布尔值 是否为高端品牌
amazon_prime 布尔值 是否支持 Amazon Prime 配送
coupon_description 文本 优惠券说明
all_badges 数组 所有徽章
sponsored 布尔值 Amazon Sponsored 标记
variant_id 文本 特定变体的唯一标识符
product_category 文本 使用分隔符连接的完整面包屑路径
category_tree 数组 由包含名称和 URL 的对象构成的分类层级数组
availability_date 文本 缺货商品的预计到货日期
listing_has_variations 布尔值 商品信息是否包含多个变体
variant_attributes 数组 以名称/值对表示的当前变体属性
variants 数组 按类型分组的结构化变体选项
seller_privacy_policy 文本 卖家隐私政策 URL
seller_tos 文本 卖家服务条款 URL
return_window 数字 退货期限天数
target_countries 数组 产品可配送到的国家/地区
store_country 文本 商店国家/地区
category_urls 数组 分类面包屑
all_variations 布尔值 用于采集所有变体的输入字段
safety_information 文本 安全信息
subcategory_link 数组 按子分类划分的畅销商品链接条目
all_inactive_buy_box 数组 所有未启用的购买框信息
is_frequently_returned_item_badge 布尔值 表示徽章是否存在
frequently_returned_item_message 文本 警告框中显示的文本
is_customers_usually_keep 布尔值 表示客户是否通常会保留此商品
title_badge 文本 徽章标题
review_images 数组 评论图片
review_videos 数组 评论视频
also_viewed 数组 客户还浏览了
similar_items 数组 考虑类似商品
bought_past_month_text 文本 过去一个月的购买量(按 Amazon 显示),文本格式。
is_high_price 布尔值 表示产品是否被标记为高价。
title_highlight 文本 采集 Amazon 在产品页面中紧接产品标题后呈现的补充营销/亮点文本
title_clean 文本 由卖家/品牌定义的实际产品标题,不包括 Amazon 可能在页面标题旁边或之后呈现的任何亮点文本
customers_say_topics 数组 “Customers say”部分的结构化明细
brand_url URL 产品品牌 URL
variant_condition 文本 产品变体的状况(例如 New、Renewed、Refurbished - Excellent)。
is_aplus_premium 布尔值 表示产品是否为 Premium A+
buying_option_type 文本 购买选项类型
amazon_checkout_promotion 对象 产品的结账促销
实际输出文件的开头,来自 amazon-scraper B0CRMZHDG8
{
  "generated_at": "2026-09-21T04:54:18.105606+00:00",
  "products": [
    {
      "asin": "B0CRMZHDG8",
      "product": {
        "title": "STANLEY Quencher H2.0 Flow State Tumbler, 40 oz, Fuchsia",
        "seller_name": "Avrix Brands",
        "brand": "STANLEY",
        "description": "Constructed of recycled stainless steel for sustainable sipping, our 40 oz Quencher H2.0 offers maximum hydration with fewer refills. Commuting, studio workouts, day trips or your front porch\u2014you\u2019ll want this tumbler by your side. Thanks to Stanley\u2019s vacuum insulation, your water will stay ice-cold, hour after hour. The advanced FlowState\u2122 lid features a rotating cover with three positions: a straw opening designed to resist splashes while holding the reusable straw in place, a drink opening, and a full-cover top. The ergonomic handle includes comfort-grip inserts for easy carrying, and the narrow base fits just about any car cup holder.",
        "initial_price": 45,
        "currency": "USD",
        "availability": "In Stock",
        "reviews_count": 205036,
        "categories": [
          "Home & Kitchen",
          "Kitchen & Dining",
          "Storage & Organization",
          "Thermoses",
  ...

包含一个产品及其所有字段的完整文件位于 examples/sample_output.json。

Amazon 爬虫错误

你看到的内容 含义
API token required but not found. 在任何请求发出前以状态码 2 退出。请设置令牌。
failed ASIN: The navigation resulted in a dead page (404 status code) 以状态码 1 退出。不存在该产品,通常是 ASIN 拼写错误。
failed ASIN: the API returned no row for this ASIN 以状态码 1 退出。任务返回时没有该输入对应的数据行。请重新运行。
failed ASIN: timeout 以状态码 1 退出。请求在 240 秒后放弃。请重新运行。
failed ASIN: Failed to fetch results: Request timeout after 30 seconds 以状态码 1 退出。任务已完成,但下载耗时超过 30 秒。请重新运行。

任何失败都会以状态码 1 退出,因此可以安全地根据运行结果决定是否继续执行脚本。

在 SDK 中,相同情况如下所示:

你看到的内容 含义
AuthenticationError: Unauthorized (401) 令牌已设置但不正确。
result.success 为 False,result.status 为 "timeout" SDK 放弃等待任务,默认等待时间为 240 秒。向调用传入更大的 timeout,或重新运行。
Failed to fetch results: Request timeout after 30 seconds 任务已完成,但下载失败。这是客户端自身对每个 HTTP 请求的限制 SyncBrightDataClient(timeout=30),而不是你传给调用的 timeout。提高调用的 timeout 无济于事。
result.data 中包含 error 键的字典 API 对一个输入的响应。result.success 仍然显示 True;请读取数据行。

Amazon MCP 服务器和 Claude Code 技能

无需 Python,也无需安装任何内容。粘贴这两行;第一行会打开一次浏览器,或者通过 SSH 和 CI 使用 bdata login --device:

npx -p @brightdata/cli bdata login
npx -p @brightdata/cli bdata pipelines run gd_l7q7dkf244hwjntr0 collect_by_url "https://www.amazon.com/dp/B0CRMZHDG8"

这是 CLI 0.4.0 的语法;旧版 bdata pipelines amazon_product 形式已在该版本中移除。bdata pipelines search amazon 用于查找爬虫工具 ID。Amazon 对应的 ID 为 gd_l7q7dkf244hwjntr0(产品)、gd_le8e811kzy4ggddlq(评论)和 gd_lwdb4vjm1ehb499uxs(搜索),均使用 collect_by_url 方法。bdata pipelines info <id> collect_by_url 会列出爬虫工具的输入字段。每个工具都接受 URL、输出 JSON,并且每条记录消耗一个积分。

npx skills add brightdata/skills 会让 Claude Code、Cursor 和 Codex 掌握这些命令和文档,此后即可使用自然语言操作。完整指南:面向编码智能体的 Bright Data。

要为没有终端的托管助手使用?Bright Data MCP 服务器的 ecommerce 组中包含 Amazon 工具,该组默认关闭,需明确请求启用:

https://mcp.brightdata.com/mcp?token=YOUR_API_TOKEN&groups=ecommerce

智能体还可以自行创建账户,无需填写注册表单:智能体注册。Bright Data 支持的所有其他连接方式,从 LangChain 到 Zapier 和 n8n:集成。

这个 Amazon 爬虫工具免费吗?

新的 Bright Data 账户每月可获得 5,000 个免费积分。产品和搜索结果按每条记录一个积分计费,评论按每条评论一个积分计费,因此免费积分每月可覆盖 5,000 个产品。价格中列出了超出后的费率。

支持

此仓库中的错误:提交 issue,CONTRIBUTING.md 说明了需要提供哪些内容。任何与 API、你的账户或积分有关的问题,请联系 Bright Data 支持团队。

许可证

Apache 2.0。

适用于 Node.js 的 Amazon 爬虫工具

同一个 Amazon 爬虫工具也提供 Node.js 版本:bright-cn/amazon-scraper-node。

About

使用 Python 的 Amazon 抓取工具:通过 Bright Data Amazon 爬虫工具 API,以 JSON 格式抓取商品、评论、卖家和搜索结果。无需登录,无需浏览器。

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages