Instacart API endpoint
Returns a single product's detail at a specific Instacart store: name, size, brand, image, current pricing (with any sale/offer badge), availability, stock level, dietary labels, and nutrition facts. Public data sourced from Instacart's own storefront pages.
/instacart/itemQuery parameters:
shop_id (required) — store's opaque shop id, from
GET /instacart/stores.store_slug (required) — store's retailer slug, from
GET /instacart/stores.retailer_location_id (required) — store's opaque retailer location id,
from GET /instacart/stores.product_id (required) — Instacart's opaque product id.postal_code (required) — postal code to price/localize the lookup for.Notable response behavior:
price is only fully populated once the underlying request has an
active store session — this endpoint handles that automatically, but
a first call for a given store can take slightly longer while that
session is established.on_sale and offer_label are only present when the item currently has
a promotion.| Field | Filled in, of 6 checked | Values in the sample |
|---|---|---|
| label | 6 | “Protein” and 5 other values |
| value | 6 | 4 to 150, median 10 |
| unit | 5 | g (4), mg (1) |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| shop_id | string | Yes | Store's opaque shop id, from GET /instacart/stores | 9501 | |
| store_slug | string | Yes | Store's retailer slug, from GET /instacart/stores | safeway | |
| retailer_location_id | string | Yes | Store's opaque retailer location id, from GET /instacart/stores | 53 | |
| product_id | string | Yes | Instacart's opaque product id | 17830663 | |
| postal_code | string | Yes | Postal code to price/localize the lookup for | 94105 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/instacart/item?shop_id=9501&store_slug=safeway&retailer_location_id=53&product_id=17830663&postal_code=94105" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"id": "items_53-17830663",
"product_id": "17830663",
"name": "Lucerne Blended Plain Yogurt",
"size": "32 oz",
"brand_name": "lucerne",
"image_url": "https://d2lnr5mha7bycj.cloudfront.net/product-image/file/large_4978279a-5ed6-4a86-9dc2-67969ae09186.png",
"price": {
"current_price": 2.99,
"regular_price": 3.99,
"on_sale": true,
"offer_label": "25% off",
"pricing_unit": "32 oz"
},
"available": true,
"stock_level": "inStock",
"dietary_labels": [
"low_carb",
"low_sugar"
],
"nutrition": [
{
"label": "Protein",
"value": "7",
"unit": "g"
},
{
"label": "Fat",
"value": "6",
"unit": "g"
},
{
"label": "Sugar",
"value": "10",
"unit": "g"
},
{
"label": "Calories",
"value": "150"
}
],
"variant_options_summary": "2 total options"
}
}Request schema
No body schema
Response schema
#/definitions/instacart.itemResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | instacart.ItemResponse | No | ||||
| data.available | boolean | No | ||||
| data.brand_name | string | No | ||||
| data.dietary_labels | array | No | ||||
| data.id | string | No | ||||
| data.image_url | string | No | ||||
| data.name | string | No | ||||
| data.nutrition | array | No | ||||
| data.nutrition[].label | string | No | ||||
| data.nutrition[].unit | string | No | ||||
| data.nutrition[].value | string | No | ||||
| data.price | instacart.ItemPrice | No | ||||
| data.price.current_price | number | No | ||||
| data.price.offer_label | string | No | ||||
| data.price.on_sale | boolean | No | ||||
| data.price.pricing_unit | string | No | ||||
| data.price.regular_price | number | No | ||||
| data.product_id | string | No | ||||
| data.size | string | No | ||||
| data.stock_level | string | No | ||||
| data.variant_options_summary | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 500 | Internal Server Error | #/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/instacart/item?shop_id=9501&store_slug=safeway&retailer_location_id=53&product_id=17830663&postal_code=94105" \
-H "x-api-key: $CRAWLORA_API_KEY"