Instacart API endpoint
Returns a store's department/category taxonomy (Produce, Dairy & Eggs, Bakery, ...) two levels deep -- department and subcategory. Metadata only, does not return products. Public data sourced from Instacart's own storefront navigation.
/instacart/departmentsQuery parameters:
shop_id (required) — store's opaque shop id, from
GET /instacart/stores.store_slug (required) — store's retailer slug, from
GET /instacart/stores.postal_code (required) — postal code to localize the taxonomy for.Notable response behavior:
| Field | Filled in, of 35 checked | Values in the sample |
|---|---|---|
| id | 35 | |
| name | 35 | “Sip Vibe” and 34 other values |
| slug | 35 | |
| subcategories | 35 | median 9 entries |
| 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 | |
| postal_code | string | Yes | Postal code to localize the taxonomy for | 94105 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/instacart/departments?shop_id=9501&store_slug=safeway&postal_code=94105" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"shop_id": "9501",
"departments": [
{
"id": "88",
"name": "Produce",
"slug": "produce",
"subcategories": [
{
"id": "79",
"name": "Fresh Fruits",
"slug": "fresh-fruits"
},
{
"id": "80",
"name": "Fresh Vegetables",
"slug": "fresh-vegetables"
},
{
"id": "78",
"name": "Herbs",
"slug": "herbs"
}
]
},
{
"id": "98",
"name": "Dairy & Eggs",
"slug": "dairy",
"subcategories": [
{
"id": "85",
"name": "Milk",
"slug": "milk"
},
{
"id": "106",
"name": "Cheese",
"slug": "cheese"
}
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/instacart.departmentsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | instacart.DepartmentsResponse | No | ||||
| data.departments | array | No | ||||
| data.departments[].id | string | No | ||||
| data.departments[].name | string | No | ||||
| data.departments[].slug | string | No | ||||
| data.departments[].subcategories | array | No | ||||
| data.departments[].subcategories[].id | string | No | ||||
| data.departments[].subcategories[].name | string | No | ||||
| data.departments[].subcategories[].slug | string | No | ||||
| data.shop_id | string | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/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/departments?shop_id=9501&store_slug=safeway&postal_code=94105" \
-H "x-api-key: $CRAWLORA_API_KEY"