{
  "openapi": "3.0.1",
  "info": {
    "title": "Chewy Scraper — Prices, Autoship, Pet Food Attributes & Reviews",
    "description": "Scrape Chewy product pages and category listings: regular and Autoship prices for every variant, price per kg, stock, pet type, category path, life stage, breed size, food form, special diets, guaranteed analysis, ingredients and reviews.",
    "version": "0.1",
    "x-build-id": "sqkEHw0JRgEX0aFhk"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/blueskyscraper~chewy-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-blueskyscraper-chewy-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/blueskyscraper~chewy-scraper/runs": {
      "post": {
        "operationId": "runs-sync-blueskyscraper-chewy-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/blueskyscraper~chewy-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-blueskyscraper-chewy-scraper",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "title": "🧭 What to scrape",
            "enum": [
              "products",
              "category",
              "catalog",
              "search",
              "sitemap"
            ],
            "type": "string",
            "description": "📦 Product pages: one full row per product (all variants, regular and Autoship price, pet type, category path, life stage, breed size, food form, special diets). 🗂️ Category and 🔍 Search: listing rows with price, Autoship price, rating, seller claims, New and Deal flags, position. 📚 Whole catalog: every product family in Chewy's dog food and treats (~14,500) in a stable order. 🧭 Sitemap: every product id and name Chewy publishes (~280,000), filtered by scope — the cheap way to spot new SKUs. Turn on 🔎 Full details to get full product rows for listed products.",
            "default": "products"
          },
          "productUrls": {
            "title": "📦 Product URLs",
            "type": "array",
            "description": "Chewy product pages, e.g. <code>https://www.chewy.com/wellness-core-grain-free-reduced-fat/dp/34344</code>, or bare product ids (<code>34344</code>). Used by 📦 Product pages.",
            "items": {
              "type": "string"
            }
          },
          "categoryUrls": {
            "title": "🗂️ Category URLs",
            "type": "array",
            "description": "Chewy category pages, e.g. <code>https://www.chewy.com/b/dry-food-294</code>, <code>https://www.chewy.com/b/treats-335</code>. Up to 20 per run. Filters in the URL (<code>?rh=…</code>) cannot be applied — the whole category is returned and a free notice row says so; use a sub-category URL to narrow it. Chewy lists at most 10,000 products per category. Used by 🗂️ Category.",
            "items": {
              "type": "string"
            }
          },
          "searchQueries": {
            "title": "🔍 Search keywords",
            "type": "array",
            "description": "Keywords as a shopper types them, e.g. <code>freeze dried dog food</code>, <code>dog food topper</code>. Up to 20 per run. Used by 🔍 Search.",
            "items": {
              "type": "string"
            }
          },
          "catalogScope": {
            "title": "📚 Catalog scope",
            "enum": [
              "dog_food_and_treats",
              "dog_food",
              "dog_treats"
            ],
            "type": "string",
            "description": "📚 Whole catalog: which part of Chewy to read.",
            "default": "dog_food_and_treats"
          },
          "sitemapScope": {
            "title": "🧭 Sitemap scope",
            "enum": [
              "dog_food_and_treats",
              "all_dog",
              "pet_food_all_species",
              "all"
            ],
            "type": "string",
            "description": "🧭 Sitemap: which products to keep, judged by the product name.",
            "default": "dog_food_and_treats"
          },
          "sitemapKeywords": {
            "title": "🧭 Sitemap keywords",
            "type": "array",
            "description": "Optional: keep only names containing any of these words, e.g. <code>freeze-dried</code>, <code>topper</code>.",
            "items": {
              "type": "string"
            }
          },
          "onlyNew": {
            "title": "🆕 Only new products",
            "type": "boolean",
            "description": "With 🔁 Previous dataset id: write only products that were not in that dataset — new SKUs since the last run. Works in Category, Whole catalog, Search and Sitemap modes.",
            "default": false
          },
          "maxPages": {
            "title": "📄 Pages per category or keyword",
            "minimum": 1,
            "maximum": 300,
            "type": "integer",
            "description": "Category and Search: about 36 products per page. 📚 Whole catalog always reads to the end (limited only by 💯 Max products).",
            "default": 1
          },
          "sort": {
            "title": "↕️ Sort order",
            "enum": [
              "byNewest",
              "byRelevance",
              "byPopularity",
              "byLowestPrice",
              "byHighestPrice"
            ],
            "type": "string",
            "description": "Order of category and catalog listings. Newest first is stable between runs (Chewy's default relevance order shifts, so a pass on it can skip products).",
            "default": "byNewest"
          },
          "includeDetails": {
            "title": "🔎 Full details for listed products",
            "type": "boolean",
            "description": "Category and Search: instead of a listing row, write a full product row (charged as a product) for each listed product.",
            "default": false
          },
          "maxItems": {
            "title": "💯 Max products",
            "minimum": 1,
            "maximum": 30000,
            "type": "integer",
            "description": "Upper limit of product and listing rows for the whole run (reviews, errors and notices are not counted). Chewy itself lists at most 10,000 products per category, so above that add several categories.",
            "default": 100
          },
          "maxConcurrency": {
            "title": "⚡ Parallel requests",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many product cards (with their reviews) are fetched at the same time. More is faster for long lists; listing pages are always read in order.",
            "default": 3
          },
          "petType": {
            "title": "🐾 Pet type",
            "enum": [
              "any",
              "Dog",
              "Cat"
            ],
            "type": "string",
            "description": "Keep only products Chewy tags for this pet. Applies to full product rows (pet type comes from Chewy's own attribute, not from the title); skipped products do not use up 💯 Max products. Listing rows show the pet of their category and are not filtered.",
            "default": "any"
          },
          "includeVariants": {
            "title": "📏 Include variants",
            "type": "boolean",
            "description": "Every size of the product with its own SKU, price, Autoship price, net weight, price per kg and stock.",
            "default": true
          },
          "includeComposition": {
            "title": "🧪 Guaranteed analysis and ingredients",
            "type": "boolean",
            "description": "Adds the guaranteed analysis table and the full ingredients list from the product page. Slower and charged as a product with composition.",
            "default": false
          },
          "includeReviews": {
            "title": "⭐ Add reviews",
            "type": "boolean",
            "description": "After each full product row, writes its newest reviews as separate rows (author names are never stored).",
            "default": false
          },
          "maxReviews": {
            "title": "⭐ Max reviews per product",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Newest first.",
            "default": 20
          },
          "reviewsSince": {
            "title": "📅 Only reviews since",
            "type": "string",
            "description": "Optional date (YYYY-MM-DD). Only reviews submitted on or after it; paging stops at the first older one."
          },
          "outputFormat": {
            "title": "🗜️ Output format",
            "enum": [
              "full",
              "compact"
            ],
            "type": "string",
            "description": "Full: every row carries the data-contract blocks (metrics with units and absence reasons, provenance with run id, checksum and timestamps). Compact: the same data fields without those blocks and without long seller texts — several times smaller for exports of tens of thousands of rows.",
            "default": "full"
          },
          "previousDatasetId": {
            "title": "🔁 Previous dataset id (change tracking)",
            "type": "string",
            "description": "Dataset id of an earlier run. Each row then gets previousPrice, priceChange, stockChanged, ratingCountDelta and isNew against that snapshot. Pick the dataset of your earlier run of this Actor (or paste its ID) — the Actor gets read-only access to that one dataset. Left empty or unreadable, the run still returns all data, just without the change fields."
          },
          "requestDelaySecs": {
            "title": "⏱️ Delay between products (seconds)",
            "minimum": 0,
            "maximum": 30,
            "type": "integer",
            "description": "Pause between pages or products. Raise it if the site starts refusing requests.",
            "default": 2
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}