Old Navy API endpoint
Returns one page of a product's customer reviews (author, 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 color-specific product id, as returned by oldnavy-search's product colors[].id field (not the bare base product id) -- the same pid oldnavy-product accepts. Select the storefront with the brand parameter (`on` for Old Navy, `gap` for Gap, `br` for Banana Republic, `at` for Athleta; defaults to `on`) -- it must match the brand the pid was found under. A product with no reviews yet returns a well-formed empty result, not an error.
/oldnavy/product/reviewsNotable response behavior:
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 returns 404.pid returns 400 before any upstream request is made.| Field | Filled in, of 10 checked | Values in the sample |
|---|---|---|
| id | 10 | |
| rating | 10 | 1 to 5, median 4 |
| headline | 10 | |
| body | 10 | |
| author | 10 | |
| verified_purchase | 10 | true in 0 of 10 |
| created_at | 10 | 2026-09-26 to 2026-10-13 |
| updated_at | 10 | 2026-09-28 to 2026-10-13 |
| helpful_votes | 3 | 1 to 9, median 2 |
| not_helpful_votes | 2 | 1 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| pid | string | Yes | Color-specific product id, from a search result's colors[].id field | 907290012 | |
| brand | string | No | Storefront the pid belongs to Allowed values: on, gap, br, at. | ||
| 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/oldnavy/product/reviews?pid=907290012&brand=on&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"pid": "788099002",
"brand": "on",
"page": 1,
"page_size": 10,
"total_pages": 386,
"total_reviews": 3856,
"rating_count": 3856,
"average_rating": 4.6154045643153525,
"recommended_ratio": 1,
"rating_histogram": [
122,
62,
183,
443,
3046
],
"count": 1,
"reviews": [
{
"id": "270852250",
"rating": 1,
"headline": "Too large",
"body": "I normally wear a size 4, I ordered these online and the waist band is huge!...",
"author": "Sadie, P",
"location": "Undisclosed",
"verified_purchase": false,
"helpful_votes": 0,
"not_helpful_votes": 0,
"created_at": "2026-08-18T08:43:32Z",
"updated_at": "2026-08-18T10:16:20Z"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/oldnavy.productReviewsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | oldnavy.ProductReviewsResponse | No | ||||
| data.average_rating | number | No | ||||
| data.brand | string | 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.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 |
| 404 | Not Found | #/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/oldnavy/product/reviews?pid=907290012&brand=on&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"