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.
- Full documentation: https://apidocs.scrapeless.com/doc-857373
- Get your
x-api-token: https://app.scrapeless.com/passport/login?redirect=/quick-start - API endpoint:
POST https://api.scrapeless.com/api/v1/scraper/request
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.
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": ""
}
}'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 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
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 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.
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.
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.
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.
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.
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.
Track final_price, initial_price, discount, buybox seller, and stock status
for your own or competitor ASINs, and alert when they change.
Run the keywords type across pages and marketplaces to see where products rank
organically vs. sponsored, and how the SERP shifts over time.
Audit seller storefronts and product details (specs, categories, ratings, reviews) to build catalogs, benchmark competitors, or enrich internal data.
Capture Rufus answers to understand how Amazon's AI assistant recommends products for your category and questions.
| 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. |
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.
Set input.type. product and seller take a url; keywords and rufus
take keywords (plus optional page / domain). See
Scrape types.
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.
The request could not be scraped ("scraping failed"). Verify the url /
keywords, type, and domain, then retry.
No. Scrapeless handles the scraping workflow behind the API; your application only sends requests and processes the returned data.
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.
Need help building an Amazon monitoring workflow or scaling data collection?