Chewy API endpoint
Use Crawlora's Chewy Product Attributes 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/item-attributesReturns Chewy's own specification table for up to 20 products in one call, keyed by part number -- the structured attribute list (lifestage, pet type, product type, material, made-in country, packaging type, flavor, defining size, plus long-form key-benefits and cautions copy), together with the handling and compliance flags that govern how an item ships (pharmaceutical, prescription vet-diet, frozen, refrigerated, single-tablet, gift card), its bundle structure and component SKUs, its autoship eligibility/discount and preset reorder cadence, its merchandising classification path, and the numeric category group ids it belongs to (each usable directly as chewy_category's group_id). This complements rather than repeats chewy_products and chewy_product: price, rating, images, reviews, and descriptions stay on those endpoints, and the attribute table is not available from either. Use the group parameter to return a single attribute group. Part numbers Chewy does not recognize are reported in not_found; if none of them resolve the response is a 404. 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 |
|---|---|---|---|---|---|
| part_numbers | string | Yes | Comma-separated Chewy part numbers, up to 20 per request, e.g. \ | ||
| group | string | No | Return only attributes in one group. One of DEFINING, STANDARD, EXTENDED, HIDDEN. Omit for every group. Allowed values: DEFINING, STANDARD, EXTENDED, HIDDEN | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/chewy/item-attributes?group=DEFINING" \ -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.
- `items[].attributes[]` is the structured specification table. Each entry has an `identifier` (Chewy's own attribute key, e.g. `LitterMaterial`, `Lifestage`, `MadeIn`, `KeyBenefits`), its `group` and `usage`, and one or more `values`. An attribute can carry several values -- `Lifestage` is commonly `["All Lifestages", "Adult"]`. A typical SKU returns 25-35 attributes. - The handling and compliance flags -- `is_pharmaceutical`, `is_vet_diet`, `is_frozen`, `is_refrigerated`, `is_single_tablet`, `is_gift_card` -- govern how an item ships and whether it needs veterinary authorization. `is_vet_diet` is `true` for prescription-diet foods. These are omitted when false. - `items[].category_group_ids` is the list of numeric category group ids the item belongs to. Each is directly usable as `/chewy/category`'s `group_id`, so this is a reverse index from a SKU back to every category listing that contains it. - `items[].merch_class_identifiers` is Chewy's merchandising classification path, e.g. `["f2-cat-consumables", "f2-cat-consumables-litter", ...]`, ordered broad to narrow. - `items[].preset_frequency` is the item's default autoship cadence, e.g. `{"unit":"WEEK","value":5}`. `unit` is one of `DAY`, `WEEK`, `MONTH`. - Bundle products carry `is_bundle` plus `bundle_items[]` listing the component SKUs; `is_bundle_multi_sku` and `is_bundle_same_sku` distinguish the two bundle kinds. - Part numbers Chewy does not recognize are returned in `not_found` rather than as null entries -- upstream silently drops them. If none of the requested part numbers resolve, the response is a `404`. - Per-product promotion/deal detail is deliberately not exposed here; it requires customer context upstream and is unavailable to an anonymous caller. Example response: ```json {"code":200,"msg":"OK","data":{"count":1,"not_found":["99999999999"],"items":[{"part_number":"52448","entry_id":"37591","name":"Lavender Scented Clumping Corn Cat Litter, 28-lb bag","brand":"World's Best","gtin":"322591001700","is_published":true,"is_autoship_allowed":true,"autoship_discount_pct":5,"preset_frequency":{"unit":"WEEK","value":5},"merch_class_identifiers":["f2-cat-consumables","f2-cat-consumables-litter"],"category_group_ids":["10016","2731","411"],"attributes":[{"identifier":"Size","name":"Size","group":"DEFINING","usage":"DEFINING","displayable":true,"values":[{"id":1,"value":"28-lb bag"}]},{"identifier":"LitterMaterial","name":"Litter Material","group":"STANDARD","usage":"DESCRIPTIVE","displayable":true,"values":[{"id":2,"value":"Corn"}]}]}],"source_url":"https://www.chewy.com/api/subscriptions/graphql","fetched_at":"2026-09-06T10: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": {
"count": 1,
"not_found": [
"99999999999"
],
"items": [
{
"part_number": "52448",
"entry_id": "37591",
"name": "Lavender Scented Clumping Corn Cat Litter, 28-lb bag",
"brand": "World's Best",
"gtin": "322591001700",
"is_published": true,
"is_autoship_allowed": true,
"autoship_discount_pct": 5,
"preset_frequency": {
"unit": "WEEK",
"value": 5
},
"merch_class_identifiers": [
"f2-cat-consumables",
"f2-cat-consumables-litter"
],
"category_group_ids": [
"10016",
"2731",
"411"
],
"attributes": [
{
"identifier": "Size",
"name": "Size",
"group": "DEFINING",
"usage": "DEFINING",
"displayable": true,
"values": [
{
"id": 1,
"value": "28-lb bag"
}
]
},
{
"identifier": "LitterMaterial",
"name": "Litter Material",
"group": "STANDARD",
"usage": "DESCRIPTIVE",
"displayable": true,
"values": [
{
"id": 2,
"value": "Corn"
}
]
}
]
}
],
"source_url": "https://www.chewy.com/api/subscriptions/graphql",
"fetched_at": "2026-09-06T10:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/chewy.itemAttributesResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | chewy.ItemAttributesResponse | No | ||||
| data.count | integer | No | ||||
| data.fetched_at | string | No | ||||
| data.items | array | No | ||||
| data.items[].attributes | array | No | ||||
| data.items[].attributes[].displayable | boolean | No | ||||
| data.items[].attributes[].group | string | No | STANDARD | |||
| data.items[].attributes[].identifier | string | No | LitterMaterial | |||
| data.items[].attributes[].name | string | No | Litter Material | |||
| data.items[].attributes[].usage | string | No | DESCRIPTIVE | |||
| data.items[].attributes[].values | array | No | ||||
| data.items[].attributes[].values[].id | integer | No | 1234 | |||
| data.items[].attributes[].values[].value | string | No | Adult | |||
| data.items[].autoship_discount_pct | number | No | 5 | |||
| data.items[].brand | string | No | World's Best | |||
| data.items[].bundle_items | array | No | ||||
| data.items[].bundle_items[].name | string | No | ||||
| data.items[].bundle_items[].part_number | string | No | 101143 | |||
| data.items[].bundle_title | string | No | ||||
| data.items[].category_group_ids | array | No | ||||
| data.items[].entry_id | string | No | 37591 | |||
| data.items[].gtin | string | No | 322591001700 | |||
| data.items[].is_autoship_allowed | boolean | No | Autoship. | |||
| data.items[].is_bundle | boolean | No | Bundle structure. | |||
| data.items[].is_bundle_multi_sku | boolean | No | ||||
| data.items[].is_bundle_same_sku | boolean | No | ||||
| data.items[].is_discontinued | boolean | No | ||||
| data.items[].is_frozen | boolean | No | ||||
| data.items[].is_gift_card | boolean | No | ||||
| data.items[].is_pharmaceutical | boolean | No | Handling and compliance flags. These drive how an order ships and whether it needs vet authorization -- none of them are exposed by any other endpoint in this family. | |||
| data.items[].is_published | boolean | No | ||||
| data.items[].is_refrigerated | boolean | No | ||||
| data.items[].is_single_tablet | boolean | No | ||||
| data.items[].is_vet_diet | boolean | No | ||||
| data.items[].merch_class_identifiers | array | No | Catalog membership -- the merchandising classification path and the numeric category group ids this SKU belongs to. The group ids feed straight back into chewy_category's group_id. | |||
| data.items[].name | string | No | Lavender Scented Clumping Corn Cat Litter, 28-lb bag | |||
| data.items[].part_number | string | No | 52448 | |||
| data.items[].preset_frequency | chewy.ItemFrequency | No | ||||
| data.items[].preset_frequency.unit | string | No | WEEK | |||
| data.items[].preset_frequency.value | integer | No | 5 | |||
| data.not_found | array | No | ||||
| data.source_url | string | No | ||||
| 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/item-attributes?group=DEFINING" \
-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