Kroger API endpoint
Returns full detail for up to 50 Kroger products in one call. Carries materially more than kroger-product: a nutrition-facts panel with ingredients, allergens and dietary flags; store-specific price and stock level; a full star-rating histogram; the merchandising hierarchy; and every image perspective. location_id scopes price and stock to one store.
/kroger/productsQuery parameters:
upcs (required) — comma-separated Kroger product UPCs, up to 50 per
call. Every value must be numeric; a non-numeric entry returns 400.location_id (optional) — Kroger store/location id that scopes price and
stock. Defaults to a confirmed-working store id when omitted, since price
and availability are store-specific.Notable response behavior:
price reflects one store's regular price. amount/currency are the
parsed form of Kroger's own "USD 2.19" price strings, with the display
string kept in display and the unit price in unit_price_text.
seller_id/seller_name identify the seller (Kroger itself, or a
marketplace seller).inventory.stock_level is Kroger's own coarse label (e.g. HIGH) and is
passed through as-is rather than mapped to a fixed set.nutrition is omitted entirely for products Kroger publishes no nutrition
data for (non-food items).count can be lower than the number of
UPCs requested.| Field | In the sample | Value in the sample |
|---|---|---|
| location_id | Has a value | |
| count | Has a value | 0 |
| products | Empty |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| upcs | string | Yes | Comma-separated Kroger product UPCs, up to 50 | 0007465324996,0005100027014 | |
| location_id | string | No | Kroger store/location id that scopes price and stock | 03500917 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/kroger/products?upcs=0007465324996%2C0005100027014" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"location_id": "03500917",
"count": 1,
"products": [
{
"upc": "0007465324996",
"name": "Jack's Pull-Apart Supreme Pizza Sticks",
"brand": "Jack's",
"size": "8 Ounces",
"country_of_origin": "UNITED STATES",
"url": "https://www.kroger.com/p/-/0007465324996",
"image_url": "https://www.kroger.com/product/images/xlarge/front/0007465324996",
"categories": [
"Frozen"
],
"category": {
"department": "FROZEN GROCERY",
"commodity": "FROZEN HANDHELDS & SNACKS",
"sub_commodity": "POCKETS"
},
"alcohol": false,
"price": {
"amount": 2.19,
"currency": "USD",
"display": "$2.19",
"unit_price_text": "$0.27/oz",
"location_id": "03500917",
"seller_id": "KR001",
"seller_name": "Kroger"
},
"inventory": {
"location_id": "03500917",
"available": 9,
"stock_level": "HIGH"
},
"rating": {
"average": 4.35,
"count": 101,
"five_stars": 64,
"four_stars": 21,
"three_stars": 8,
"two_stars": 3,
"one_star": 5
},
"nutrition": {
"serving_size": "2 Sticks (113 g)",
"servings_per_container": "2.0",
"allergens": "Contains Wheat and Their Derivatives,Eggs and their derivates,Soybean",
"organic": false,
"non_gmo": false,
"gluten_free": false,
"kosher": false,
"facts": [
{
"name": "Sodium",
"value": "620",
"unit": "mg",
"daily_value": "27"
}
]
}
}
]
}
}Request schema
No body schema
Response schema
#/definitions/kroger.productsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | kroger.ProductsResponse | No | ||||
| data.count | integer | No | ||||
| data.location_id | string | No | ||||
| data.products | array | No | ||||
| data.products[].alcohol | boolean | No | ||||
| data.products[].brand | string | No | ||||
| data.products[].categories | array | No | ||||
| data.products[].category | kroger.ProductCategory | No | ||||
| data.products[].category.commodity | string | No | ||||
| data.products[].category.department | string | No | ||||
| data.products[].category.sub_commodity | string | No | ||||
| data.products[].country_of_origin | string | No | ||||
| data.products[].image_url | string | No | ||||
| data.products[].images | array | No | ||||
| data.products[].images[].perspective | string | No | ||||
| data.products[].images[].size | string | No | ||||
| data.products[].images[].url | string | No | ||||
| data.products[].inventory | kroger.ProductInventory | No | ||||
| data.products[].inventory.available | integer | No | ||||
| data.products[].inventory.location_id | string | No | ||||
| data.products[].inventory.stock_level | string | No | ||||
| data.products[].name | string | No | ||||
| data.products[].nutrition | kroger.ProductNutrition | No | ||||
| data.products[].nutrition.allergens | string | No | ||||
| data.products[].nutrition.facts | array | No | ||||
| data.products[].nutrition.facts[].daily_value | string | No | ||||
| data.products[].nutrition.facts[].name | string | No | ||||
| data.products[].nutrition.facts[].unit | string | No | ||||
| data.products[].nutrition.facts[].value | string | No | ||||
| data.products[].nutrition.gluten_free | boolean | No | ||||
| data.products[].nutrition.ingredients | string | No | ||||
| data.products[].nutrition.kosher | boolean | No | ||||
| data.products[].nutrition.non_gmo | boolean | No | ||||
| data.products[].nutrition.organic | boolean | No | ||||
| data.products[].nutrition.product_warning | string | No | ||||
| data.products[].nutrition.serving_size | string | No | ||||
| data.products[].nutrition.servings_per_container | string | No | ||||
| data.products[].price | kroger.ProductPrice | No | ||||
| data.products[].price.amount | number | No | ||||
| data.products[].price.currency | string | No | ||||
| data.products[].price.display | string | No | ||||
| data.products[].price.location_id | string | No | ||||
| data.products[].price.seller_id | string | No | ||||
| data.products[].price.seller_name | string | No | ||||
| data.products[].price.unit_price_text | string | No | ||||
| data.products[].rating | kroger.ProductRating | No | ProductRating record, 7 fields: average, count, five_stars, four_stars, one_star, three_stars, two_stars. Described under Kroger product reviews API. | |||
| data.products[].size | string | No | ||||
| data.products[].upc | string | No | ||||
| data.products[].url | 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/products?upcs=0007465324996%2C0005100027014" \
-H "x-api-key: $CRAWLORA_API_KEY"