Reviews
从店铺所用的评价应用获取 Shopify 商品的评价。
GET | POST /v1/shopify/reviews参数可以用 GET 的查询字符串发送,也可以用 POST 的 JSON 请求体发送,两者等价。
请求
curl "https://gateway.apinoa.com/v1/shopify/reviews?id=www.orthofeet.com%2Fcoral-black" \
-H "x-api-key: $APINOA_API_KEY"参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
id | string | 是 | 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. |
这些参数及所有响应类型也写在OpenAPI 文档中。
响应
在 data 中返回 ReviewPage。 真实响应的节选:数组只保留前几项,长文本已截断。
{
"success": true,
"data": {
"marketplace": "shopify",
"productId": "www.orthofeet.com/coral-black",
"page": {
"index": 1,
"size": 30,
"total": 990
},
"reviews": [
{
"id": "df4c25ec-c5c8-41e5-8fd2-8c72cec3ab88",
"author": "Karen Michel",
"rating": 3,
"title": "Not as expected",
"body": "I needed good shoes to take on a tour in italy. I used these shoes thinking they would support my feet. But they did no…",
"date": "2026-10-24T15:13:07.824Z",
"verified": true,
"helpfulCount": 0,
"variant": "Coral - Beige Leopard",
"images": []
},
{
"id": "0788f651-a9a4-4c14-9c4d-25ca08b88951",
"author": "Anna Prigozhin",
"rating": 5,
"body": "Coral - White",
"date": "2026-10-24T15:05:48.452Z",
"verified": true,
"helpfulCount": 0,
"variant": "Coral - White",
"images": []
}
],
"summary": {
"average": 4.1,
"count": 38998,
"distribution": {
"1": 11,
"2": 6,
"3": 9,
"4": 10,
"5": 64
}
},
"grouped": true,
"cursor": "eyJhIjoianVkZ2VtZSIsImkiOnsibXlzaG9waWZ5Ijoib3J0aG9mZWV0Lm15c2hvcGlmeS5jb20iLCJwcm9kdWN0SWQiOiI2NzAyNDYxNzQ4OCJ9LCJjIjo…"
}
}错误
| 状态 | 代码 | 含义 |
|---|---|---|
| 400 | INVALID_CURSOR | 该 cursor 不是本操作返回的。请不带它重新开始。 |
| 400 | INVALID_PARAMS | 参数缺失、未知或超出范围。消息中会指出是哪一个。 |
| 401 | UNAUTHORIZED | 缺少 x-api-key 请求头,或密钥已吊销或未知。 |
| 402 | INSUFFICIENT_BALANCE | 余额不足以支付本次调用。请在控制台充值。 |
| 429 | MARKETPLACE_SATURATED | 并发调用过多。请等待 Retry-After 秒后重试。 |
| 501 | REVIEWS_UNREACHABLE | 该店铺展示了评价,但无法读取任何一条。 |
| 501 | REVIEW_APP_UNSUPPORTED | 该店铺的评价来自本 API 尚未支持读取的应用。 |
| 502 | UPSTREAM_ERROR | 平台返回了无法使用的内容。请退避后重试。 |
全部错误代码见 Errors。失败的调用不计费。
价格
价格 每次调用 $0.001,每多一次调用加 $0.001——最多再加 6 次,合计最多 $0.007。第一页通常比基础价多一个单位;cursor 页只收基础价。标价;单日调用超过 1,000 次后单价下调。
说明
- 使用
cursor获取下一页。 并非每个店铺都支持page;cursor始终可用。第一页通常比基础价格多一个单位;cursor页只计基础价格。 - 没有评价也是一种答案。 没有评价的商品返回
200,并带有reviews: []和page.total: 0,且只有在确实为零时才会返回零。只有星级没有文字的评分计为零条评价。 - 501 表示评价存在但无法读取——刻意不使用 404,也不返回空列表。
- 评价常常是分组的。 店铺可能对某个颜色的页面返回整个商品系列的评价。计算单个商品的评分前,请检查
grouped。