Pet-product price and Autoship monitoring
Use Chewy endpoints to turn pet-product price and autoship monitoring into repeatable API requests with documented inputs and JSON responses.
Turn public Chewy pages into structured pet-product data — keyword search, category browsing with facets, one product's full detail (price, Autoship pricing, stock, rating breakdown, reviews, and Q&A), dedicated paged endpoints reaching a product's full review and question/answer history beyond the 20-item embed, and search-box typeahead suggestions, all as normalized JSON. Credential-free.
Search Chewy, browse categories, and get product detail with reviews, Q&A, and Autoship pricing as structured JSON.
Endpoint families
6
Documented params
48
Examples
13
Live catalog snapshot
Active endpoints
14
Methods
GET
Required params
24
Schema refs
14
{
"platform": "Chewy",
"endpoint": "chewy-search",
"method": "GET",
"path": "/chewy/search",
"auth": "apiKey"
}Use cases
Search Chewy, browse categories, and get product detail with reviews, Q&A, and Autoship pricing as structured JSON.
Use Chewy endpoints to turn pet-product price and autoship monitoring into repeatable API requests with documented inputs and JSON responses.
Use Chewy endpoints to turn category and assortment research into repeatable API requests with documented inputs and JSON responses.
Use Chewy endpoints to turn review and q&a analysis into repeatable API requests with documented inputs and JSON responses.
Managed execution
Every figure below is read from the live Chewy endpoint catalog — 14 endpoints, 48 documented request parameters, and 14 published response schemas — the same catalog Docs and Playground run against.
14 documented Chewy endpoints, grouped into 14 request families — Brands, Categories and Category, plus 11 more.
48 request parameters are documented across those Chewy endpoints, 24 of them required — the full input contract is public before you write any integration code.
13 of the 14 Chewy endpoints ship a recorded example response, and 14 carry a documented response schema — you can code against the real JSON before the first request.
Chewy endpoints document their error responses (400, 404, 429 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
14 hosted MCP tools back the Chewy endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Coverage map
These cards are generated from the active endpoint catalog, so the landing page reflects the same API surface used by Docs and Playground.
/chewy/brands
/chewy/categories
/chewy/category
/chewy/facets
/chewy/gtin-lookup
/chewy/inventory
Featured endpoints
/chewy/searchReturns one page of a Chewy keyword search's normalized 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.
Response notes
- Pagination is 36 products per page via `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. - A query that matches nothing returns a genuine zero-result response (`count: 0`, empty `products`), not an error. - A generic query that strongly matches one of Chewy's own categories (e.g. `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). Example response: ```json {"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"}} ```
MCP tool chewy_search
/chewy/productReturns one Chewy product's full normalized detail: name, brand, description, images, price, stock, rating and its star-count breakdown, category breadcrumbs, customer questions and answers, and customer reviews. id is the numeric id from a chewy.com PDP URL, e.g. 185468 from https://www.chewy.com/frisco-lion-mane-dog-cat-costume/dp/185468 -- also the same value a chewy_category response's products[].part_number field carries for that product's own default variant. The response also carries the item's shipping weight and package dimensions as Chewy states them, its per-order purchase limit, and any promotions currently attached to it (each with a type such as "Spend $X" or "BOGO", plus short and long descriptions).
Response notes
- `entry_id`/`part_number` identify the exact variant this response describes (the requested `id`). Chewy models a product page as a shared "style"-level entity (name, description, breadcrumbs, rating, reviews, Q&A -- common to every size/color variant) plus one "item"-level entity per purchasable variant (price, stock, images, variant-specific name). `parent_entry_id`/`parent_part_number` identify the shared style; both are omitted for a single-variant product with no size/color options. - `rating_breakdown` is the product's star-count distribution (5 down to 1 star), sorted descending by star count. - `questions`/`questions[].answers` are omitted when the product has no customer Q&A yet. - `reviews[].photo_urls` is not currently populated by this endpoint's data source. The response also carries item-level fulfilment and promotion facts: - `weight` / `dimensions` -- Chewy's own shipping weight and package size as free text (`"40 pounds"`, `"8.46 x 11.02 x 0.39 inches"`). Both are absent on many items and are passed through rather than parsed into numbers and units. - `max_quantity` -- the per-order purchase limit. - `promotions[]` -- promotions currently attached to the item, each with `id`, `name`, `type` (Chewy's own category, e.g. `Spend $X` or `BOGO`), `short_description` and `long_description`. Omitted entirely when the item has none. Example response: ```json {"code":200,"msg":"OK","data":{"source_url":"https://www.chewy.com/api/pdp/graphql","fetched_at":"2026-08-20T10:00:00Z","product":{"entry_id":"185468","part_number":"158732","parent_entry_id":"185466","parent_part_number":"158730","name":"Frisco Lion Mane Dog & Cat Costume, Medium","description":"Your pet will be the king of the trick-or-treat jungle with this impressive lion's mane from Frisco by Chewy.","brand":"Frisco","brand_url":"https://www.chewy.com/brands/frisco-6767","slug":"frisco-lion-mane-dog-cat-costume","url":"https://www.chewy.com/frisco-lion-mane-dog-cat-costume/dp/185468","currency_code":"USD","price":15.99,"in_stock":true,"images":["https://image.chewy.com/catalog/general/images/frisco-lion-mane/img-570111.jpg"],"icons":[{"name":"Polyester","image_url":"https://image.chewy.com/icons/polyester.svg"}],"breadcrumbs":[{"id":"288","name":"Dog Supplies","url":"https://www.chewy.com/b/dog-288"}],"rating":4.0677,"rating_count":473,"rating_breakdown":[{"stars":5,"count":301},{"stars":1,"count":56}],"questions_count":1,"questions":[{"id":"UXVlc3Rpb246MQ==","text":"Does this run true to size?","answers":[{"id":"QW5zd2VyOjE=","text":"Yes, it fits true to size.","submitted_by":"srigaud","submitted_at":"2026-01-05T00:00:00.000Z","is_staff":true,"helpful_count":3}]}],"reviews":[{"id":"UmV2aWV3OjE3NzkyODA3","title":"Great costume!","text":"Purchased this lion head for my dog Remington and he loves it.","rating":5,"submitted_by":"Susan","submitted_at":"2025-08-17T17:39:31.000Z","helpful_count":10}]}}} ```
MCP tool chewy_product
/chewy/product-reviewsReturns one page of a Chewy product's customer reviews -- rating, title, body, author, submission date, helpful count, incentivized flag, and contributor badge -- with sorting and positive/negative filtering. chewy_product embeds only the first 20 reviews with no way to page past them; this endpoint reaches the whole set (products routinely carry thousands). id is the numeric id from any chewy.com PDP URL, and reviews are shared across a product's variants, so any variant's id returns the same set. total is the count for the current filter, so it drops when filter is applied, while rating_count stays the product's overall rating tally.
Response notes
- `total` is the review count **for the current filter**, so it drops when `filter` is applied. `rating_count` stays the product's overall rating tally and does not move with the filter. - `has_next_page` reports whether more reviews follow the current page. - `reviews[].photo_urls` carries any customer-submitted photos on the review. Combine with `sort=PHOTOS` to surface photo reviews first. - `part_number` is the parent product's part number, which may differ from the `id` you passed (that is the variant's own id). - A page past the end returns an empty `reviews` array rather than an error. - An id Chewy does not recognize returns a `404`; a non-numeric id, an out-of-range `limit`, or an invalid `sort`/`filter` returns a `400`. Example response: ```json { "code": 200, "msg": "OK", "data": { "part_number": "67742", "total": 9696, "page": 1, "page_size": 20, "count": 20, "has_next_page": true, "rating": 4.4, "rating_count": 22965, "reviews": [ { "id": "…", "title": "Stormie approved!", "text": "My dog stopped itching within two weeks…", "rating": 5, "submitted_by": "vscarberry", "submitted_at": "2026-08-20T14:02:11Z", "helpful_count": 12 } ], "source_url": "https://www.chewy.com/api/pdp/graphql", "fetched_at": "2026-09-07T03:00:00Z" } } ```
MCP tool chewy_product_reviews
/chewy/product-questionsReturns one page of a Chewy product's customer questions, each with its answers (text, author, date, staff flag, helpful count). chewy_product embeds only the first 20 questions with no way to page past them; this endpoint reaches the whole set. id is the numeric id from any chewy.com PDP URL, and questions are shared across a product's variants, so any variant's id returns the same set. Each question reports answers_total alongside its answers array, so a caller can tell when answers were truncated by answer_limit. Chewy offers no sort or filter on questions, so this endpoint deliberately exposes paging only.
Response notes
- Each question reports `answers_total` alongside its `answers` array, so a caller can tell when answers were truncated by `answer_limit`. - Chewy offers no sort or filter on questions, so this endpoint exposes paging only. - A question carries no author or date of its own -- those exist on answers only, which is why `questions[].answers[]` has `submitted_by`/`submitted_at` and the question itself does not. - A page past the end returns an empty `questions` array with `has_next_page: false`. - An id Chewy does not recognize returns a `404`; a non-numeric id or an out-of-range `limit`/`answer_limit` returns a `400`. Example response: ```json { "code": 200, "msg": "OK", "data": { "part_number": "67742", "total": 142, "page": 1, "page_size": 20, "count": 20, "has_next_page": true, "questions": [ { "id": "…", "text": "What is the difference between small breed and adult?", "answers_total": 3, "answers": [ { "text": "Small breed has smaller kibble size and more calories.", "submitted_by": "Elizabeth", "submitted_at": "2026-07-02T18:41:00Z", "helpful_count": 1 } ] } ], "source_url": "https://www.chewy.com/api/pdp/graphql", "fetched_at": "2026-09-07T04:00:00Z" } } ```
MCP tool chewy_product_questions
/chewy/variantsReturns 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.
Response notes
- `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. - An id Chewy does not recognize returns a `404`; a non-numeric id returns a `400`. Example response: ```json { "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" } } ```
MCP tool chewy_variants
/chewy/inventoryReturns Chewy's live warehouse inventory position for up to 20 products in one call, keyed by part number: the availability status, total units on hand, units inbound/in progress, units already reserved against unshipped orders, and the quantity actually available to the storefront. This is the only Chewy surface that carries real quantities -- every other endpoint in this family reports stock as a single boolean, so "36 units left" and "84,386 units left" are indistinguishable there. Quantities are live and move between calls. Part numbers Chewy does not return inventory for are reported in not_found; if none resolve the response is a 404.
Response notes
- `items[].status` is Chewy's own availability enum: `AVAILABLE`, `OUT_OF_STOCK`, `OUTSIDE_TNT` (stocked, but not deliverable to the requested destination inside the promised transit window). - `items[].quantity_on_hand` is total units physically in Chewy's warehouses; `items[].quantity_available_to_site` is what the storefront may actually sell, and is typically far lower. The latter is the figure that governs whether a product reads as in stock. - `items[].quantity_in_progress` is inbound units not yet on hand; `items[].quantity_reserved` is units already committed to unshipped orders. - Quantities are live and change between calls. - Part numbers Chewy returns no inventory for are listed in `not_found` rather than reported as zero stock, since zero would be a materially wrong answer. If none of the requested part numbers resolve, the response is a `404`. Example response: ```json { "code": 200, "msg": "OK", "data": { "count": 2, "items": [ { "part_number": "101143", "status": "AVAILABLE", "quantity_on_hand": 84383, "quantity_in_progress": 5493, "quantity_available_to_site": 11410, "available_date": "2026-09-06T14:25:54.247346Z" }, { "part_number": "4238414", "status": "AVAILABLE", "quantity_on_hand": 36, "quantity_available_to_site": 18 } ], "source_url": "https://www.chewy.com/api/item/v1/item/101143,4238414", "fetched_at": "2026-09-06T09:00:00Z" } } ```
MCP tool chewy_inventory
Related APIs
Marketplaces & Retail
Collect marketplace product signals from Amazon without building brittle storefront scrapers.
Marketplaces & Retail
Build resale, pricing, and marketplace workflows from structured eBay data.
Marketplaces & Retail
Turn public Shop.app product and merchant pages into structured JSON for e-commerce product intelligence, price research, shop monitoring, and marketplace discovery workflows.
Company coverage
Chewy, Inc. · CHWY
Chewy is operated by Chewy, Inc. (CHWY). Crawlora's SEC endpoints take the same company's CIK, so filings, financials, insider transactions and 13F holdings come from the same API key as the Chewy endpoints above.
SEC filings & financials API →How to scrape Chewy
Crawlora's Chewy endpoints return search, category browsing, product detail, and typeahead suggestions as normalized JSON with one API key — no Chewy account or login required.
Search by keyword, or browse a category by its numeric group_id for a paginated product grid with facets and breadcrumbs.
Pass a product's numeric id to the product endpoint for price, stock, images, rating breakdown, customer reviews, and Q&A — all embedded in one response.
Every breadcrumb and facet option in a category response carries its own group_id, so you can discover Chewy's full category tree from a single starting point.
Pass a partial term to the suggest endpoint for Chewy's own typeahead completions and, when available, a direct category/brand redirect URL.
Pass an item to /chewy/variants for the full roster of purchasable variants the product is sold in — every size, flavor, or color — each with its own part number, price, Autoship price, stock, images, and the option that distinguishes it. This answers what /chewy/product cannot: that endpoint describes only the single variant it was given and names its parent, but never lists the siblings or their prices.
Pass up to 20 part numbers to the inventory endpoint for Chewy's live warehouse position on each. This is the only Chewy endpoint carrying real stock quantities — every other one reports stock as a single boolean, so 36 units left and 84,386 units left are indistinguishable there. Read quantity_available_to_site rather than quantity_on_hand: the latter is total units physically in Chewy's warehouses, while the former is what the storefront may actually sell and is what governs whether a product reads as in stock. Part numbers Chewy returns nothing for come back under not_found rather than as zero stock, since zero would be a materially wrong answer.
Pass up to 20 part numbers to /chewy/item-attributes for Chewy's own specification table for each, together with its handling and compliance flags, bundle structure, Autoship cadence, and catalog group membership. It reads a Chewy JSON API rather than the DOM, and complements rather than repeats the product endpoints — price, rating, images, reviews, and marketing copy stay there, and the attribute table is available from neither.
/chewy/product embeds only the first 20 reviews and 20 questions with no way to page past them. Pass the same product id to /chewy/product-reviews for the full review set (sortable, and filterable to positive-only or negative-only) or to /chewy/product-questions for the full question set with each question's answers — both page past what the product endpoint truncates, on products that routinely carry thousands of reviews.
FAQ
Send a free-text keyword to Crawlora's /chewy/search endpoint and get normalized product listings back — price, Autoship price, stock, rating — as structured JSON.
No. These endpoints read Chewy's public search, category, and product pages and require only your Crawlora API key.
Yes. /chewy/product embeds a product's first 20 reviews and first 20 questions in the same response as price and stock. To reach the rest — products routinely carry thousands of reviews — page through /chewy/product-reviews (sortable, filterable to positive- or negative-only) or /chewy/product-questions (each question with its full answer list) instead.
Use /chewy/variants. The product endpoint describes only the single variant it was given and names its parent product without listing the siblings, so the variant roster — each with its own part number, price, Autoship price, stock, images, and distinguishing option — comes from the variants endpoint instead.
Yes, from the inventory endpoint — and only from there. It returns Chewy's live warehouse position for up to 20 part numbers at a time: quantity on hand, quantity available to the site, inbound units in progress, and units reserved against unshipped orders, plus Chewy's own availability enum (AVAILABLE, OUT_OF_STOCK, or OUTSIDE_TNT — stocked, but not deliverable to the requested destination inside the promised transit window). Every other Chewy endpoint reduces stock to a boolean. Quantities are live and move between calls.
/chewy/item-attributes returns Chewy's own specification table for up to 20 products in one call, keyed by part number, alongside each item's handling and compliance flags, bundle structure, Autoship cadence, and catalog group membership. It is sourced from a Chewy JSON API rather than DOM scraping, and no other endpoint in this family carries that structured attribute table.
No. Chewy doesn't offer a general-purpose product-data API. Crawlora's endpoints read the same public search, category, and product pages a shopper sees.