Chewy API endpoint
Use Crawlora's Chewy Search Facets API to extract supported public Chewy data as structured JSON. This page includes request parameters, cURL examples, response schema, error behavior, credit cost, and a Playground link for testing before integration.
/chewy/facetsReturns the full set of refinement options (facets) a Chewy category or keyword search can be narrowed by -- brand, sub-category, lifestage, food form, breed size, special diet, health feature, flavor, ingredient, packaging type, price band, customer rating, and whichever other dimensions that listing exposes -- with each option's product count. No products are returned, so this is a much smaller call than chewy_category/chewy_search when only the option set is wanted. The Brand dimension is effectively Chewy's brand directory for the requested listing: each brand option carries its product count and, where Chewy publishes one, its own chewy.com/brands/<slug>-<id> landing-page slug in seo_hvf_slug. Exactly one of group_id or q is required. Every facets[].value paired with one of that facet's options[].value is a ready-to-use filter key:value pair for this endpoint, chewy_category, and chewy_search alike; passing filter here narrows the listing first, so the returned counts describe the already-narrowed result set. A group_id Chewy does not recognize returns a 404 rather than an empty option set. Developers commonly use this endpoint for data enrichment, monitoring, research dashboards, internal automation, and agent-native workflows that need repeatable structured public web data. Authentication uses the documented Crawlora headers, and usage is metered with the credit cost shown on this page.
Request parameters are generated from the active endpoint catalog. Required values must be sent before Crawlora can call the upstream public web data source.
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| group_id | string | No | Chewy's numeric category id, e.g. \ | ||
| q | string | No | Free-text search keywords to return refinement options for, e.g. \ | ||
| filter | array | No | Repeatable, up to 10. Each value is \ | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/chewy/facets?q=coffee" \ -H "x-api-key: $CRAWLORA_API_KEY"
Send your scraping API key in the x-api-key header. Use the console API Keys page to rotate or select the active key.
Endpoint usage is metered in credits. The plan prices, included credits, limits, and overage rates below match the active backend billing configuration.
| Plan | Price | Included credits | Daily cap | Rate limit | Overage |
|---|---|---|---|---|---|
| Free | $0/mo | 2,000 | 500 daily credits | 5/min | No overage |
| Starter | $9/mo | 20,000 | 5,000 daily credits | 15/min | $0.75/1,000 overage credits when enabled |
| Growth | $29/mo | 100,000 | 25,000 daily credits | 45/min | $0.45/1,000 overage credits when enabled |
| Pro | $79/mo | 400,000 | No daily cap | 120/min | $0.30/1,000 overage credits |
| Business | $199/mo | 1,200,000 | No daily cap | 300/min | $0.20/1,000 overage credits |
| Enterprise | $499/mo | 5,000,000 | No daily cap | 1,000/min | $0.12/1,000 overage credits |
This endpoint is executed through Crawlora's managed scraping infrastructure.
- The `Brand` dimension (`facets[].value` == `"brand_facet"`) is effectively Chewy's brand directory for the requested listing -- every brand carrying at least one matching product, with its product count. A top-level department returns thousands of brands (e.g. `group_id=288`, Dog, returns over 3,000). - `options[].seo_hvf_slug`, present on brand options Chewy publishes a landing page for, is that brand's own `chewy.com/brands/<slug>-<id>` page slug (e.g. `acana-dry-dog-food`) -- Chewy's canonical brand name for URL purposes. It is scoped to the listing being refined (ACANA is `acana-dry-dog-food` under `group_id=294` but `acana-dog-food` under its parent `332`), and Chewy publishes one for far fewer brands at department level than at sub-category level. `options[].url_slug` is the equivalent for a sub-category option. - `options[].id` is Chewy's own internal id for the option, omitted where upstream has none (the synthetic Category, Price and Customer Rating dimensions). - Every `facets[].value` paired with one of that facet's `options[].value` is a ready-to-use `filter` `key:value` pair for this endpoint, `/chewy/category`, and `/chewy/search` alike. When `facets[].value` is `"categoryId"`, each `options[].value` is also a ready-to-use `group_id`. - `total` is the number of products the requested listing matches (after any `filter` is applied). `count` is the number of facet dimensions returned. - A `group_id` Chewy does not recognize returns a `404` rather than an empty option set. A `q` that matches nothing returns `200` with an empty `facets` array and `total` of `0`. - The facet dimensions vary by listing -- a food category exposes flavor/ingredient/special-diet dimensions a toy category does not. Example response: ```json {"code":200,"msg":"OK","data":{"group_id":"294","total":2208,"count":2,"facets":[{"name":"Category","value":"categoryId","count":1,"options":[{"name":"Health Condition","display_label":"Health Condition Dry Dog Food","value":"132958","url_slug":"science-backed-formulas","product_count":752}]},{"name":"Brand","value":"brand_facet","count":2,"options":[{"id":"507405","name":"ACANA","display_label":"ACANA","value":"ACANA","seo_hvf_slug":"acana-dry-dog-food","product_count":93},{"id":"330132","name":"Purina Pro Plan","display_label":"Purina Pro Plan","value":"Purina Pro Plan","seo_hvf_slug":"Purina-Pro-Plan-Dry-Dog-Food","product_count":142}]}],"source_url":"https://www.chewy.com/plp/api/facets?catalogId=1004&groupId=294","fetched_at":"2026-09-05T10:00:00Z"}} ```
Crawlora does not silently return bad data when the upstream page cannot be used.
| Status | Common failure case |
|---|---|
| 400 | Invalid input or missing required parameter |
| 429 | Plan or endpoint rate limit exceeded |
| 500 | Internal execution error |
| 502 | Upstream platform failed, returned unusable HTML, or served a challenge page that could not be resolved |
When possible, Crawlora returns structured error context so your integration can retry, back off, or inspect the request.
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
{
"code": 200,
"msg": "OK",
"data": {
"group_id": "294",
"total": 2208,
"count": 2,
"facets": [
{
"name": "Category",
"value": "categoryId",
"count": 1,
"options": [
{
"name": "Health Condition",
"display_label": "Health Condition Dry Dog Food",
"value": "132958",
"url_slug": "science-backed-formulas",
"product_count": 752
}
]
},
{
"name": "Brand",
"value": "brand_facet",
"count": 2,
"options": [
{
"id": "507405",
"name": "ACANA",
"display_label": "ACANA",
"value": "ACANA",
"seo_hvf_slug": "acana-dry-dog-food",
"product_count": 93
},
{
"id": "330132",
"name": "Purina Pro Plan",
"display_label": "Purina Pro Plan",
"value": "Purina Pro Plan",
"seo_hvf_slug": "Purina-Pro-Plan-Dry-Dog-Food",
"product_count": 142
}
]
}
],
"source_url": "https://www.chewy.com/plp/api/facets?catalogId=1004&groupId=294",
"fetched_at": "2026-09-05T10:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/chewy.facetsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | chewy.FacetsResponse | No | ||||
| data.count | integer | No | 12 | |||
| data.facets | array | No | ||||
| data.facets[].count | integer | No | 322 | |||
| data.facets[].name | string | No | Brand | |||
| data.facets[].options | array | No | ||||
| data.facets[].options[].display_label | string | No | ACANA | |||
| data.facets[].options[].id | string | No | 507405 | |||
| data.facets[].options[].name | string | No | ACANA | |||
| data.facets[].options[].product_count | integer | No | 93 | |||
| data.facets[].options[].seo_hvf_slug | string | No | acana-dry-dog-food | |||
| data.facets[].options[].url_slug | string | No | dry-food | |||
| data.facets[].options[].value | string | No | ACANA | |||
| data.facets[].value | string | No | brand_facet | |||
| data.fetched_at | string | No | ||||
| data.group_id | string | No | 294 | |||
| data.query | string | No | salmon dog food | |||
| data.source_url | string | No | ||||
| data.total | integer | No | 2208 | |||
| msg | string | No | OK |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/chewy/facets?q=coffee" \
-H "x-api-key: $CRAWLORA_API_KEY"Crawlora is designed for responsible structured public web data workflows. Customers are responsible for using Crawlora in compliance with applicable laws, third-party rights, target-platform rules, and Crawlora terms.
Read Crawlora terms