J.Crew API endpoint
Returns one page of a product's customer reviews (author, location, date, rating, headline, body, and verified-purchase flag), plus the product's overall rating summary (average rating, rating count, per-star histogram, and recommended ratio). pid is a style id (e.g. CX415), as returned by jcrew-search's products[].id field. site must match the storefront the pid belongs to (default jcrew). A product with no reviews yet, or a well-formed but unrecognized pid, returns a well-formed empty result, not an error.
/jcrew/product/reviewspid is required and must be a style id (e.g. CX415), as returned by jcrew-search's products[].id field. site selects the storefront the pid belongs to and accepts jcrew or factory; defaults to jcrew -- site must match the storefront the pid was found under, since each storefront has its own independent Bazaarvoice deployment. page is a one-based page number, 10 reviews per page; defaults to 1.
Notable response behavior:
pid, returns a well-formed empty result (total_reviews: 0, reviews: []), not an error.rating_histogram is the count of ratings per star, ascending: index 0 is 1-star, index 4 is 5-star. It is omitted along with rating_count/average_rating/recommended_ratio when the product has no reviews at all.total_reviews/total_pages describe the full review set, independent of how many reviews are returned on this page.pid that doesn't match the required shape (letters followed by digits) returns 400 before any upstream request is made.| Field | Filled in, of 10 checked | Values in the sample |
|---|---|---|
| id | 10 | |
| rating | 10 | 5 |
| headline | 10 | |
| body | 10 | median 123 characters |
| author | 10 | |
| verified_purchase | 10 | true in 0 of 10 |
| created_at | 10 | 2026-09-21 to 2026-10-11 |
| updated_at | 10 | 2026-09-21 to 2026-10-11 |
| location | 7 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| pid | string | Yes | Style id, from a search result's id field | CX415 | |
| site | string | No | Storefront the pid belongs to Allowed values: jcrew, factory. | ||
| page | integer | No | One-based page, 10 reviews per page Minimum: 1. Maximum: 1000. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/jcrew/product/reviews?pid=CX415&site=jcrew&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"pid": "CI906",
"site": "jcrew",
"page": 1,
"page_size": 10,
"total_pages": 11,
"total_reviews": 105,
"rating_count": 105,
"average_rating": 4.752380952380952,
"rating_histogram": [
0,
2,
1,
18,
84
],
"count": 1,
"reviews": [
{
"id": "278912347",
"rating": 5,
"headline": "Unique Dress",
"body": "The color and style of the dress is very unique. The material is great quality...",
"author": "Seasun",
"location": "Miami, FL",
"verified_purchase": false,
"created_at": "2026-08-14T15:07:23Z",
"updated_at": "2026-08-14T15:31:00Z"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/jcrew.productReviewsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | jcrew.ProductReviewsResponse | No | ||||
| data.average_rating | number | No | ||||
| data.count | integer | No | ||||
| data.fetched_at | string | No | ||||
| data.page | integer | No | ||||
| data.page_size | integer | No | ||||
| data.pid | string | No | ||||
| data.rating_count | integer | No | ||||
| data.rating_histogram | array | No | RatingHistogram is the count of ratings per star, ascending: index 0 is 1-star, index 4 is 5-star. | |||
| data.recommended_ratio | number | No | ||||
| data.reviews | array | No | ||||
| data.reviews[].author | string | No | ||||
| data.reviews[].body | string | No | ||||
| data.reviews[].created_at | string | No | ||||
| data.reviews[].headline | string | No | ||||
| data.reviews[].helpful_votes | integer | No | ||||
| data.reviews[].id | string | No | ||||
| data.reviews[].location | string | No | ||||
| data.reviews[].not_helpful_votes | integer | No | ||||
| data.reviews[].rating | integer | No | ||||
| data.reviews[].updated_at | string | No | ||||
| data.reviews[].verified_purchase | boolean | No | ||||
| data.site | string | No | ||||
| data.source_url | string | No | ||||
| data.total_pages | integer | No | ||||
| data.total_reviews | integer | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/jcrew/product/reviews?pid=CX415&site=jcrew&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"