# Amazon product API — $0.003 per product

> Amazon product API: Full detail for a list of ASINs — price, rating, availability. $0.003 per delivered product, nothing delivered means nothing charged.

[Home](https://quanticdata.io/)/[Collectors](https://quanticdata.io/collectors/)/*Amazon product API*

# Amazon product API

An Amazon product API for a list of ASINs: title, brand, current and list price, rating, review count, availability, delivery promise, seller, image, breadcrumb categories and feature bullets. Pass ASINs or /dp/ URLs and get one row per product.

[Get my free API key](https://app.quanticdata.io/register) [See the request](/collectors/amazon-product-api/#integration)

$0.003 per delivered product · $2 free every month · Failed runs never billed

POST /v1/scraper/collectors/amazon_product/run

```
$ curl $QD/amazon_product/run \
    -H "Authorization: Bearer $QD_API_KEY" \
    -d '{"asins": ["B0DPHTLDYK", "B0DT1KPWHP"], "country": "us", "max_results": 10}'
{ "status": "done", "count": 10,
  "results": [
    {
      "asin": "…",
      "url": "…",
      "title": "…",
      "brand": "…" } ],
  "cost": 0.03 }
# 10 products × $0.003 · nothing delivered, nothing charged
```

**$0.003 / product**666 products on the free $2 every month

**Semantic input**asins, country, max_results — no URL lists

**Up to 50**products per run, pagination handled for you

**No browser**read over HTTP/TLS — cheaper and faster than rendering

On this page: [What it is](/collectors/amazon-product-api/#what) [Output fields](/collectors/amazon-product-api/#output) [Inputs](/collectors/amazon-product-api/#input) [Pricing](/collectors/amazon-product-api/#pricing) [Integration](/collectors/amazon-product-api/#integration) [Use cases](/collectors/amazon-product-api/#use-cases) [Versus the alternatives](/collectors/amazon-product-api/#compare) [FAQ](/collectors/amazon-product-api/#faq)

## What an Amazon product API does

A product page is where the commercial truth lives: whether the item is actually in stock, what the buy box says today, which category tree Amazon files it under. This collector fetches one page per ASIN through the same TLS tier as the search collector, with the same interstitial detection and retry.

Amazon runs several detail layouts. The fashion layout, for instance, has no byline, no feature bullets and no merchant block at all — so those fields come back null rather than being invented from a neighbouring element. ASINs that never return a product page are listed under `failed`: never billed, never turned into an empty row.

Input is meaning, not a URL *asins* *country* *max_results*

## What one product looks like

Every delivered product carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.

| Field | Type | What it holds |
| --- | --- | --- |
| `asin` | string | Amazon product id. |
| `url` | string | Clean product URL. |
| `title` | string | Product title. |
| `brand` | string · nullable | Brand when the layout exposes it. |
| `price` | string · nullable | Current price as shown. |
| `price_value` | number · nullable | Numeric current price. |
| `list_price` | string · nullable | List price when discounted. |
| `rating` | number · nullable | Star rating (1–5). |
| `reviews` | integer · nullable | Review count. |
| `availability` | string · nullable | Stock line ("In Stock"…). |
| `delivery` | string · nullable | Delivery promise. |
| `seller` | string · nullable | Seller/merchant when shown. |
| `image` | string · nullable | Main image URL. |
| `categories` | string[] | Breadcrumb trail. |
| `features` | string[] | Feature bullets (empty on layouts without them). |

## Inputs

The whole request. Anything you leave out falls back to the default shown in the catalog.

| Input | Type | Required | What it does |
| --- | --- | --- | --- |
| `asins` | array | yes | Amazon product ids or /dp/ URLs (one per line). |
| `country` | string | no | ISO 3166-1 alpha-2 code — picks the local site AND the proxy exit (default us). |
| `max_results` | integer | no | How many products to deliver at most (1–50). You pay only for delivered products. |

Pricing

## Amazon product API pricing

$0.003 per delivered product. A run that delivers nothing costs nothing: blocked pages, challenges and retries are on us, and the $2 monthly allowance covers about 666 products before you spend anything.

**$0.003**per delivered product*$3 per 1,000 delivered products*

**666 products**on the free allowance*$2 every month, no card*

**Zero rows**zero charge*blocks, captchas and retries are on us*

**−30%**on volume tiers*the catalog returns your key's price*

### Pay as you go

$0/mo

- $2 free credit / month

- 60 requests / min

- List unit prices

### Starter

$19/mo

- $15 free credit / month

- 300 requests / min

- 10% off unit prices

Most popular

### Growth

$79/mo

- $50 free credit / month

- 600 requests / min

- 20% off unit prices

### Scale

$299/mo

- $250 free credit / month

- 1,200 requests / min

- 30% off unit prices

Same wallet, same key and same $2 monthly allowance as every other [Data API](https://quanticdata.io/web-data-api-for-ai/). Prices are launch pricing read live from the billing config — `GET /v1/scraper/collectors` returns the price your key actually pays.

Integration

## One POST, typed rows

Base URL `https://api.quanticdata.io/v1`, Bearer auth, the same key as every other Data API. Endpoint: `POST /v1/scraper/collectors/amazon_product/run`.

```
curl -X POST https://api.quanticdata.io/v1/scraper/collectors/amazon_product/run \
  -H "Authorization: Bearer $QD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"asins":["B0DPHTLDYK","B0DT1KPWHP"],"country":"us","max_results":10}'
```

```
import requests

r = requests.post(
    "https://api.quanticdata.io/v1/scraper/collectors/amazon_product/run",
    headers={"Authorization": f"Bearer {QD_API_KEY}"},
    json={
        "asins": [
            "B0DPHTLDYK",
            "B0DT1KPWHP"
        ],
        "country": "us",
        "max_results": 10
    },
    timeout=120,
)
for row in r.json()["payload"]["results"]:
    print(row)
```

```
const res = await fetch(
  "https://api.quanticdata.io/v1/scraper/collectors/amazon_product/run",
  {
    method: "POST",
    headers: {
      Authorization: `Bearer ${process.env.QD_API_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({"asins":["B0DPHTLDYK","B0DT1KPWHP"],"country":"us","max_results":10}),
  },
);
const { payload } = await res.json();
console.table(payload.results);
```

```
claude mcp add quantumproxies \
  -e QUANTUMPROXIES_API_KEY=qd_live_your_key_here \
  -- npx -y quantumproxies-mcp

# then, in the chat:
> run the amazon_product collector with asins=["B0DPHTLDYK","B0DT1KPWHP"] and country="us"
```

## What people build with the Amazon product API

Three shapes of work this endpoint was designed around.

### Buy-box and stock monitoring

Re-run a list of ASINs on a schedule and record price, availability and delivery promise over time.

### Competitor teardown

Pull the full detail for a competitor's catalogue in one call per product.

### Catalogue enrichment

Fill your own PIM with Amazon's category path, rating and review count.

## Amazon product API versus rolling your own

The differences that actually cost time when you build this in-house.

|  | DIY scraper | This collector |
| --- | --- | --- |
| Input | A URL you must build correctly | ASIN, bare code or any /dp/ URL |
| Missing fields | Empty strings that look like data | Explicit nulls when the layout lacks them |
| Failed lookups | Silently dropped | Returned under failed, never billed |

## Catalogue attributes versus what the page says

The Product Advertising API returns Amazon's catalogue view of an item to an approved affiliate. This returns the detail page as rendered: the availability line, the delivery promise, the seller currently winning the listing, the struck-through price. Those are per-visitor, per-country rendering decisions, and they are what most price and availability work is actually measuring.

For a pipeline, the useful property is that failures are separated rather than smoothed. An ASIN that never resolves lands in `failed` instead of arriving as a row of nulls that quietly drags an average price down three weeks later.

## Limits, failure handling and the legal bit

Up to 50 ASINs per run; larger id lists are simply more runs, and because runs are independent they parallelise rather than queue. Unresolvable ASINs return under `failed` and are never billed. Throughput is your plan's rate limit rather than anything about the collector: 60 requests/minute on pay-as-you-go, up to 1,200 on the top tier.

Collecting publicly visible data is generally lawful in most jurisdictions, and courts have repeatedly declined to treat reading a public page as unauthorised access. Amazon's terms restrict automated access and the analysis differs by country. None of this is legal advice — get some for your actual use case.

## FAQ

Questions we get about the Amazon product API.

[Something else? Ask us →](mailto:hello@quanticdata.io)

### What do I pass — ASIN or URL?

Either. A bare ASIN, a lowercase one, or a full product URL: the collector extracts the code from /dp/, /gp/product/ and /gp/aw/d/ links and normalizes it.

### Why is brand sometimes null?

Because that layout does not publish it. Amazon serves different detail templates and the fashion one has no byline block; rather than scrape a nearby element that happens to look like a brand, the field stays null.

### How many ASINs per run?

Up to 50, fetched three at a time. Runs of ten or fewer return synchronously; larger ones return a run id you poll.

### Is there a free Amazon product API?

Every account gets $2 of credit every month with no card, which is about 666 delivered products on this endpoint at $0.003 each. It renews monthly, and a run that delivers nothing is never billed — so a failed or blocked attempt does not eat the allowance.

### How much does one run cost?

Multiply the rows you actually receive by $0.003. A run capped at 50 products — the maximum for this collector — costs $0.15 if every row comes back, and less when the source has fewer. Volume tiers take up to 30% off, and `GET /v1/scraper/collectors` returns the price your key actually pays.

### What happens to ASINs that no longer exist?

They come back under failed rather than as rows of nulls, and they are not billed. That separation matters in a pipeline: a delisted product is a finding, and it should not look identical to a fetch that broke.

### Can I pass product URLs instead of ASINs?

Yes. The array accepts bare ASINs or full /dp/ URLs and normalises both, so whatever form your catalogue already stores can go in without a cleanup step.

## Run the Amazon product API now

$2 of free credit every month, no card. Your key returns its own prices from `GET /v1/scraper/collectors`.

[Get my free API key](https://app.quanticdata.io/register)

Related: [All 32 collectors](https://quanticdata.io/collectors/) [Amazon scraper API](https://quanticdata.io/collectors/amazon-scraper-api/) [Google Shopping API](https://quanticdata.io/collectors/google-shopping-api/) [Price Comparison API](https://quanticdata.io/collectors/price-comparison-api/) [Documentation](https://quanticdata.io/docs/)

---

Source: https://quanticdata.io/collectors/amazon-product-api/ · Site index for AI: https://quanticdata.io/llms.txt
