---
title: "Product"
description: "Get one Amazon product by ASIN: price, variants, images, specifications, delivery and the competing-offer summary."
---

> Every apinoa docs page as markdown: https://apinoa.com/llms.txt (all in one file: https://apinoa.com/llms-full.txt; this API family in one file: https://apinoa.com/docs/marketplace/llms.txt)

```http
GET | POST /v1/amazon/product
```

Send parameters as a query string with `GET`, or as a JSON body with `POST`. Both are equivalent.

## Request

```bash tab="cURL"
curl "https://gateway.apinoa.com/v1/amazon/product?id=B07F3FFTMK" \
  -H "x-api-key: $APINOA_API_KEY"
```

```js tab="JavaScript"
const params = new URLSearchParams({ id: "B07F3FFTMK" });
const res = await fetch(`https://gateway.apinoa.com/v1/amazon/product?${params}`, {
  headers: { "x-api-key": process.env.APINOA_API_KEY },
});
const { success, data, error } = await res.json();
```

```python tab="Python"
import os

import requests

res = requests.get(
    "https://gateway.apinoa.com/v1/amazon/product",
    params={"id": "B07F3FFTMK"},
    headers={"x-api-key": os.environ["APINOA_API_KEY"]},
)
body = res.json()
```

## Parameters

| Parameter | Type | Required | Notes |
|---|---|---|---|
| `id` | string | yes | The marketplace's own product id, as carried by a search item. |
| `include` | string |  | `offers` · `offers:5` · `offers:all` — the enumerated competing-seller offers, which are fetched separately and so opt-in. Depth counts pages of offers (10 offers each) and each page is charged; `all` walks to the end, capped at 30 pages. |
| `region` | enum |  | Which Amazon marketplace to query, by buyer country: US, CA, MX, BR, FR, IT, ES, NL, SE, TR, AE, SA, IN, JP, SG, AU. Defaults to US. Prices come back in that marketplace's own currency (JP in JPY, FR in EUR). `US` `CA` `MX` `BR` `FR` `IT` `ES` `NL` `SE` `TR` `AE` `SA` `IN` `JP` `SG` `AU` |

The same parameters, and every response type, are in the OpenAPI document: https://apinoa.com/openapi.json

## Response

Returns [`Product`](/docs/api-reference/marketplaces/response-schema#searchitem-and-product) in `data`. A real response, shortened: arrays keep their first entries and long text is cut.

```json
{
  "success": true,
  "data": {
    "marketplace": "amazon",
    "id": "B07F3FFTMK",
    "url": "https://www.amazon.com/dp/B07F3FFTMK",
    "title": "Mens Merino Wool Crew Socks Thermal and Warm Sock…",
    "groupId": "B0BGFR76CF",
    "deliveryTo": {
      "label": "Edison 08817",
      "country": "US",
      "postalCode": "08817"
    },
    "features": [
      "MAKE HIKING A COMFORTABLE EXPERIENCE These Merino…"
    ],
    "brand": "Alvada",
    "status": "In Stock",
    "inStock": true,
    "unitPrice": {
      "price": {
        "currency": "USD",
        "amount": 4.5
      },
      "unit": "count"
    },
    "reviewAspects": [
      {
        "name": "quality",
        "mentions": 4534,
        "positive": 3976,
        "negative": 558
      }
    ],
    "boxContents": [],
    "returnsPolicy": "FREE 30-day refund/replacement",
    "brandUrl": "https://www.amazon.com/stores/Alvada/page/C127B0C…",
    "promotions": [],
    "fulfilledBy": "Amazon",
    "delivery": {
      "estimate": "FREE delivery Thursday, October 29 on orders ship…",
      "free": true,
      "minimumOrder": {
        "currency": "USD",
        "amount": 35
      },
      "condition": "on orders shipped by Amazon over $35",
      "minDays": 5,
      "maxDays": 5
    },
    "shippingOptions": [
      {
        "estimate": "FREE delivery Thursday, October 29 on orders ship…",
        "free": true,
        "minimumOrder": {
          "currency": "USD",
          "amount": 35
        },
        "condition": "on orders shipped by Amazon over $35",
        "minDays": 5,
        "maxDays": 5
      }
    ],
    "badges": [
      "Amazon's Choice"
    ],
    "salesLabel": "10K+ bought in past month",
    "salesCount": 10000,
    "media": {
      "images": [
        "https://m.media-amazon.com/images/I/91aOC3G1W6L._…"
      ],
      "videos": [
        {
          "url": "https://m.media-amazon.com/images/S/vse-vms-trans…",
          "thumbnailUrl": "https://m.media-amazon.com/images/I/A16M+pgi4GL.S…",
          "title": "Alvada wool socks: exceptional warmth and quality…",
          "duration": "00:14"
        }
      ]
    },
    "price": {
      "currency": "USD",
      "amount": 13.49
    },
    "listPrice": {
      "currency": "USD",
      "amount": 14.99
    },
    "rating": {
      "average": 4.5,
      "count": 37581,
      "grouped": true,
      "distribution": {
        "1": 4,
        "2": 2,
        "3": 5,
        "4": 11,
        "5": 78
      }
    },
    "category": [
      {
        "id": "7141123011",
        "name": "Clothing, Shoes & Jewelry"
      }
    ],
    "seller": {
      "name": "Alvada",
      "id": "A12H3CME8AOYX8",
      "url": "https://www.amazon.com/gp/help/seller/at-a-glance…"
    },
    "attributes": [
      {
        "name": "Fabric type",
        "value": "80% Merino Wool, 15% Polyester, 4% Nylon, 1% Span…"
      }
    ],
    "options": [
      {
        "id": "size_name",
        "name": "Size",
        "values": [
          {
            "id": "size_name:Small-Medium",
            "name": "Small-Medium"
          }
        ]
      }
    ],
    "variants": [
      {
        "id": "B0GKGJZ323",
        "productId": "B0GKGJZ323",
        "selections": [
          {
            "optionId": "size_name",
            "valueId": "size_name:Medium-Large",
            "optionName": "Size",
            "valueName": "Medium-Large"
          }
        ]
      }
    ],
    "offers": [
      {
        "price": {
          "currency": "USD",
          "amount": 13.49
        },
        "listPrice": {
          "currency": "USD",
          "amount": 14.99
        },
        "seller": {
          "name": "Alvada",
          "id": "A12H3CME8AOYX8",
          "url": "https://www.amazon.com/gp/help/seller/at-a-glance…"
        },
        "fulfilledBy": "Amazon",
        "status": "In Stock",
        "inStock": true,
        "delivery": {
          "estimate": "FREE delivery Thursday, October 29 on orders ship…",
          "free": true,
          "minimumOrder": {
            "currency": "USD",
            "amount": 35
          },
          "condition": "on orders shipped by Amazon over $35",
          "minDays": 5,
          "maxDays": 5
        }
      }
    ],
    "reviews": [],
    "identifiers": {
      "gtin": "753610373339",
      "mpn": "43528-95629",
      "model": "Merino Wool Socks"
    },
    "reviewSummary": "Customers find these wool socks to be of good qua…",
    "listedAt": "2022-08-10"
  }
}
```

## Errors

| Status | Code | Meaning |
|---|---|---|
| 400 | `INVALID_PARAMS` | A parameter is missing, unknown or out of range. The message names it. |
| 401 | `UNAUTHORIZED` | The `x-api-key` header is missing, or the key is revoked or unknown. |
| 402 | `INSUFFICIENT_BALANCE` | The balance does not cover this call. Top up in the dashboard. |
| 404 | `PRODUCT_NOT_FOUND` | The marketplace has no such product. |
| 429 | `MARKETPLACE_SATURATED` | Too many concurrent calls. Retry after the `Retry-After` seconds. |
| 502 | `UPSTREAM_ERROR` | The platform answered with something unusable. Retry with backoff. |

Every code is listed in [Errors](/docs/errors). Failed calls are not billed.

## Pricing

**Price** $0.002 per call, plus $0.001 for each extra call it makes — at most 30 more, so $0.032 in total. Only `include=offers` adds them: one unit per page of ten offers, up to 30 pages. [List price](https://apinoa.com/en/pricing); the rate steps down above 1,000 calls a day.

## Notes

- **A search item's `id` is the ASIN**, so search chains straight into product. Pass the same `region` you searched with: an ASIN is looked up on that marketplace, in its currency.
- **`include=offers` lists competing sellers.** The product always carries a roll-up (`offersSummary`, e.g. "New & Used (305) from $2.07"). The full list is opt-in and billed per page of ten offers, up to 30 pages:

| `include` | Price |
|---|---|
| omitted | $0.002 |
| `offers` | $0.003 |
| `offers:5` | up to $0.007 |
| `offers:all` | up to $0.032 (30 pages) |

  A deeper request is clamped, not refused. The response's `ext.included` says which expansions were actually fetched.
