🎯 Trình duyệt đám mây tùy chỉnh, chống phát hiện được hỗ trợ bởi Chromium tự phát triển, thiết kế dành cho trình thu thập dữ liệu webtác nhân AI. 👉Dùng thử ngay
Quay lại blog

API Scraper Rufus Amazon: Cách trích xuất thông tin mua sắm hội thoại từ Amazon trên quy mô lớn

Sophia Martinez
Sophia Martinez

Specialist in Anti-Bot Strategies

27-Apr-2026

API Ghi Nét Amazon Rufus

Amazon Rufus là trợ lý mua sắm qua cuộc trò chuyện, ngày càng thúc đẩy nghiên cứu trước khi mua trên Amazon — trả lời "Máy rửa bát này có an toàn không?", "So với mẫu M2 thì cái này thế nào?", "Giày chạy tốt nhất dưới 100€" với những câu trả lời chính xác, có hiểu biết về sản phẩm. Đối với những người điều chỉnh giá, công cụ so sánh, theo dõi thương hiệu, và các quy trình mua sắm bằng AI, những câu trả lời mà Rufus cung cấp là tín hiệu có giá trị cao.

Rufus chỉ khả dụng cho các phiên khách hàng đã đăng nhập và phát trực tiếp câu trả lời dưới dạng Sự Kiện Gửi Từ Máy Chủ. Điều này khiến nó không thể truy cập thông qua trình duyệt ẩn danh và không thực tế để tích hợp qua việc thu thập dữ liệu tự làm. API Ghi Nét Amazon Rufus Scraper giải quyết điều này từ đầu đến cuối — xác thực, mã chống bot, định tuyến thị trường, và phân tích luồng đều được xử lý ở phía máy chủ, được công khai thông qua một yêu cầu HTTP POST đơn giản. Hướng dẫn này sẽ giải thích mọi thứ: tại sao các đội ngũ sử dụng API, cách hoạt động của yêu cầu và phản hồi, tham chiếu tham số, tích hợp trong Python và Node.js, và những vấn đề phổ biến cùng giải pháp của chúng.


Phần 1: Tại sao nên sử dụng API Ghi Nét Amazon Rufus?

API Rufus biến một bề mặt Amazon đã xác thực và phát trực tiếp thành một lời gọi HTTP JSON có cấu trúc duy nhất.

  • Không cần đăng nhập Amazon. Xác thực được xử lý tại Scrapeless. Người dùng không bao giờ thấy một biểu mẫu đăng nhập, một thông báo MFA, hay một hộp cookie.
  • Câu trả lời được phát trực tiếp, được phân tích cho bạn. Một câu trả lời điển hình từ Rufus là 60–80 mảnh Sự Kiện Gửi Từ Máy Chủ trải dài qua bảy loại sự kiện. API kết hợp luồng thành một đối tượng result đã được phân tích — không cần iter_lines, không cần phát hiện biên giới \n\n, không cần phân phối loại sự kiện ở phía người gọi.
  • Định tuyến thị trường trong một tham số. domain: "www.amazon.es", "www.amazon.com", "www.amazon.de" — API tự động định tuyến qua proxy dân cư tương ứng với khu vực.
  • Dữ liệu sản phẩm có cấu trúc ngay từ đầu. result.products trả về một danh sách các dict với asin, title, rating, reviews, image_url, category, và một thẻ biên tập footer — bộ sưu tập đã được chọn lọc cho truy vấn từ Rufus.
  • Khai thác câu hỏi liên quan. Mỗi câu trả lời cũng bao gồm 3–5 câu hỏi theo dõi mà Rufus tạo ra. Chúng là nguồn mở rộng truy vấn sạch cho nghiên cứu SEO, lập kế hoạch nội dung, hoặc các lời gọi Rufus nối tiếp.
  • Cùng tài khoản Scrapeless, cùng bảng điều khiển. API Rufus sử dụng cùng một mã API như phần còn lại của dòng sản phẩm Scrapeless — API Scraper, Trình duyệt Thu thập Dữ liệu, API Thu thập Dữ liệu Toàn cầu. Một tài khoản, nhiều bề mặt.

Giải pháp thu thập dữ liệu Amazon Rufus tốt nhất

API Ghi Nét Amazon Rufus Scraper được xây dựng cho các quy trình sản xuất cần đầu ra đối thoại của Rufus dưới dạng dữ liệu có cấu trúc, mà không gặp gánh nặng tích hợp của việc chạy trình duyệt đã xác thực cho mỗi truy vấn.

  • Xác thực phía máy chủ. Scrapeless giữ các phiên Amazon đã xác thực và quay vòng chúng. Người gọi gửi một truy vấn và nhận lại JSON đã phân tích.
  • Đầu ra đã được phân tích sẵn. Câu trả lời mặc định là một phong bì JSON với một đối tượng result đã được điền sẵn với products, related_questions, interim_messages, và một request_context. Không cần mã glue cho việc phát trực tuyến trong trường hợp phổ biến.
  • Dữ liệu SSE thô tùy chọn. Cài đặt is_sse_data: true sẽ tiết lộ luồng thô event:<type>\ndata:<json>\n\n cho các caller cần cập nhật giao diện người dùng tiến bộ hoặc kiểm toán sự kiện toàn bộ.
  • Đa thị trường. www.amazon.es được xác minh từ đầu đến cuối; cùng một cấu trúc áp dụng cho các miền thị trường khác (.com, .co.uk, .de, .co.jp, .com.au, .in, .com.mx, .com.br).

Cách thu thập dữ liệu Amazon Rufus với API Ghi Nét Scraper

Quy trình làm việc từ đầu đến cuối diễn ra qua bốn bước: lấy mã API, xây dựng thân yêu cầu, gửi POST, phân tích phản hồi. Đăng ký tại scrapeless.com, sao chép mã API từ bảng điều khiển, và lưu nó như một biến môi trường:

bash Copy
export SCRAPELESS_API_TOKEN=sk_your_token_here

Điểm cuối là POST https://api.scrapeless.com/api/v1/scraper/request với tiêu đề x-api-token: <YOUR_TOKEN> và một thân JSON. Phản hồi là một phong bì JSON nơi result chứa kết quả đã phân tích từ Rufus.


Cách thu thập dữ liệu Rufus theo truy vấn từ khóa

Đây là quy trình chuẩn để hỏi Rufus một câu hỏi và nhận lại những câu trả lời có cấu trúc dựa trên Amazon.

Bước 1: Xây dựng thân yêu cầu

Thân yêu cầu có ba trường bắt buộc trong input: type (luôn là "rufus"), keywords (câu hỏi hoặc ý định mua sắm), và domain (thị trường Amazon).

json Copy
{
  "actor": "scraper.amazon",
  "input": {
    "type":     "rufus",
    "keywords": "macbook air m3 có tốt cho việc chỉnh sửa video không",
    "domain":   "www.amazon.es"
  }
}

Bước 2: Đặt tham số

keywords chấp nhận các truy vấn ngôn ngữ tự nhiên không cố định - câu hỏi trực tiếp ("Nó có chống nước không?"), so sánh ("M1 so với M3 cho video"), hoặc ý định mua sắm ("macbook tốt nhất cho sinh viên"). domain chọn thị trường Amazon; điều chỉnh nó theo địa phương mà bạn muốn Rufus định hướng câu trả lời của mình. Đối số boolean tùy chọn is_sse_data mặc định là false (bao bì JSON đã phân tích); đặt nó là true để nhận luồng SSE thô thay vào đó.

Bước 3: Gửi yêu cầu

Gửi POST nội dung đến điểm cuối với tiêu đề x-api-token. Phản hồi mặc định đến trong 5–15 giây từ đầu đến cuối dưới dạng một phản hồi HTTP phân đoạn (khoảng 130 KB cho một truy vấn điển hình). Phân tích JSON, đọc result.productsresult.related_questions.

Một phản hồi thành công điển hình:

json Copy
{
  "html": "id:CHUNK_0\nevent:context\ndata:{...}\n\nid:CHUNK_1\nevent:affordance\n...",
  "metadata": {
    "rawUrl": "https://api.scrapeless.com/storage/scrapeless.scraper.amazon/.../<id>.html",
    "type":   "rufus"
  },
  "result": {
    "request_context":   { "requestId": "TMWTVKB12QFTQEV9D2GJ", "sessionId": "257-9398007-5193547", "bsr": {...} },
    "user_query":        "macbook air m3 có tốt cho chỉnh sửa video không",
    "interim_messages":  ["Đang kiểm tra...", "Đang thu thập dữ liệu…"],
    "products":          [ { "asin": "B08N5TLVQ2", "title": "Apple MacBook Air...", "rating": "4.8", "reviews": "2.045", ... }, ... ],
    "related_questions": ["MacBook Air so với MacBook Pro khác biệt", "MacBook nào tốt hơn cho sinh viên?", ...],
    "feedback_controls": { "groupId": "...", "text": "..." }
  }
}

Tham số API thu thập Scrapeless Amazon Rufus

Tham số Bắt buộc Loại Mô tả
actor chuỗi Phải là "scraper.amazon"
input.type chuỗi Phải là "rufus"
input.keywords chuỗi Truy vấn tự do cho Rufus - câu hỏi, so sánh, hoặc ý định mua sắm
input.domain chuỗi Tên miền thị trường Amazon, ví dụ: "www.amazon.es", "www.amazon.com", "www.amazon.de"
input.is_sse_data tùy chọn boolean Khi true, phản hồi là luồng SSE thô. Khi false (mặc định), phản hồi là bao bì JSON đã phân tích với đối tượng result đã được điền trước.

Đối tượng result đã phân tích mà API trả về:

Trường Loại Mô tả
request_context đối tượng Các định danh phía máy chủ - requestId, sessionId, bsr (gợi ý hành vi UI)
user_query chuỗi Phản hồi của keywords đầu vào - hữu ích cho việc quay vòng trong các pipeline không đồng bộ
interim_messages mảng chuỗi Thông điệp trạng thái tải được địa phương hóa cho thị trường (ví dụ: "Đang kiểm tra...", "Đang thu thập dữ liệu…" cho .es)
products mảng đối tượng Danh sách sản phẩm được Rufus chọn lọc - thường là 3–6 mục với asin, url, title, rating, reviews, category, image_url, image_alt, footer
related_questions mảng chuỗi 3–5 câu hỏi theo sau mà Rufus sinh ra - có thể sử dụng để mở rộng truy vấn hoặc các cuộc gọi liên tiếp
feedback_controls đối tượng Các chuỗi phản hồi thumbs-up/down mà Rufus hiển thị dưới câu trả lời

Tài liệu tham khảo API đầy đủ: apidocs.scrapeless.com/api-34218448.


Cách tích hợp Scrapeless vào dự án của bạn

Việc tích hợp chỉ là một HTTP POST đơn giản. Dưới đây là các ví dụ làm việc bằng Python và Node.js - cả hai đều nhắm đến yêu cầu tiêu chuẩn (keywords="macbook air m3 có tốt cho chỉnh sửa video không", domain="www.amazon.es").

Python

python Copy
import os
import requests

URL = "https://api.scrapeless.com/api/v1/scraper/request"
HEADERS = {
    "x-api-token":  os.environ["SCRAPELESS_API_TOKEN"],
    "Content-Type": "application/json",
}
BODY = {
    "actor": "scraper.amazon",
    "input": {
        "type":     "rufus",
        "keywords": "macbook air m3 có tốt cho chỉnh sửa video không",
        "domain":   "www.amazon.es",
    },
}

resp = requests.post(URL, headers=HEADERS, json=BODY, timeout=60)
resp.raise_for_status()
data = resp.json()

# Đầu ra đã phân tích của Rufus
for product in data["result"]["products"]:
    print(f"{product['asin']}  {product['rating']}★  {product['title'][:80]}")

print("\nCác câu hỏi liên quan:")
for q in data["result"]["related_questions"]:
    print(f"  - {q}")

Node.js (18+)

js Copy
const URL = "https://api.scrapeless.com/api/v1/scraper/request";

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.amazon",
    input: {
      type:     "rufus",
      keywords: "macbook air m3 có tốt cho chỉnh sửa video không",
      domain:   "www.amazon.es",
    },
  }),
});
if (!resp.ok) throw new Error(`HTTP ${resp.status}: ${await resp.text()}`);

const data = await resp.json();

for (const p of data.result.products) {
  console.log(`${p.asin}  ${p.rating}★  ${p.title.slice(0, 80)}`);
}

console.log("\nCác câu hỏi liên quan:");
javascript Copy
for (const q of data.result.related_questions) {
  console.log(`  - ${q}`);
}

Cả hai khách hàng trả lại một đối tượng data.result đã được phân tích cú pháp giống hệt nhau — không xử lý SSE, không tái lắp ghép các khối. Đối với việc tiêu thụ SSE thô (Giao diện người dùng tiến bộ, kiểm toán sự kiện đầy đủ), đặt input.is_sse_data: true trong phần thân và đọc phản hồi như một luồng:

Python — chế độ SSE thô

python Copy
import os, json, requests

resp = requests.post(URL, headers=HEADERS, json={
    "actor": "scraper.amazon",
    "input": {
        "type":         "rufus",
        "keywords":     "macbook air m3 có tốt cho chỉnh sửa video không",
        "domain":       "www.amazon.es",
        "is_sse_data":  True,
    },
}, stream=True, timeout=60)

event_type, data_buf = None, []
for line in resp.iter_lines(decode_unicode=True):
    if line is None:
        continue
    if line.startswith("event:"):
        event_type = line[len("event:"):].strip()
    elif line.startswith("data:"):
        data_buf.append(line[len("data:"):])
    elif line == "":
        if event_type and data_buf:
            payload = json.loads("".join(data_buf))
            print(event_type, "->", str(payload)[:120])
        event_type, data_buf = None, []

Node.js — chế độ SSE thô

js Copy
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.amazon",
    input: {
      type: "rufus", keywords: "macbook air m3 có tốt cho chỉnh sửa video không",
      domain: "www.amazon.es", is_sse_data: true,
    },
  }),
});

const reader = resp.body.getReader();
const decoder = new TextDecoder("utf-8");
let buf = "";
while (true) {
  const { value, done } = await reader.read();
  if (done) break;
  buf += decoder.decode(value, { stream: true });
  const frames = buf.split("\n\n");
  buf = frames.pop();
  for (const frame of frames) {
    const lines = frame.split("\n");
    const evtLine = lines.find(l => l.startsWith("event:"));
    const dataLine = lines.find(l => l.startsWith("data:"));
    if (evtLine && dataLine) {
      const event = evtLine.slice("event:".length).trim();
      const data  = JSON.parse(dataLine.slice("data:".length));
      console.log(event, "->", JSON.stringify(data).slice(0, 120));
    }
  }
}

Trong chế độ thô, hãy kỳ vọng từ 60–80 khung trên bảy loại sự kiện: context, affordance, interim, inference, feedback, remove, close. Sự kiện inference mang câu trả lời tổng hợp; close báo hiệu kết thúc luồng.


Cách tránh các vấn đề phổ biến gặp phải trong việc thu thập dữ liệu

Phản hồi lỗi bạn có thể thấy

API trả về JSON có cấu trúc cho mọi trường hợp lỗi — code là mã lỗi Scrapeless, message là giải thích dễ hiểu. Các phản hồi thực tế thu được từ các yêu cầu cố tình không hợp lệ:

Kịch bản HTTP Nội dung phản hồi
Mã thông báo API không hợp lệ 401 {"code":14404,"message":"mã truy cập không hợp lệ"}
Tên tác nhân sai 400 {"code":14002,"message":"tác nhân không hợp lệ: <tên>"}
Thiếu hoặc sai tên trường (ví dụ page thay vì type) 400 {"code":20404,"message":"lỗi giải mã đầu vào"}
Thiếu hoặc không hợp lệ domain 400 {"code":20500,"message":"Loại: lỗi scraper rufus: lỗi rpc: mã = Code(20500) mô tả = Lỗi khi scraping Rufus, nếu lỗi này tiếp diễn, hãy thay đổi khu vực"}
Lỗi tạm thời từ phía trên (EOF không mong đợi từ Amazon) 400 {"code":20500,"message":"Loại: lỗi scraper rufus: [Amazon] yêu cầu rufusStreaming <url> thất bại :trạng thái=599,msg=EOF không mong đợi"}
keywords trống hoặc thiếu 200 Bao bì thành công, nhưng luồng SSE chứa một khối event:softlanding_errorresult.products là trống. Kiểm tra result.products.length === 0 và/hoặc quét html cho softlanding_error.

Các mã trong khoảng 144xx là lỗi xác thực và xác minh tác nhân; 204xx là lỗi hình thức yêu cầu (trường đầu vào); 205xx là lỗi từ phía Amazon. Xử lý 205xx với EOF không mong đợi hoặc thay đổi khu vực là tạm thời — thử lại với một khoảng thời gian nghỉ ngắn.

Kết luận

Amazon Rufus đang trở thành một bề mặt chính cho việc khám phá sản phẩm, so sánh, và nghiên cứu trước khi mua hàng. Đối với các nhóm phụ thuộc vào dữ liệu ý định mua sắm, nó cung cấp các tín hiệu giá trị như các đề xuất sản phẩm, bối cảnh so sánh, và các câu hỏi theo sau có thể phục vụ cho SEO, định giá, và quy trình mua sắm AI.

API Scraper Scrapeless Amazon Rufus loại bỏ những phần khó khăn nhất khi làm việc với Rufus. Thay vì quản lý phiên đăng nhập Amazon, phân tích cú pháp SSE, thách thức chống bot, và định tuyến thị trường một cách riêng lẻ, bạn chỉ cần gửi một yêu cầu và nhận lại đầu ra có cấu trúc. Điều đó khiến nó trở thành một lựa chọn thực tiễn cho các quy trình sản xuất cần truy cập đáng tin cậy và có thể mở rộng vào thông tin mua sắm do Rufus tạo ra.

Nhận gói miễn phí của bạn và bắt đầu thu thập dữ liệu:

Tham gia cộng đồng năng động của Scrapeless để nhận kế hoạch miễn phí trị giá $5-10 và kết nối với các nhà đổi mới khác:

Cộng đồng Discord chính thức của Scrapeless
Cộng đồng Telegram chính thức của Scrapeless


Câu hỏi thường gặp về API Amazon Rufus Scraper

H: Tôi có cần tài khoản Amazon hoặc MFA không?
Không. Việc xác thực được xử lý ở phía máy chủ bởi Scrapeless. Mã của bên gọi chỉ thấy result.productsresult.related_questions — không bao giờ thấy biểu mẫu đăng nhập Amazon, thử thách MFA, hoặc hộp cookie.

H: Amazon Rufus được sử dụng để làm gì?
Amazon Rufus là trợ lý mua sắm đối thoại của Amazon. Người mua sử dụng nó để hỏi các câu hỏi về sản phẩm, so sánh lựa chọn và nhận đề xuất dựa trên trường hợp sử dụng, ngân sách và thuộc tính sản phẩm.

H: Tại sao Amazon Rufus lại quan trọng cho SEO và nghiên cứu sản phẩm?
Rufus tiết lộ các câu hỏi mua sắm thực sự và ý định theo dõi phản ánh cách người dùng suy nghĩ trước khi mua. Những câu hỏi đó hữu ích cho việc mở rộng từ khóa, lập kế hoạch nội dung, định vị sản phẩm và hiểu điều gì mà người mua quan tâm nhất.

H: Dữ liệu Amazon Rufus có thể được lấy trực tiếp từ Amazon không?
Không đáng tin cậy thông qua trình duyệt ẩn danh. Rufus gắn liền với phiên khách hàng đã đăng nhập và phát trực tiếp phản hồi của nó, điều này làm cho việc lấy dữ liệu thủ công trở nên mong manh và khó mở rộng. Scrapeless xử lý sự phức tạp đó ở phía máy chủ.

H: Điều gì làm cho Scrapeless tốt hơn là xây dựng một trình thu thập dữ liệu Rufus tùy chỉnh?
Scrapeless xử lý xác thực, mã chống bot, phân tích luồng và định tuyến thị trường cho bạn. Điều đó giảm thiểu gánh nặng bảo trì và làm cho API dễ sử dụng hơn trong sản xuất so với một trình duyệt DIY hoặc đường ống SSE.

H: API Rufus hỗ trợ những thị trường nào?
API được thiết kế cho các miền thị trường Amazon như www.amazon.com, www.amazon.eswww.amazon.de. Điều đó làm cho nó phù hợp cho các quy trình công việc đa thị trường khi cần phải định vị các câu trả lời của Rufus theo khu vực. Hiện tại, các miền châu Âu và Hoa Kỳ được hỗ trợ, và Scrapeless đang liên tục mở rộng các miền được hỗ trợ!

H: Loại dữ liệu nào mà API Rufus trả về?
Nó thường trả về một đối tượng JSON có cấu trúc chứa các đề xuất sản phẩm, câu hỏi liên quan và ngữ cảnh yêu cầu. Tùy thuộc vào truy vấn, bạn cũng có thể sử dụng đầu ra luồng thô nếu bạn cần dữ liệu cấp sự kiện đầy đủ.

H: Cách các thương hiệu có thể sử dụng dữ liệu Rufus?
Các thương hiệu có thể sử dụng dữ liệu Rufus cho nghiên cứu đối thủ, phân tích so sánh sản phẩm, chiến lược nội dung, khai thác ý định mua sắm, và tiếp thị hỗ trợ AI. Nó đặc biệt hữu ích khi bạn muốn hiểu những thuộc tính sản phẩm nào mà Rufus nêu bật thường xuyên nhất.

H: API Rufus có hữu ích cho các tác nhân AI và tự động hóa không?
Có. Bởi vì nó trả về dữ liệu có cấu trúc thay vì một phiên trình duyệt, nó phù hợp với các tác nhân AI, quy trình làm giàu, hệ thống đề xuất và các quy trình tự động hóa khác.

Tại Scrapless, chúng tôi chỉ truy cập dữ liệu có sẵn công khai trong khi tuân thủ nghiêm ngặt các luật, quy định và chính sách bảo mật trang web hiện hành. Nội dung trong blog này chỉ nhằm mục đích trình diễn và không liên quan đến bất kỳ hoạt động bất hợp pháp hoặc vi phạm nào. Chúng tôi không đảm bảo và từ chối mọi trách nhiệm đối với việc sử dụng thông tin từ blog này hoặc các liên kết của bên thứ ba. Trước khi tham gia vào bất kỳ hoạt động cạo nào, hãy tham khảo ý kiến ​​cố vấn pháp lý của bạn và xem xét các điều khoản dịch vụ của trang web mục tiêu hoặc có được các quyền cần thiết.

Bài viết phổ biến nhất

Danh mục