Chewy API endpoint
Returns the full roster of purchasable variants for the product a given item belongs to -- every size, flavor, or color Chewy sells it in -- with each variant's own part number, price, Autoship price, stock, images, and the defining option that distinguishes it (e.g. Size = Medium). id is the numeric id from any chewy.com PDP URL; passing any one variant's id returns that variant's whole family, and the variant you asked for is flagged with is_requested. This answers a question chewy_product cannot: chewy_product describes only the single variant it was given and names its parent, but never lists the siblings or their prices. Only the defining option is returned, not the full attribute table -- use chewy_item_attributes for that.
/chewy/variantsQuery parameters:
id -- required. The numeric id from a chewy.com PDP URL, e.g. 185468 from
https://www.chewy.com/<any-slug>/dp/185468. Passing any one variant's id
returns that variant's whole family.Notable response behavior:
variants[].is_requested flags the variant whose id you passed, so the
requested item is identifiable within its own family.variants[].options[] carries only the defining dimension (e.g. Size),
not the full attribute table. Use /chewy/item-attributes for the complete
per-SKU attribute list.parent_url is the canonical PDP URL for the parent product.autoship_price is 0 when the variant is not Autoship-eligible.404; a non-numeric id returns a
400.| Field | Filled in, of 5 checked | Values in the sample |
|---|---|---|
| part_number | 5 | 158,731 to 710,438, median 158,733 |
| entry_id | 5 | |
| name | 5 | “Frisco Lion Mane Dog & Cat Costume, Medium” and 4 other values |
| currency_code | 5 | |
| price | 5 | 15.99 to 17.99, median 15.99 |
| in_stock | 5 | true in 5 of 5 |
| image_urls | 5 | median 6 entries |
| options | 5 | median 1 entry |
| is_requested | 1 | true in 1 of 1 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| id | string | Yes | The numeric id from a chewy.com PDP URL, e.g. \ | 185468 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/chewy/variants?id=185468" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"requested_part_number": "4238414",
"parent_part_number": "4238390",
"parent_name": "Nutri-Choice Advantage Salmon & Pea Dry Dog Food",
"parent_url": "https://www.chewy.com/nutri-choice-advantage-salmon-pea-dry/dp/4238390",
"count": 3,
"variants": [
{
"part_number": "4238414",
"name": "Nutri-Choice Advantage Salmon & Pea Dry Dog Food, 3.5-lb bag",
"currency_code": "USD",
"price": 8.99,
"autoship_price": 8.54,
"in_stock": true,
"image_urls": [
"https://image.chewy.com/is/image/catalog/…"
],
"options": [
{
"name": "Size",
"values": [
"3.5-lb bag"
]
}
],
"is_requested": true
}
],
"source_url": "https://www.chewy.com/api/pdp/graphql",
"fetched_at": "2026-09-06T09:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/chewy.variantsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | chewy.VariantsResponse | No | ||||
| data.count | integer | No | ||||
| data.fetched_at | string | No | ||||
| data.parent_entry_id | string | No | ||||
| data.parent_name | string | No | Frisco Lion Mane Dog & Cat Costume | |||
| data.parent_part_number | string | No | 158730 | |||
| data.parent_url | string | No | ||||
| data.requested_part_number | string | No | 158732 | |||
| data.source_url | string | No | ||||
| data.variants | array | No | ||||
| data.variants[].autoship_price | number | No | ||||
| data.variants[].currency_code | string | No | USD | |||
| data.variants[].entry_id | string | No | ||||
| data.variants[].image_urls | array | No | ||||
| data.variants[].in_stock | boolean | No | ||||
| data.variants[].is_requested | boolean | No | ||||
| data.variants[].name | string | No | Frisco Lion Mane Dog & Cat Costume, Medium | |||
| data.variants[].number_of_units | number | No | ||||
| data.variants[].options | array | No | ||||
| data.variants[].options[].name | string | No | Size | |||
| data.variants[].options[].values | array | No | Medium | |||
| data.variants[].part_number | string | No | 158732 | |||
| data.variants[].price | number | No | 15.99 | |||
| msg | string | No | OK |
| 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 |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/chewy/variants?id=185468" \
-H "x-api-key: $CRAWLORA_API_KEY"