Amazon Sales Data API

Estimated unit sales for an ASIN: weekly, monthly, and annual. The figures are estimates from the listing’s Best Sellers Rank and recent-sales text, so you can compare demand before you source a product.

Why Use This API?

Everything you need to integrate Amazon data into your application

Weekly, monthly, annual units

salesEstimate returns weeklyUnitSales, monthlyUnitSales, and annualUnitSales. Each value is an estimated unit count.

Rank is the primary signal

The monthly figure uses the product’s first Best Sellers Rank and its category. A “bought in past month” phrase on the listing refines it.

One product per request

Pass an ASIN, a product URL, or a GTIN. The sales route is separate from the general product lookup.

Reused for up to 48 hours

The same rank and recent-sales inputs are cached for up to 48 hours. Polling the same product every few minutes will not produce a new estimate.

Try It Out

See how easy it is to fetch Amazon data with our API

bash
curl -G "https://rest.canopyapi.co/api/amazon/product/sales" \
  -H "API-KEY: YOUR_API_KEY" \
  --data-urlencode "asin=B08N5WRWNW" \
  --data-urlencode "domain=US"
Response
{
  "data": {
    "amazonProduct": {
      "salesEstimate": {
        "weeklyUnitSales": 173,
        "monthlyUnitSales": 750,
        "annualUnitSales": 9000
      }
    }
  }
}

What Can You Build?

Here are some popular use cases for this API

1

Compare estimated demand for a shortlist of ASINs before you source them

2

Pair a monthly unit estimate with the current price from the product API

3

Store each response if you want your own history of estimates over time

Understanding the Response

Key fields returned by the API

monthlyUnitSales

Estimated units for a month. This is the figure the other two fields are derived from. The sample response uses 750 so the arithmetic is easy to check.

weeklyUnitSales

The monthly estimate divided by 4.33 and rounded to the nearest integer. 750 / 4.33 rounds to 173.

annualUnitSales

The monthly estimate multiplied by 12. 750 × 12 is 9000. This is that extrapolation, not a separate count of the past year.

salesEstimate

Null when the listing has neither a Best Sellers Rank nor a recent-sales phrase, or when an estimate cannot be produced. The REST sales route returns this object and nothing else.

bestSellerRankings

On the GraphQL product query: the current categoryName and rank from the product details. The estimate uses the first rank. This field is a snapshot, and the REST sales route does not return it.

Unit estimates, and how they are derived

salesEstimate is an estimate of how many units a product sells. monthlyUnitSales comes from a model. The primary signal is the first Best Sellers Rank on the listing: that rank’s category and its position. When the product page shows a recent-sales phrase such as “700+ bought in past month,” the phrase refines the monthly figure. The number in that phrase is a rounded threshold, so “700+” places the estimate above 700 and below 800. A listing with only the phrase, and no rank, is estimated from the phrase alone.

weeklyUnitSales is monthlyUnitSales divided by 4.33 and rounded. annualUnitSales is monthlyUnitSales times 12. The sample above uses a monthly estimate of 750, which produces a weekly estimate of 173 and an annual estimate of 9000. Treat those numbers as a response shape. A live ASIN returns its own estimate.

The same category, rank, and recent-sales text are reused for up to 48 hours. If neither a Best Sellers Rank nor a recent-sales phrase is available, salesEstimate is null. The field is marked experimental, so it can be missing, slow, or error more often than title, price, and images. There is no revenue field and no series of past ranks. bestSellerRankings is the current category name and rank only. Save the responses yourself if you need a history.

A walkthrough of using sales figures in market research is on how to get Amazon sales data. To try a rank in the browser, use the sales estimate converter.

Request an estimate

REST is GET /api/amazon/product/sales on rest.canopyapi.co, with the key in the API-KEY header. Pass exactly one of asin, url, or gtin. domain defaults to US. A URL lookup takes the marketplace from the URL. The general product route, GET /api/amazon/product, does not include salesEstimate.

GraphQL is amazonProduct at graphql.canopyapi.co. Select salesEstimate { weeklyUnitSales monthlyUnitSales annualUnitSales }. The same query can select bestSellerRankings { categoryName rank }. GraphQL accepts Authorization: Bearer, API-KEY, or CANOPY-API-KEY. domain accepts US, UK, CA, DE, FR, IT, ES, AU, IN, MX, BR, JP, PL, AE, SG, NL, and SE.

Title, price, and images for that ASIN are the Amazon product API. The ranked list Amazon publishes for a whole category is the Amazon bestsellers API. To see the categories and ranks on one listing in the browser, use the category finder.

Pricing

100 free requests a month, then $0.01 per request with automatic volume discounts. Asking for a sales estimate counts as an additional request per product, the same as stock estimates and A+ content. Sign in to create a key. Field reference is in the docs and the OpenAPI spec under /api/amazon/product/sales.

Frequently Asked Questions

What does the Amazon sales data API return?

For one product, salesEstimate with three integers: weeklyUnitSales, monthlyUnitSales, and annualUnitSales. They are estimated units. The REST route returns that object. GraphQL can return it next to bestSellerRankings, the current category name and rank from the product details.

How is the monthly unit estimate calculated?

A model estimates monthly units from the first Best Sellers Rank on the listing (category and rank). When Amazon shows a phrase like “700+ bought in past month,” that phrase refines the estimate. The displayed number is a rounded threshold, so “700+” sits above 700 and below 800. Weekly units are the monthly estimate divided by 4.33 and rounded. Annual units are the monthly estimate times 12.

Why is salesEstimate null?

The field is null when the listing has neither a Best Sellers Rank nor a recent-sales phrase, or when an estimate cannot be produced. It is an experimental field, so some products will not have a number. A null is a normal response, not a failed lookup of the product itself.

Can I get sales rank history or revenue?

bestSellerRankings is the current category and rank only. This API does not return a history of ranks, a history of estimates, Seller Central orders, or a revenue total. Store each response if you want a series. annualUnitSales is the monthly estimate multiplied by 12.

What does a request cost?

The same plan as the rest of Canopy API: 100 free requests every month, then $0.01 per request with automatic volume discounts. Selecting a sales estimate counts as an additional request for that product.

Ready to Get Started?

Start building with our Amazon API today. Get 100 free requests every month.