Kroger API endpoint
Returns one page of a Kroger product's customer reviews -- review text, star rating, recommendation flag, helpful-vote counts, and customer photo URLs -- alongside the product's full star histogram. Customer display names are deliberately not returned.
/kroger/product/reviewsReturns one page of a Kroger product's customer reviews, sourced from Kroger's own reviews API, alongside the product's full star histogram.
Query parameters:
upc (required) — the Kroger product id whose reviews to return, the same
id returned by /kroger/search's products[].upc.page (optional) — one-based review page, default 1.page_size (optional) — reviews per page, 1-100, default 16
(matching what Kroger's own product page requests). Values above 100 are
capped rather than rejected.Notable response behavior:
rating is the whole product's star histogram, not just the current
page's — it stays constant across pages.photos carries customer-submitted review images, one entry per available
size.reviews list with
total_count: 0 — a success, not an error.| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| id | 40 | |
| rating | 40 | 1 to 5, median 5 |
| title | 40 | |
| text | 40 | median 442 characters |
| submitted_at | 40 | 2026-02-12 to 2026-09-07 |
| recommended | 40 | true in 0 of 40 |
| featured | 40 | true in 0 of 40 |
| ratings_only | 40 | true in 0 of 40 |
| helpful_vote_count | 40 | 0 |
| not_helpful_vote_count | 40 | 0 |
| photos | 22 | median 3 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| upc | string | Yes | Kroger product UPC/id | 0007120200411 | |
| page | integer | No | One-based review page Minimum: 1. | ||
| page_size | integer | No | Reviews per page, 1-100 Minimum: 1. Maximum: 100. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/kroger/product/reviews?upc=0007120200411&page=1" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"upc": "0007120200411",
"page": 1,
"page_size": 16,
"average_rating": 4.64,
"total_count": 293,
"rating": {
"average": 4.64,
"count": 293,
"five_stars": 225,
"four_stars": 47,
"three_stars": 0,
"two_stars": 0,
"one_star": 7
},
"reviews": [
{
"id": "25562ac4-cf25-5ea3-a77c-461c4269540e",
"rating": 4,
"text": "I really enjoyed this product! The flavor is vibrant and tropical.",
"submitted_at": "2025-02-05T17:30:35.000Z",
"recommended": false,
"featured": false,
"ratings_only": false,
"helpful_vote_count": 0,
"not_helpful_vote_count": 0,
"photos": [
{
"url": "https://photos-us.bazaarvoice.com/photo/2/…",
"size": "medium"
}
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/kroger.reviewsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | kroger.ReviewsResponse | No | ||||
| data.average_rating | number | No | ||||
| data.page | integer | No | ||||
| data.page_size | integer | No | ||||
| data.rating | kroger.ProductRating | No | ||||
| data.rating.average | number | No | ||||
| data.rating.count | integer | No | ||||
| data.rating.five_stars | integer | No | ||||
| data.rating.four_stars | integer | No | ||||
| data.rating.one_star | integer | No | ||||
| data.rating.three_stars | integer | No | ||||
| data.rating.two_stars | integer | No | ||||
| data.reviews | array | No | ||||
| data.reviews[].featured | boolean | No | ||||
| data.reviews[].helpful_vote_count | integer | No | ||||
| data.reviews[].id | string | No | ||||
| data.reviews[].not_helpful_vote_count | integer | No | ||||
| data.reviews[].photos | array | No | ||||
| data.reviews[].photos[].size | string | No | ||||
| data.reviews[].photos[].url | string | No | ||||
| data.reviews[].rating | integer | No | ||||
| data.reviews[].ratings_only | boolean | No | ||||
| data.reviews[].recommended | boolean | No | ||||
| data.reviews[].submitted_at | string | No | ||||
| data.reviews[].text | string | No | ||||
| data.reviews[].title | string | No | ||||
| data.total_count | integer | No | ||||
| data.upc | string | 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/kroger/product/reviews?upc=0007120200411&page=1" \
-H "x-api-key: $CRAWLORA_API_KEY"