Use cases / Amazon Products API
Amazon category research
Last updated September 28, 2026. Response excerpts are recorded from the live API.
Who
Who runs this, and what for
| Team | What they decide with it |
|---|---|
| Private-label sellers | Which subcategories have demand, a price band, and weak ratings to beat. |
| Retail and brand strategists | Which competitors lead each subcategory and at what price. |
| Investors in consumer brands | How a brand ranks across its category, from outside the company. |
Pipeline
The calls, step by step
01Read the category and its subcategories
A Best Sellers call for a category returns its top products and its subcategories, each with a node_id. Categories can also be browsed from the top with the categories endpoint.
GET /v1/bestsellers?engine=amazon&category=electronics&page=1 · subcategories
[ { "name": "Accessories & Supplies", "category": "electronics", "node_id": "281407" } ]Recorded response. Live values differ. 02Read each subcategory's list
Each list has 30 products per page and two pages, ranked, with price, rating, and ratings count. Products with many ratings and a low average are the ones to beat.
GET /v1/bestsellers?engine=amazon&category=electronics&page=1 · results.0
{ "rank": 1, "asin": "B08JHCVHTY", "title": "Blink Plus Plan with monthly auto-renewal", "url": "https://www.amazon.com/dp/B08JHCVHTY", "price_text": "$11.99", "price": 11.99, "currency": "USD", "rating": 4.4, "ratings_count": 280481, "image_url": null }Recorded response. Live values differ. 03Open the products you shortlist
The product endpoint adds the Best Sellers Rank in each category, the brand, the Buy Box seller, specifications, and variants.
GET /v1/product?engine=amazon&asin=B0CF3VGQFL · product.best_sellers_rank
[ { "rank": 12, "category": "PC Gaming Keyboards" } ]Recorded response. Live values differ.
Code
A script to start from
category_map.py
# Map an Amazon category: the top 60 best sellers in each subcategory,
# with price and ratings. Out: category.csv.
import csv, os, requests
API = "https://api.clair.im"
HEADERS = {"Authorization": f"Bearer {os.environ['CLAIR_API_KEY']}"}
CATEGORY = "electronics"
def get(path, **params):
r = requests.get(f"{API}{path}", headers=HEADERS, timeout=90,
params={"engine": "amazon", **params})
r.raise_for_status()
return r.json()
top = get("/v1/bestsellers", category=CATEGORY)
with open("category.csv", "w", newline="") as f:
out = csv.writer(f)
out.writerow(["subcategory", "rank", "asin", "title", "price", "rating", "ratings"])
for sub in top["subcategories"]:
for page in (1, 2): # 30 products a page, two pages per list
body = get("/v1/bestsellers", category=CATEGORY,
node_id=sub["node_id"], page=page)
for p in body["results"]:
out.writerow([sub["name"], p["rank"], p["asin"], p["title"],
p["price"], p["rating"], p["ratings_count"]])
Set CLAIR_API_KEY to a key subscribed to the Amazon Products API. Each call is one request against that API's monthly quota.
Cost
What it costs per month
| Schedule | Requests | Plan | Per month | Per 1,000 |
|---|---|---|---|---|
| 1 category, 25 subcategories1 top call plus 25 × 2 pages = 51 requests. | 51 | Pay as you go | $1.03 | $20.20 |
| 5 categories, 25 subcategories, weekly255 requests × 4 weeks = 1,020. | 1,020 | Pay as you go | $20.50 | $20.10 |
| One category map plus 300 products opened51 list calls and 300 product calls = 351 requests. | 351 | Pay as you go | $7.06 | $20.11 |
Measured
Response times
| Amazon Products API | |
|---|---|
| Succeeded | 6 of 7 |
| Median response time | 15.1 s |
| 95th percentile | 18.5 s |
| Had price | 83% |
| Had availability | 100% |
| Had sold by | 100% |
| Had rating | 100% |
| Had best sellers rank | 100% |
| Had variants | 83% |
Limits
What to plan for
- Best Sellers lists rank by recent sales, and Amazon updates them often. A single read is a snapshot; weekly reads show which products hold their rank.
- Rank is not sales volume. Amazon does not publish unit sales; search results sometimes show a bought-in-past-month badge, in sales_volume.
- Two pages of 30 per list, the top 60. The long tail of a subcategory is only reachable through search with category_id.
FAQ
Common questions
What is a node_id?
Amazon's id for a category in its browse tree, also called a browse node. Pass it to best sellers for a subcategory, or as category_id to search.
Can I estimate sales from Best Sellers Rank?
Only roughly, and not from Amazon's data: estimates come from third-party models. Use rank to compare products in the same category.
Does it work outside the US?
Yes, on all ten supported marketplaces with country. Category slugs can differ by marketplace; read the categories endpoint for each.
Run it on your own products
200 requests a month free on each API, no card. Enough to run the pipeline on a short list before choosing a plan.
Bloomberg News API
Associated Press API
Glassdoor API
Greenhouse Jobs API

Crunchbase API
Website Contacts API