🎯 A customizable, anti-detection cloud browser powered by self-developed Chromium designed for web crawlers and AI Agents.👉Try Now
Back to Blog

Amazon Rufus Scraper: Product-Aware Answers by ASIN

Ava Wilson
Ava Wilson

Expert in Web Scraping Technologies

15-Jul-2026

TL;DR:

  • Amazon Rufus, Amazon's in-app shopping assistant, is available through the Scrapeless Scraping API as scraper.amazon with type: "rufus".
  • It runs in two modes: send keywords for a category answer with grouped, ranked product picks — or add an asin to ask a product-aware question about one specific item.
  • One POST to /api/v1/scraper/request returns the synthesized answer, the grouped picks, a flattened products array, and Rufus's suggested follow-up questions.
  • The product-aware parameter is asin. With it set, Rufus answers about that exact product; without it, the same question gets a generic "which product?" reply.
  • Start free. New Scrapeless accounts include free Scraper API credits — sign up at app.scrapeless.com.

Amazon Rufus answers shopping questions in plain language — "best noise cancelling headphones" — and now it can also answer questions about a specific product: "is this good for the gym?" The Scrapeless Scraping API captures both as structured JSON. This guide shows the request, the two modes, the response shape, and the one parameter — asin — that makes Rufus product-aware. Every request and field below was captured from a live run of the actor.

What You Can Do With the Rufus Scraper

  • Track share of recommendation — capture which products Rufus names for a category query, in which grouped section, and in what order.
  • Answer product-specific questions at scale — pass an ASIN and a question to see how Rufus describes one product for fit, use case, or comparison.
  • Monitor a brand or competitor — watch whether a product appears in Rufus's recommendations, and how it is framed, over time.
  • Feed downstream systems — pipe the answer, grouped picks, and follow-up questions into dashboards or alerts as clean JSON.

Two Modes: Category and Product-Aware

The Rufus type behaves differently depending on whether you include an asin:

  • Category mode (keywords only). Rufus returns a synthesized recommendation, content_blocks that group products into labelled sections, a flattened products array, and a set of related_questions. Use this to see what Rufus recommends for a query.
  • Product-aware mode (keywords + asin). Rufus scopes the question to that specific product and answers about it directly. In a live run, asking "Is this good for the gym and running?" with the ASIN for a pair of Sony WH-1000XM6 headphones returned "No, the Sony WH-1000XM6 headphones are not ideal for the gym and running…". Drop the asin and the same question gets a generic "which product are you asking about?" reply — the ASIN is what makes the answer product-specific.

Endpoint and Parameters

The Rufus type runs on the synchronous Scraping API endpoint. Authenticate with your token in the x-api-token header.

  • Endpoint: POST https://api.scrapeless.com/api/v1/scraper/request
  • Actor: scraper.amazon
Input field Type Required Description
type string yes Set to rufus.
keywords string yes The shopping question or query.
domain string yes The Amazon storefront, e.g. www.amazon.com.
asin string no A product ASIN. When present, Rufus answers about that specific product.

The result is returned synchronously in a result object.

Authenticated Request

Category mode (illustrative — replace the token):

bash Copy
curl 'https://api.scrapeless.com/api/v1/scraper/request' \
  --header 'Content-Type: application/json' \
  --header 'x-api-token: YOUR_API_TOKEN' \
  --data '{
    "actor": "scraper.amazon",
    "input": {
      "type": "rufus",
      "keywords": "best noise cancelling headphones",
      "domain": "www.amazon.com"
    }
  }'

Product-aware mode adds an asin:

bash Copy
curl 'https://api.scrapeless.com/api/v1/scraper/request' \
  --header 'Content-Type: application/json' \
  --header 'x-api-token: YOUR_API_TOKEN' \
  --data '{
    "actor": "scraper.amazon",
    "input": {
      "type": "rufus",
      "keywords": "Is this good for the gym and running?",
      "domain": "www.amazon.com",
      "asin": "B0GN4CFF6H"
    }
  }'

Python Integration

This example reads the token from the SCRAPELESS_API_KEY environment variable and runs a product-aware Rufus query. It uses only the Python standard library.

python Copy
import json
import os
import urllib.request

API_URL = "https://api.scrapeless.com/api/v1/scraper/request"
API_TOKEN = os.environ["SCRAPELESS_API_KEY"]

payload = {
    "actor": "scraper.amazon",
    "input": {
        "type": "rufus",
        "keywords": "Is this good for the gym and running?",
        "domain": "www.amazon.com",
        "asin": "B0GN4CFF6H",
    },
}

request = urllib.request.Request(
    API_URL,
    data=json.dumps(payload).encode("utf-8"),
    headers={"Content-Type": "application/json", "x-api-token": API_TOKEN},
    method="POST",
)

with urllib.request.urlopen(request, timeout=180) as response:
    data = json.loads(response.read().decode("utf-8"))

result = data.get("result", {})
print("query:", result.get("user_query"))
print("answer:", (result.get("inference_text") or "")[:200])

What You Get Back

Category mode returns the richest payload. The fields below are the ones you will use most; values are an illustrative sample from a live run, trimmed for length.

json Copy
// Illustrative sample from a live scraper.amazon (type rufus) run — field names are real, values trimmed.
{
  "metadata": { "type": "rufus" },
  "result": {
    "user_query": "best noise cancelling headphones",
    "inference_text": "Here are some of the best noise-cancelling headphones ...",
    "content_blocks": [
      { "type": "text" },
      { "type": "product_section", "products": [{ "asin": "B0FDKR293G" }] }
    ],
    "products": [
      {
        "asin": "B0FDKR293G",
        "title": "Bose QuietComfort Ultra Bluetooth Headphones (2nd Gen)",
        "price": "$369.00",
        "original_price": "$449.00",
        "rating": "4.3",
        "reviews": "2,297",
        "category": "Best Overall ANC",
        "delivery": "FREE delivery Sun, Jul 19",
        "image_url": "<product image URL>",
        "url": "<amazon product URL>"
      }
    ],
    "related_questions": [
      "Best ANC earbuds for workouts",
      "Compare Sony XM5 vs Bose QC Ultra"
    ]
  }
}
Field Type Description
metadata.type string The run type, e.g. rufus.
result.user_query string The question sent to Rufus.
result.inference_text string Rufus's synthesized answer.
result.content_blocks array Ordered text and product_section blocks (grouped, ranked picks).
result.products array Flattened product list: asin, title, price, original_price, rating, reviews, category, delivery, image_url, url.
result.related_questions array Follow-up questions Rufus suggests.

Product-aware mode returns the same envelope, but the answer in inference_text is scoped to the ASIN you passed, and the products array is typically absent because Rufus is answering about one item rather than recommending a list.

Common Data-Shape Problems

  • asin is the product-aware switch — and it must be asin. Passing product_id or productId is silently ignored; only asin scopes Rufus to a specific product.
  • Category and product-aware responses differ. A category query returns products and content_blocks; a product-aware query returns a product-specific inference_text and usually no products array. Branch on which one you sent.
  • Prices and ratings are strings. price, original_price, rating, and reviews come back as display strings ("$369.00", "2,297"), so parse them rather than casting directly.
  • content_blocks carry the grouping. The flattened products array loses the section labels; read content_blocks when you need which section Rufus placed a product in.
  • Answers are per-query snapshots. A Rufus response reflects one query at one moment, not a catalog export, so capture over time to track change.

The Rufus type is one mode of the Amazon actor. Scrapeless publishes an open-source Rufus scraper example repository with runnable code in five languages. For background on the assistant, Amazon introduces Rufus, its generative shopping assistant, and covers the wider lineup in its retail newsroom. For another AI answer engine, see the ChatGPT Scraper API guide.

Conclusion

The Rufus scraper turns Amazon's shopping assistant into structured JSON, in two modes from one endpoint: send keywords for a grouped, ranked recommendation, or add an asin for a product-aware answer about one specific item. Branch on which mode you sent, parse the display-string prices and ratings, and read content_blocks when you need the grouping. It is a reliable feed for tracking how Rufus recommends and describes products.

Ready to capture Rufus answers as data? Start free from the Scrapeless dashboard, see where the actor fits on the Scraping API product page, or compare plans on Scrapeless pricing.

FAQ

Q: What is the Amazon Rufus scraper?
A: It is the Scrapeless Scraping API actor scraper.amazon with type: "rufus", which sends a question to Amazon Rufus and returns the answer as structured JSON — the synthesized answer, grouped product picks, a flattened products array, and suggested follow-up questions.

Q: How do I ask about a specific product?
A: Add an asin field to the input. Rufus then answers about that exact product. Without the asin, the same question returns a generic "which product?" reply.

Q: Which endpoint and parameters does it use?
A: POST https://api.scrapeless.com/api/v1/scraper/request with actor set to scraper.amazon and an input object containing type: "rufus", keywords, domain, and optionally asin. Authenticate with your token in x-api-token.

Q: Does product_id work instead of asin?
A: No. Only asin scopes Rufus to a specific product; product_id and productId are ignored.

Q: How do I get the section a product was grouped under?
A: Read content_blocks. The flattened products array drops the section labels, while content_blocks preserves the product_section grouping Rufus used.

Q: Is the response synchronous?
A: Yes. The result object is returned in the same response; you do not poll a separate endpoint.

At Scrapeless, we only access publicly available data while strictly complying with applicable laws, regulations, and website privacy policies. The content in this blog is for demonstration purposes only and does not involve any illegal or infringing activities. We make no guarantees and disclaim all liability for the use of information from this blog or third-party links. Before engaging in any scraping activities, consult your legal advisor and review the target website's terms of service or obtain the necessary permissions.

Most Popular Articles

Catalogue