---
title: "Amazon"
description: "Amazon on sixteen marketplaces, through the shared marketplace schema. Pick a marketplace with `region`; prices come back in its own currency."
---

## Operations

| Operation | Endpoint | Returns | Price |
|---|---|---|---|
| [Search](/docs/api-reference/amazon/search) | `GET \| POST /v1/amazon/search` | `SearchResult` | $0.001–$0.002 |
| [Image Search](/docs/api-reference/amazon/image-search) | `POST /v1/amazon/image-search` | `SearchResult` | $0.001–$0.002 |
| [Browse](/docs/api-reference/amazon/browse) | `GET \| POST /v1/amazon/browse` | `SearchResult` | $0.001–$0.002 |
| [Categories](/docs/api-reference/amazon/categories) | `GET \| POST /v1/amazon/categories` | `CategoryList` | $0.001 |
| [Product](/docs/api-reference/amazon/product) | `GET \| POST /v1/amazon/product` | `Product` | $0.002–$0.032 |

No `reviews`: Amazon reviews are not available.

## Marketplaces

| `region` | site | currency |
|---|---|---|
| `US` (default) | amazon.com | USD |
| `CA` | amazon.ca | CAD |
| `MX` | amazon.com.mx | MXN |
| `BR` | amazon.com.br | BRL |
| `FR` | amazon.fr | EUR |
| `IT` | amazon.it | EUR |
| `ES` | amazon.es | EUR |
| `NL` | amazon.nl | EUR |
| `SE` | amazon.se | SEK |
| `TR` | amazon.com.tr | TRY |
| `AE` | amazon.ae | AED |
| `SA` | amazon.sa | SAR |
| `IN` | amazon.in | INR |
| `JP` | amazon.co.jp | JPY |
| `SG` | amazon.sg | SGD |
| `AU` | amazon.com.au | AUD |

Every operation works on every marketplace, with three differences worth knowing:

- **Language.** Text fields (titles, delivery and stock lines) come back in English wherever the site
  offers it. amazon.com.mx, amazon.com.br and amazon.com.tr serve only Spanish, Portuguese and Turkish,
  so their text fields arrive in that language; prices, ratings, review counts and free-delivery flags
  are normalized the same as everywhere else.
- **amazon.fr** does not accept `ratingMin`, `brands`, `facets` or `include=facets` (a 400 names the
  parameter), and its `browse` results carry no `facets`.
- **Category ids are per marketplace.** A browse node from `categories` on one marketplace means nothing
  on another; walk `categories` with the same `region` you browse with.

The fill rates below were measured on amazon.com.

## What Actually Arrives

The schema says these are optional. Here is how often Amazon fills them:

**search items**

| Field | Fill |
|---|---|
| `title` `url` | ~99% |
| `imageUrl` | ~98% |
| `price` | ~90% |
| `rating.average` `rating.count` | ~90% |
| `delivery` | ~80% |
| `shippingOptions` (the second, faster option) | ~70% |
| `salesLabel` | ~50% |

**product**

| Field | Fill |
|---|---|
| `title` | 100% |
| `media.images` | ~95% |
| `brand` `rating.average` `rating.distribution` `features` `description` `attributes` `reviews` | ~90% |
| `price` `status` `seller.name` | ~85% |
| `category` `delivery` `groupId` `offers` | ~80% |
| `reviewSummary` `returnsPolicy` | ~70% |
| `reviewAspects` `brandUrl` | ~60% |

Amazon is the richest of the marketplaces on the detail view — `reviewSummary`, `reviewAspects`,
`rating.distribution` and `offers` arrive here and mostly nowhere else. `price` is not 100% because a
listing can genuinely have no current offer; that is an absent `price`, never a zero.

## Things Specific to Amazon

**Variants are separately fetchable.** Each colour or size is its own ASIN, so every `variant` carries a
`productId` you can pass back to `product`, and `groupId` names the family. Shopify and Walmart work the
other way.

**A rating may describe the family, not the variant.** Every sibling of a variation family reports the
same aggregate — measured, 62 variants of one shirt all reporting 4.6 / 334,685. Where that is detected
the response sets `rating.grouped: true`.

**Brand-store pages carry no category.** Apple and Amazon-device pages have no breadcrumb and no Best
Sellers Rank, so `category` is legitimately `[]` rather than missing.
