---
title: "Reviews"
description: "Shopify reviews — accepted parameters and what comes back."
---

```
GET|POST /v1/shopify/reviews
```

**Price** $0.001 per call, plus $0.001 for each extra call it makes — at most 6 more, so $0.007 in total. A first page normally costs one unit more than the base. A `cursor` page costs only the base. [List price](https://apinoa.com/en/pricing); the rate steps down above 1,000 calls a day.

| Parameter | Type | Required | Notes |
|---|---|---|---|
| `id` | string | yes | The composite Shopify `shop/handle` — the same id `product` takes, not a global identifier. This is the one Shopify operation whose cost varies: a first page can cost more than 1, while a page fetched with `cursor` costs 1. |
| `cursor` | string |  | Opaque cursor from the previous response; the only paging knob that works on every shop, and it wins if `page` is sent too. A page fetched with a cursor costs 1. |
| `page` | integer |  | 1-based starting page. Not every shop supports jumping to a page number; `cursor` works on every shop, so prefer it for paging. |

A reviews call can cost more than one unit; the range is shown above. Shops differ in how their
reviews are served, and that shows in a few ways:

- **Use `cursor`.** `page` is not supported on every shop; `cursor` always works.
- **No reviews is an answer, and it says zero.** A product with no reviews returns `200` with
  `reviews: []` and **`page.total: 0`**. This is common on Shopify — most products have none — and the
  zero is only sent when that is really the case.
- **Star ratings without text count as zero reviews.** Some shops hold star-only ratings separately
  from written reviews. A product with three star ratings and no text answers `total: 0` —
  there is no review to return — even though its page may show stars.
- **A 501 means the reviews exist but are not available.** `REVIEW_APP_UNSUPPORTED` — this shop's
  reviews are not available. `REVIEWS_UNREACHABLE` — a review count or an average is reported, or the
  page shows reviews, but none came back. Both are deliberately not a zero and not a 404: the reviews
  exist.

Reviews are frequently **grouped**: a merchant can answer one colour's page with the whole family's rows.
Check `grouped` on the response before computing a per-product rating.
