Shopify Store API — Product Reviews as JSON
Documentation menu
FetchLayer FetchLayer API

Get a product's reviews

Read one product's customer reviews from the store's review service: the average rating, review count and star distribution, then each review with its rating, title, text, author, verified-buyer flag, country, date, photos and videos, the merchant's reply and helpful votes. Filter to one star rating, sort, and page with a cursor. The services publish different fields, and anything a service leaves out comes back null: Loox has no titles, votes, countries or reply dates, Judge.me has no reply dates, and Okendo has no reviewer country. A missing product is a 404, and so is a product no supported service has reviews for.

POST /product-reviews Reviews
https://api.fetchlayer.dev/shopify-stores/product-reviews
OpenAPI JSON

Headers

Authorization string required

Bearer token — your FetchLayer API key.

Parameters

store string required

Store domain, or any URL on the store — for example example.com, https://example.com/products/foo, or a myshopify.com domain.

product string required

The product's handle, its URL, or its numeric id.

provider string optional

judgeme, yotpo, loox, okendo, stamped or reviewsio. Omit to use whichever service the store has. Naming one the store does not use is a 404; naming one it uses that has no reviews is a 200 with an empty list and a note.

limit number optional

Maximum reviews returned (max 500). (default: 20)

cursor string optional

Resume from a previous response's nextCursor. Send the same other parameters with it: a cursor replayed with different ones is a 400.

sort string optional

newest, highest, lowest or helpful. (default: newest)

rating number optional

Only reviews with this star rating, 1 to 5.

format string optional

json or markdown. Markdown returns the same result rendered for a model to read. (default: json)

timeoutMs number optional

Per-request time limit in milliseconds (max 120000).

Response Fields

product-reviews

Get a product's reviews

product object

The product the reviews belong to: id, handle, title and url.

store string

The store domain the reviews were read for.

provider string

The review service that answered: judgeme, yotpo, loox, okendo, stamped or reviewsio.

summary.averageRating number

Average star rating, or null when the service does not publish one.

summary.reviewCount number

Total reviews the service reports, not just the ones in this response.

summary.ratingDistribution object

Review count per star, keyed "1" to "5", or null when the service does not publish it.

reviews object[]

The reviews, in the requested sort order.

reviews[].id string

The review's id on its service.

reviews[].rating number

Star rating, 1 to 5.

reviews[].title string

Review headline, or null. Loox reviews have none.

reviews[].body string

Review text.

reviews[].author object

name, verified (a confirmed buyer) and country, each null when the service does not say. Loox and Okendo publish no country.

reviews[].createdAt string

When the review was written, as an ISO timestamp, or null.

reviews[].product object

The product the review was left on (id, handle, title), or null when unknown.

reviews[].media object[]

Customer photos and videos, each with type and url.

reviews[].reply object

The merchant's public reply (body, createdAt), or null. Loox and Judge.me publish no reply date.

reviews[].helpful object

Helpful votes as up and down, or null when the service has no votes (Loox).

reviews[].sourceUrl string

The page the review appears on, or null.

nextCursor string

Pass back as cursor to continue, or null when there are no more reviews.

pagesScraped number

Pages of reviews returned: the review count divided by the page size the service uses, rounded up, minimum 1. Rating-breakdown lookups, detection probes and retries are not counted. Each page counts as one request against your plan.

notes string[]

Caveats about this result, such as a named service that has no reviews. Read it before treating a result as complete.

Request

curl -X POST "https://api.fetchlayer.dev/shopify-stores/product-reviews" \
  -H "Authorization: Bearer ss-your-key" \
  -H "Content-Type: application/json" \
  -d '{"store":"beardbrand.com","product":"fox-hunt-mens-cologne","limit":20}'

Response

{
  "store": "www.beardbrand.com",
  "product": {
    "id": "15133252583794",
    "handle": "fox-hunt-mens-cologne",
    "title": "Fox Hunt Men's Cologne",
    "url": "https://www.beardbrand.com/products/fox-hunt-mens-cologne"
  },
  "provider": "judgeme",
  "summary": {
    "averageRating": 4.9,
    "reviewCount": 20,
    "ratingDistribution": {
      "1": 0,
      "2": 0,
      "3": 1,
      "4": 0,
      "5": 19
    }
  },
  "reviews": [
    {
      "id": "f4335734-1c15-4ba4-b3d7-b5edf6ca2a5a",
      "provider": "judgeme",
      "rating": 5,
      "title": "The thrill of the hunt",
      "body": "Fox Hunt is my new favorite from BeardBrand, hands down.",
      "author": {
        "name": "Jon B.",
        "verified": true,
        "country": "US"
      },
      "createdAt": "2026-09-11T16:19:08.000Z",
      "product": {
        "id": "15133252583794",
        "handle": "fox-hunt-mens-cologne",
        "title": "Fox Hunt Men's Cologne"
      },
      "media": [],
      "reply": null,
      "helpful": {
        "up": 0,
        "down": 0
      },
      "sourceUrl": "https://www.beardbrand.com/products/fox-hunt-mens-cologne"
    }
  ],
  "nextCursor": null,
  "pagesScraped": 1,
  "notes": []
}