# Chewy.com Scraper (`arcana/chewy-com-scraper`) Actor

Search Chewy.com by name and scrape full product pages (metadata, rating, reviews, categories, variant links, images).

- **URL**: https://apify.com/arcana/chewy-com-scraper.md
- **Developed by:** [Arcana](https://apify.com/arcana) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 23 total users, 7 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

$5.00 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Chewy.com Scraper 🐾

Scrape [Chewy.com](https://www.chewy.com) by **product name** or **URL** and get the
**full product page** — not just a search listing. Titles, both prices (one-time +
Autoship), deal flags, ratings, reviews count, every package **variant** (size &
color, with links), the complete **image gallery**, specifications, dimensions,
GTIN/barcode, the full description and the "About This Item" blocks (care
**Instructions** and **Size** charts).

No proxy, anti-bot, or captcha setup — it's all handled for you. Just send queries.

### Features

- 🔎 **Search by name** — pass product names and get the matching products.
- 📄 **Full product detail** — scrapes the actual product page, not only the search card.
- 💰 **Both prices** — one-time ("buy once") **and** Autoship (subscription), with
  discount %, list/strike price and price-per-unit.
- 🎁 **Deal & status flags** — `isDeal` plus `prescription`, `giftCard`, `bundle`,
  `new`, `discontinued`, `chewyExclusive`.
- 🧩 **All variants** — every size/color pack with its own `productId` + URL; optionally
  scrape each variant in full.
- 🖼️ **Full image gallery**, ⭐ **rating + review count**, 🏷️ **GTIN/barcode**.
- 📋 **Specifications, dimensions & "About This Item"** — including care
  **Instructions** and **Size**-chart tables (as markdown).
- 🧱 **Breadcrumb categories**, 📝 **full description** (the "See more" Details text).
- 🚫 **Exclusions** — skip products by id or by keyword.
- 🔗 **Direct URLs** — feed product (`/dp/...`) or search (`/s?query=...`) URLs.

### Input

| Field | Type | Description |
| --- | --- | --- |
| `queries` | string\[] | Product names to search for. Each becomes a Chewy search. |
| `productIds` | string\[] | Scrape specific products by id (e.g. `141437`) — no URL needed. |
| `startUrls` | object\[] | Direct Chewy URLs. `/dp/` → product, `/s?query=` → search. |
| `maxItems` | integer | Maximum number of products to scrape (0 = no limit). |
| `excludeProductIds` | string\[] | Skip these products, by id (e.g. `141437`) or `/dp/` URL. |
| `excludeKeywords` | string\[] | Skip products whose name contains any of these (case-insensitive). |
| `scrapeVariants` | boolean | Also scrape every package variant of each product as its own item. |
| `includeSearchResults` | boolean | Also save the lighter search-result cards (off by default). |
| `maxConcurrency` | integer | Parallel requests (default 5). |

#### Example input

```json
{
  "queries": ["Pedigree Complete Nutrition Roasted"],
  "productIds": ["141437", "371139"],
  "maxItems": 20,
  "excludeKeywords": ["Puppy", "Wet Food"]
}
```

### Output

By default the dataset holds **one full record per product** (`type: "product"`):

| Field | Description |
| --- | --- |
| `productId`, `url`, `title`, `brand` | Identity |
| `price`, `autoshipPrice`, `autoshipDiscountPct`, `listPrice`, `perUnitPrice`, `currency` | Pricing (one-time + subscription) |
| `isDeal`, `isNew` | Headline flags (also mirrored inside `flags`) |
| `flags` | All boolean flags in one object: `{deal, new, ad, prescription, giftCard, bundle, discontinued, chewyExclusive, rx}` |
| `rating`, `reviewCount`, `inStock` | Popularity & availability |
| `gtin` | Barcode (UPC/EAN) |
| `categories[]` | Breadcrumbs `{name, url}` |
| `images[]` | Full image gallery |
| `variants[]` | Package variants `{label, productId, url}` |
| `specifications{}` | Name/value specs (Made In, Lifestage, …) |
| `dimensions` | Physical size string |
| `aboutThisItem[]` | "About This Item" blocks `{name, content}` — e.g. **Instructions** and **Size**; `content` is **HTML** (lists as `<ul>`, the size chart as a `<table>`) |
| `description` | Full product description |

Enable `includeSearchResults` to also save search cards (`type: "search_result"`):
`productId, url, brand, name, price, autoshipPrice, autoshipDiscountPct, listPrice,
listDiscountPct, pricePerUnit, currency, rating, reviewCount, image, inStock, isDeal,
isNew, isAd, flags`.

#### Example product record

```json
{
  "type": "product",
  "productId": "371139",
  "url": "https://www.chewy.com/dp/371139",
  "title": "Green Lifestyle Printed Reusable Cat & Dog Pee Pads, Blue & White, 30 x 34-in, 2 count",
  "brand": "Green Lifestyle",
  "price": 20.49,
  "autoshipPrice": 19.47,
  "autoshipDiscountPct": 5,
  "listPrice": null,
  "perUnitPrice": "$10.25",
  "currency": "USD",
  "isDeal": true,
  "isNew": false,
  "flags": { "deal": true, "new": false, "ad": false, "prescription": false, "giftCard": false, "bundle": false, "discontinued": false, "chewyExclusive": false, "rx": false },
  "gtin": "672288001279",
  "rating": 4.65,
  "reviewCount": 973,
  "inStock": true,
  "categories": [{ "name": "Dog Supplies", "url": "https://www.chewy.com/b/dog-288" }],
  "images": ["https://image.chewy.com/.../068cd739._AC_SS600_V1_.jpg"],
  "variants": [
    { "label": "...34 x 36-in, 2 count", "productId": "371143", "url": "https://www.chewy.com/.../dp/371143" }
  ],
  "specifications": { "Made In": "China", "Potty Feature": "Washable" },
  "dimensions": "30 x 34 x 0.3 inches",
  "aboutThisItem": [
    { "name": "Instructions", "content": "<ul>\n<li>Washing instructions: Machine wash, rinse well. Tumble dry, remove promptly.</li>\n<li>Do not use fabric softener.</li>\n</ul>" },
    { "name": "Size", "content": "<table>\n<thead><tr><th>Size</th><th>Length</th><th>Width</th></tr></thead>\n<tbody><tr><td>30 x 34-in</td><td>30 inches</td><td>34 inches</td></tr></tbody>\n</table>" }
  ],
  "description": "Protect your home from a variety of pet messes…"
}
```

The dataset has ready-made **Products** and **Search results** views in the Console.

### Use cases

- **Price & deal monitoring** — track one-time vs. Autoship prices, discounts and deals.
- **Catalog & MAP compliance** — full specs, variants, GTINs and images per product.
- **Market research** — ratings, review counts and category coverage by brand.
- **Content & feeds** — ready product data (description, images, size charts) for listings.

### FAQ

**Do I need proxies or an anti-bot solution?** No. Chewy's bot protection is handled
internally — you only provide queries/URLs.

**Does it scrape full product pages or just search listings?** Full product pages,
including variants, specifications, images and the "About This Item" sections — not
only the search card.

**Can it get every pack size / color?** Yes — all variants are listed with links, and
`scrapeVariants` will scrape each one as a full product.

**How many products can I scrape?** Use `maxItems` to cap a run; 0 means no limit.

**Is a product on sale?** The `isDeal` flag and the discount-percentage fields tell you.

**How do I exclude products?** Use `excludeProductIds` (by id/URL) or `excludeKeywords`
(by name).

# Actor input Schema

## `queries` (type: `array`):

Product names to search for on Chewy. Each becomes a https://www.chewy.com/s?query=... request.

## `startUrls` (type: `array`):

Direct Chewy URLs. Product pages (containing /dp/) are scraped as products; search pages (/s?query=) are scraped as search results.

## `productIds` (type: `array`):

Scrape specific products by Chewy product id (e.g. 141437) — no URL needed. A /dp/ URL is also accepted. Each is scraped as a full product.

## `maxItems` (type: `integer`):

Maximum number of product pages to scrape (0 = no limit). Each Web Unblocker request is billed, so keep this sane.

## `excludeProductIds` (type: `array`):

Products to skip, by Chewy product id (e.g. 141437) or full /dp/ URL. Skipped in both search results and product scraping.

## `excludeKeywords` (type: `array`):

Skip any product whose name contains one of these (case-insensitive substring), e.g. "Puppy" or "Wet Food".

## `scrapeVariants` (type: `boolean`):

If enabled, each package variant (size/flavor) found on a product page is also enqueued and scraped as a full product.

## `includeSearchResults` (type: `boolean`):

By default only full product pages are saved. Enable to also save the lighter search-result cards (type=search\_result) in the dataset.

## `maxConcurrency` (type: `integer`):

Parallel requests. Higher = faster but more load; the default is tuned for the built-in unblocker plan.

## Actor input object example

```json
{
  "queries": [
    "Pedigree Complete Nutrition Roasted"
  ],
  "startUrls": [
    {
      "url": "https://www.chewy.com/pedigree-complete-nutrition-grilled/dp/141437"
    }
  ],
  "productIds": [],
  "maxItems": 0,
  "excludeProductIds": [],
  "excludeKeywords": [],
  "scrapeVariants": false,
  "includeSearchResults": false,
  "maxConcurrency": 5
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "queries": [
        "Pedigree Complete Nutrition Roasted"
    ],
    "startUrls": [
        {
            "url": "https://www.chewy.com/pedigree-complete-nutrition-grilled/dp/141437"
        }
    ],
    "productIds": [],
    "excludeProductIds": [],
    "excludeKeywords": []
};

// Run the Actor and wait for it to finish
const run = await client.actor("arcana/chewy-com-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "queries": ["Pedigree Complete Nutrition Roasted"],
    "startUrls": [{ "url": "https://www.chewy.com/pedigree-complete-nutrition-grilled/dp/141437" }],
    "productIds": [],
    "excludeProductIds": [],
    "excludeKeywords": [],
}

# Run the Actor and wait for it to finish
run = client.actor("arcana/chewy-com-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "Pedigree Complete Nutrition Roasted"
  ],
  "startUrls": [
    {
      "url": "https://www.chewy.com/pedigree-complete-nutrition-grilled/dp/141437"
    }
  ],
  "productIds": [],
  "excludeProductIds": [],
  "excludeKeywords": []
}' |
apify call arcana/chewy-com-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,arcana/chewy-com-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Q8MIvZHCq8KDwF8Z1/builds/blGwVdzNBb1KbOEUk/openapi.json
