Chewy API endpoint
Returns Chewy's category taxonomy tree: how to discover group_id values for chewy_category, not the products within a category. Omitting group_id returns all top-level departments (Dog, Cat, Horse, Bird, Fish, Reptile, Small Pet, Farm and Livestock Supplies, Wild Bird and Wildlife Supplies, Pharmacy, Pet Parents); a group_id expands that specific group's own subtree instead. depth controls how many levels of subcategories are expanded in one call.
/chewy/categoriesReturns Chewy's category taxonomy tree: how to discover group_id values for chewy_category, not the products within a category. Sourced from Chewy's own mobile-app catalog-group endpoint.
group_id is optional -- a specific category group id to expand, e.g. 332 for Dog Food (discoverable from a previous chewy_categories response's groups[].group_id, or from chewy_category/chewy_product's breadcrumb group ids). Omit it for the full top-level department tree.
depth is optional, 1 to 3, defaults to 2 -- how many levels of subcategories to expand in one call.
Notable response behavior:
group_id returns all top-level departments: Dog, Cat, Horse, Bird, Fish, Reptile, Small Pet, Farm and Livestock Supplies, Wild Bird and Wildlife Supplies, Pharmacy, Pet Parents.groups[].children is nested to depth levels; a leaf group with no further subcategories omits children entirely.groups[].group_id values are directly usable as chewy_category's own group_id query parameter.| Field | Filled in, of 11 checked | Values in the sample |
|---|---|---|
| group_id | 11 | |
| name | 11 | “Dog” and 10 other values |
| short_description | 11 | “Dog Supplies” and 10 other values |
| thumbnail_url | 11 | image.chewy.com |
| children | 11 | median 12 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| group_id | string | No | Chewy category group id to expand, e.g. 332 for Dog Food. Omit for the full top-level department tree. | 332 | |
| depth | integer | No | How many levels of subcategories to expand, 1 to 3 (default 2) | 2 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/chewy/categories" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"count": 2,
"groups": [
{
"group_id": "288",
"name": "Dog",
"short_description": "Dog Supplies",
"thumbnail_url": "https://image.chewy.com/is/image/category/288-MAIN-dog.jpg",
"children": [
{
"group_id": "332",
"name": "Food",
"short_description": "Dog Food"
},
{
"group_id": "335",
"name": "Treats",
"short_description": "Dog Treats"
}
]
},
{
"group_id": "325",
"name": "Cat",
"short_description": "Cat Supplies"
}
],
"source_url": "https://www.chewy.com/api/search/groups?catalogId=1004&depth=1&fields=NMA_MENU",
"fetched_at": "2026-08-20T10:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/chewy.categoriesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | chewy.CategoriesResponse | No | ||||
| data.count | integer | No | ||||
| data.fetched_at | string | No | ||||
| data.group_id | string | No | 332 | |||
| data.groups | array | No | ||||
| data.groups[].children | array | No | ||||
| data.groups[].group_id | string | No | 288 | |||
| data.groups[].name | string | No | Dog | |||
| data.groups[].short_description | string | No | Dog Supplies | |||
| data.groups[].thumbnail_url | string | No | ||||
| data.source_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/chewy/categories" \
-H "x-api-key: $CRAWLORA_API_KEY"