Browse
List the products in one Amazon category, with no keyword.
GET | POST /v1/amazon/browseSend parameters as a query string with GET, or as a JSON body with POST. Both are equivalent.
Request
curl "https://gateway.apinoa.com/v1/amazon/browse?categoryId=679416011&priceMax=50&sort=price_asc" \
-H "x-api-key: $APINOA_API_KEY"Parameters
| Parameter | Type | Required | Notes |
|---|---|---|---|
categoryId | string | yes | REQUIRED. An Amazon browse NODE — the digits from a category URL, e.g. 172541. The department slugs categories returns at its root (electronics) are NOT browse nodes and are refused with CATEGORY_NOT_BROWSABLE: call categories with the slug to get its child nodes and browse one of those. |
brands | string list | Brand names as Amazon spells them, e.g. brands=Nike,Adidas. A call that uses brands costs 2 units instead of 1. Not available on amazon.fr (region=FR). | |
facets | string | object list | Narrowings taken from a result's facets, e.g. facets=Color:Black. A call that uses facets costs 2 units instead of 1. Not available on amazon.fr (region=FR). | |
page | integer | 1-based page number; each page is charged separately. There is no pageSize (Amazon fixes the count per page, 13-47 in practice) and no cursor — paging is by number. | |
priceMax | number ≥ 0 | Highest price to return, in decimal major units. | |
priceMin | number ≥ 0 | Lowest price to return, in decimal major units. | |
ratingMin | number | 4 only. Amazon's rating filter offers exactly one threshold, "4 Stars & Up"; any other value is a 400 rather than a silently different search. Not available on amazon.fr (region=FR). | |
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 | |
sort | enum | Result ordering: best_match, price_asc, price_desc, newly_listed or avg_review. Defaults to best_match, Amazon's own relevance ordering. best_match price_asc price_desc newly_listed avg_review |
The same parameters, and every response type, are in the OpenAPI document.
Response
Returns SearchResult in data. A real response, shortened: arrays keep their first entries and long text is cut.
{
"success": true,
"data": {
"marketplace": "amazon",
"page": {
"index": 1,
"size": 0
},
"items": [],
"facets": []
}
}Errors
| Status | Code | Meaning |
|---|---|---|
| 400 | CATEGORY_NOT_BROWSABLE | The category is a navigation level with no products. Browse one of its children from categories. |
| 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. |
| 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. Failed calls are not billed.
Pricing
Price $0.001 per call, plus $0.001 for each extra call it makes — at most 1 more, so $0.002 in total. Only brands and rail facets add one: either makes the call 2 units. Every other filter costs nothing extra. List price; the rate steps down above 1,000 calls a day.
Notes
- Same filters as
search, minus the keyword. Aqueryis a 400, not silently dropped. Use Search when you have words. categoryIdis a browse node (679416011). Get one from Categories; every node below department level lists products.- The response has no
querykey and otherwise looks exactly like a search response.