Skip to content

Latest commit

 

History

5 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Amazon Scraper

Scrapeless Amazon Scraper

Try Scrapeless Blog X LinkedIn

Collect structured Amazon data — full product details, seller profiles, keyword search results (SERP), and Rufus AI shopping-assistant answers — through the Scrapeless Scraping API, without maintaining browsers, proxy pools, or your own anti-blocking stack.

Use this repo when you need a repeatable way to monitor Amazon pricing and availability, audit sellers, track keyword rankings across marketplaces, or feed product and review data into analytics, pricing, and automation workflows.

How it works

Send a single POST request to the Scrapeless endpoint with your API token in the x-api-token header. The body has two fields: actor (always scraper.amazon) and an input object. The input.type field selects which of the four Amazon scrapers to run:

input.type What it scrapes
product A single product detail page (by product URL / ASIN).
seller A seller storefront / profile page (by seller URL).
keywords Amazon search results (SERP) for a keyword query, page by page.
rufus Answers from Rufus, Amazon's AI shopping assistant.
POST https://api.scrapeless.com/api/v1/scraper/request
Content-Type: application/json
x-api-token: <YOUR_API_TOKEN>

Depending on how long the job takes, the API answers synchronously (200 with the data) or asynchronously (201 with a taskId to fetch later). See Response & HTTP status codes below.

Quick start (curl)

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": "product",
      "url": "https://www.amazon.com/dp/B0BQXHK363",
      "zip_code": ""
    }
  }'

Request parameters

The request body always has actor (scraper.amazon) plus an input object. Which input fields are required depends on type:

Parameter (input.*) Type Required Description
type string Yes Scrape type: product, seller, keywords, or rufus.
url string Yes for product / seller Product or seller page URL.
keywords string Yes for keywords / rufus Search query. Use + between words, e.g. Iphone+14+Pro+512GB.
page integer Optional (keywords/rufus) Result page number.
domain string Optional (keywords/rufus) Marketplace domain. For rufus provide the full host, e.g. www.amazon.com.au (supported list below).
zip_code string Optional Postal code — fill it in to get location-specific delivery information.
department string Optional (keywords) Amazon department filter (the i query parameter). See Department alias.
return_html boolean Optional If true, include the raw HTML page in the response.

Rufus supported domains

rufus currently supports these marketplaces (pass the full host, e.g. www.amazon.com.au):

de, nl, fr, tr, se, eg, au, ca, sg, mx, in, us, pl, it, es, ae, br

Department alias

For keywords, department maps to Amazon's i search parameter, e.g. https://www.amazon.com/s?k=apple+phone+white&i=automotive-intl-ship. Supported values include:

arts-crafts-intl-ship, automotive-intl-ship, baby-products-intl-ship, beauty-intl-ship,
stripbooks-intl-ship, fashion-boys-intl-ship, computers-intl-ship, deals-intl-ship,
digital-music, electronics-intl-ship, fashion-girls-intl-ship, hpc-intl-ship,
kitchen-intl-ship, industrial-intl-ship, digital-text, luggage-intl-ship,
fashion-mens-intl-ship, movies-tv-intl-ship, music-intl-ship, pets-intl-ship,
instant-video, software-intl-ship, sporting-intl-ship, tools-intl-ship,
toys-and-games-intl-ship, videogames-intl-ship, fashion-womens-intl-ship

Scrape types

product

Scrape a single product detail page.

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": "product",
      "url": "https://www.amazon.com/dp/B0BQXHK363",
      "zip_code": ""
  }}'

Returns a rich product object: asin, brand, title/description, availability, buybox_prices, final_price / initial_price / discount, categories, bs_rank, rating / answered_questions, features, product_details, images, videos, delivery, and more.

seller

Scrape a seller storefront / profile page.

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": "seller",
      "url": "https://www.amazon.com/sp?seller=A2XZ7JICGUQ1CX",
      "zip_code": ""
  }}'

Returns the seller's profile and storefront metadata.

keywords

Scrape Amazon search results (SERP) for a query.

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": "keywords",
      "keywords": "Iphone+14+Pro+512GB",
      "page": "1",
      "domain": "com",
      "zip_code": ""
  }}'

Returns { "keyword": ..., "page": ..., "result": { "organic": [ ... ] } }, where each organic item includes asin, title, price / price_strikethrough, rating, reviews_count, is_prime, is_sponsored, best_seller, pos, url, and url_image.

rufus

Query Rufus, Amazon's AI shopping assistant.

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": "macbook",
      "domain": "www.amazon.es",
      "page": "1"
  }}'

Returns the Rufus answer stream (html as server-sent-event chunks, plus metadata). Set is_sse_data to control SSE output. Remember to pass the full domain (e.g. www.amazon.es) — see supported domains.

Response & HTTP status codes

The Amazon actor signals the outcome with the HTTP status code. Your client should branch on it:

Status Name Meaning Example body
200 Success The scrape finished synchronously; the body is the scraped data. Type-specific data object (see each type above).
201 Task In Progress The job was accepted and is still running asynchronously. { "message": "task in progress", "taskId": "a8af123c-…" }
400 Bad Request The request could not be scraped. { "code": 20500, "message": "scraping failed" }

Handling 201 (async): when you receive 201, store the taskId and fetch the result later (task-result polling / webhook callback) as described in the official documentation. A 200 means the data is already in the response and no follow-up is needed.

Example success envelope for product (200):

{
  "asin": "B0BQXHK363",
  "brand": "OLIXIS",
  "availability": "In Stock",
  "final_price": "$44.99",
  "initial_price": "$79.99",
  "discount": "-44%",
  "buybox_seller": "Amazon.com",
  "categories": ["Office Products", "Office Furniture & Lighting"],
  "features": [""],
  "product_details": [{ "type": "Brand", "values": "OLIXIS" }]
}

For the complete field list of every type, see the official documentation.

Code examples

Ready-to-run examples live in examples/. Each one selects the scrape type via a command-line argument (defaults to product) and branches on the HTTP status code (200 / 201 / 400 / other):

Language File Run
Python example.py pip install requests && python example.py keywords
Node.js example.js node example.js keywords (Node 18+)
Go example.go go run example.go keywords
Java Example.java java Example.java keywords (Java 11+)
PHP example.php php example.php keywords

All examples read the token from the SCRAPELESS_API_TOKEN environment variable:

export SCRAPELESS_API_TOKEN="your_api_token"

Pass one of product | seller | keywords | rufus as the argument to run a different scrape type.

Practical use cases

Price and availability monitoring

Track final_price, initial_price, discount, buybox seller, and stock status for your own or competitor ASINs, and alert when they change.

Keyword rank tracking

Run the keywords type across pages and marketplaces to see where products rank organically vs. sponsored, and how the SERP shifts over time.

Seller and catalog intelligence

Audit seller storefronts and product details (specs, categories, ratings, reviews) to build catalogs, benchmark competitors, or enrich internal data.

AI shopping-assistant monitoring

Capture Rufus answers to understand how Amazon's AI assistant recommends products for your category and questions.

Why use Scrapeless for Amazon scraping?

Benefit What it means for your team
One unified API Product, seller, keywords, and Rufus data through a single scraper.amazon actor.
Structured output Clean JSON fields (prices, ratings, ranks, specs, SERP items) instead of raw HTML.
Less maintenance No browser automation, proxy rotation, retries, or anti-blocking logic to build.
Marketplace coverage Target multiple Amazon domains and localized results via domain and zip_code.
Sync or async Get results inline (200) or via task id (201) for longer-running jobs.

FAQ

What is Amazon Scraper?

Amazon Scraper is a Scrapeless Scraping API actor (scraper.amazon) that returns structured Amazon data for four scrape types: product pages, seller profiles, keyword search results, and Rufus AI answers.

How do I choose product vs. seller vs. keywords vs. rufus?

Set input.type. product and seller take a url; keywords and rufus take keywords (plus optional page / domain). See Scrape types.

Why did I get a 201 instead of 200?

200 means the scrape completed synchronously and the body already contains the data. 201 means the job is still running; keep the taskId and fetch the result asynchronously as described in the docs.

What does a 400 with code: 20500 mean?

The request could not be scraped ("scraping failed"). Verify the url / keywords, type, and domain, then retry.

Do I need to run a browser or proxy pool?

No. Scrapeless handles the scraping workflow behind the API; your application only sends requests and processes the returned data.

What should I consider before using scraping in production?

Make sure your use case complies with applicable laws, platform terms, privacy requirements, and your organization's data policies. Avoid collecting sensitive, private, or unauthorized information.

Learn more

Contact us

Need help building an Amazon monitoring workflow or scaling data collection?

  • Join our Discord.
  • Contact us on Telegram.
  • For repo-specific issues or improvements, open an issue or pull request in this repository.

About

Scrape Amazon product, search, price, rating, and review data through the Scrapeless Scraper API for ecommerce research, price monitoring, and marketplace automation.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors