Chewy API endpoint
Returns one page of a Chewy keyword search's product listing (price, autoship price/discount, stock, rating, images), plus embedded facets. q is free-text search keywords, e.g. "salmon dog food". A generic query that strongly matches one of Chewy's own categories (e.g. "dog food", "cat litter", "leash") is transparently redirected to that category's listing, the same real results a chewy.com visitor would see -- source_url reflects the actual listing fetched. sort and filter narrow/reorder the listing; every facets[].value paired with one of that facet's options[].value from any prior response is a valid filter key:value pair.
/chewy/searchReturns one page of a Chewy keyword search's product listing: price, autoship price/discount, stock, rating, images, plus embedded facets. Keyed by a search term instead of a category id.
sort is one of byRelevance, byNewest, byPopularity, byLowestPrice, byHighestPrice, byRating, byRatingCount. Omit it to use Chewy's own relevance ordering.filter is repeatable, up to 10 values. Each value is "key:value" -- pair a response's own facets[].value (e.g. "brand_facet", "price_d") with one of that facet's options[].value (e.g. "ACANA", "1"). Multiple filter values combine as AND.Notable response behavior:
page (1-based, defaults to 1).autoship_price/autoship_discount_pct reflect Chewy's Autoship subscribe-and-save program; both are omitted when a product isn't Autoship-eligible.count: 0, empty products), not an error.dog food, cat litter, leash, harness) is transparently redirected to that category's own listing -- the same real results a chewy.com visitor typing that query would see, rather than an empty response. source_url reflects the actual listing that was fetched (the category's plp/api/search?groupId=... URL in this case, not the term=... one).| Field | Filled in, of 36 checked | Values in the sample |
|---|---|---|
| part_number | 36 | 52,545 to 3,861,726, median 733,486 |
| parent_part_number | 36 | 44,993 to 3,861,694, median 222,974 |
| name | 36 | “Purina Pro Plan Adult Sensitive Skin & Stomach Salmon & Ric…” and 35 other values |
| manufacturer | 36 | “Purina Pro Plan” and 20 other values |
| url | 36 | chewy.com |
| image_url | 36 | image.chewy.com |
| currency_code | 36 | |
| price | 36 | 4.98 to 97.98, median 49.99 |
| strike_price | 22 | 6.99 to 99.99, median 57.36 |
| autoship_price | 36 | 4.73 to 93.08, median 47.49 |
| autoship_discount_pct | 36 | 5% in all 36 |
| is_autoship_allowed | 36 | true in 36 of 36 |
| in_stock | 36 | true in 36 of 36 |
| rating | 36 | 4.17 to 4.72, median 4.53 |
| rating_count | 36 | 41 to 21,432, median 1,413 |
| has_more_choices | 30 | true in 30 of 30 |
| thumbnail_urls | 36 | median 7 entries |
| is_deal | 4 | true in 4 of 4 |
| is_chewy_exclusive | 3 | true in 3 of 3 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| q | string | Yes | Free-text search keywords | salmon dog food | |
| page | integer | No | Page number, 36 products per page (default 1) | 1 | |
| sort | string | No | Chewy's own relevance ordering when omitted | Sort order. One of byRelevance, byNewest, byPopularity, byLowestPrice, byHighestPrice, byRating, byRatingCount. Defaults to Chewy's own relevance ordering when omitted. Allowed values: byRelevance, byNewest, byPopularity, byLowestPrice, byHighestPrice, byRating, byRatingCount. | byRating |
| filter | array<string> | No | Repeatable, up to 10. Each value is \ | brand_facet:ACANA | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/chewy/search?q=salmon+dog+food&page=1&sort=byRelevance" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"query": "salmon dog food",
"total": 1451,
"count": 1,
"products": [
{
"part_number": "3969182",
"parent_part_number": "114152",
"name": "Pedigree Complete Nutrition Grilled Steak & Vegetable Flavor Dog Kibble Adult Dry Dog Food",
"manufacturer": "Pedigree",
"url": "https://www.chewy.com/pedigree-complete-nutrition-grilled/dp/3969182",
"image_url": "https://image.chewy.com/catalog/general/images/pedigree.jpg",
"currency_code": "USD",
"price": 24.98,
"is_autoship_allowed": true,
"in_stock": true,
"rating": 4.5,
"rating_count": 900
}
],
"facets": [
{
"name": "Brand",
"value": "brand_facet",
"options": [
{
"name": "Blue Buffalo",
"display_label": "Blue Buffalo",
"value": "Blue Buffalo",
"product_count": 40
}
]
}
],
"source_url": "https://www.chewy.com/plp/api/search?catalogId=1004&count=36&from=0&term=salmon+dog+food",
"fetched_at": "2026-08-21T10:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/chewy.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | chewy.SearchResponse | No | ||||
| data.breadcrumbs | array | No | ||||
| data.breadcrumbs[].group_id | string | No | 332 | |||
| data.breadcrumbs[].text | string | No | Dog Food | |||
| data.breadcrumbs[].url_slug | string | No | food | |||
| data.count | integer | No | ||||
| data.facets | array | No | ||||
| data.facets[].name | string | No | Category | |||
| data.facets[].options | array | No | ||||
| data.facets[].options[].display_label | string | No | Adult Dry Dog Food | |||
| data.facets[].options[].name | string | No | Adult | |||
| data.facets[].options[].product_count | integer | No | 64 | |||
| data.facets[].options[].url_slug | string | No | adult-dry-dog-food | |||
| data.facets[].options[].value | string | No | 11098 | |||
| data.facets[].value | string | No | categoryId | |||
| data.fetched_at | string | No | ||||
| data.products | array | No | ||||
| data.products[].autoship_discount_pct | string | No | 5% | |||
| data.products[].autoship_price | number | No | 8.54 | |||
| data.products[].currency_code | string | No | USD | |||
| data.products[].has_more_choices | boolean | No | ||||
| data.products[].image_url | string | No | ||||
| data.products[].in_stock | boolean | No | true | |||
| data.products[].is_autoship_allowed | boolean | No | true | |||
| data.products[].is_chewy_exclusive | boolean | No | ||||
| data.products[].is_deal | boolean | No | ||||
| data.products[].is_new | boolean | No | ||||
| data.products[].manufacturer | string | No | Nutri-Choice Advantage | |||
| data.products[].name | string | No | ||||
| data.products[].parent_part_number | string | No | 4238390 | |||
| data.products[].part_number | string | No | 4238414 | |||
| data.products[].price | number | No | 8.99 | |||
| data.products[].rating | number | No | 4.6 | |||
| data.products[].rating_count | integer | No | ||||
| data.products[].strike_price | number | No | ||||
| data.products[].thumbnail_urls | array | No | ||||
| data.products[].url | string | No | ||||
| data.query | string | No | salmon dog food | |||
| data.source_url | string | No | ||||
| data.total | integer | No | 1451 | |||
| 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/search?q=salmon+dog+food&page=1&sort=byRelevance" \
-H "x-api-key: $CRAWLORA_API_KEY"