---
title: "Categories"
description: "Amazon categories — accepted parameters and what comes back."
---

```
GET|POST /v1/amazon/categories
```

**Price** $0.001 per call. [List price](https://apinoa.com/en/pricing); the rate steps down above 1,000 calls a day.

| Parameter | Type | Required | Notes |
|---|---|---|---|
| `categoryId` | string |  | Omit for the 40 departments; give a browse node (`172541`) or a department slug (`electronics`) to list that category's children. This is the one endpoint that takes either kind of id. |
| `region` | string |  | Buyer country as ISO 3166-1 alpha-2; sets availability, shipping and price. |

The sub-categories under a browse node.

```bash
# the departments
curl "https://gateway.apinoa.com/v1/amazon/categories" -H "x-api-key: YOUR_API_KEY"
# what is under Electronics
curl "https://gateway.apinoa.com/v1/amazon/categories?categoryId=electronics" -H "x-api-key: YOUR_API_KEY"
```

**Amazon uses two kinds of id, and this is the one endpoint that takes both.** A department is
identified by a store slug (`electronics`, `baby-products`) -- Amazon publishes no node id for a
department anywhere. Everything below it is an ordinary browse node (`172541`).

That is why departments come back with `"browsable": false`: `browse` needs a node, so a slug would
answer 200 and list nothing. Descend one level with `categories` and you have ids `browse` accepts.

The response carries `path` (the ancestor chain, leaf last) and `categories`.

One caveat worth knowing: below the departments, `browsable` is **not** reported, so it defaults to
"yes" -- and a minority of nodes list nothing (Camera & Photo is one).
