{
  "openapi": "3.0.1",
  "info": {
    "title": "🚀 Woolworths Scraper · 5,000 Free Products/Month",
    "description": "Woolworths Scraper gets you Woolworths data ⚡ fast, 🎯 100% accurate and 🔍 ridiculously detailed — products, prices, specials & stock from any search, category or barcode. 💰 $1 per 1,000 products, no start fee. Scrape your first 5,000 products free every month 🚀",
    "version": "0.0",
    "x-build-id": "cfqCRCUK6z8oA6zd4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/omkar-cloud~woolworths-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-omkar-cloud-woolworths-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/omkar-cloud~woolworths-scraper/runs": {
      "post": {
        "operationId": "runs-sync-omkar-cloud-woolworths-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/omkar-cloud~woolworths-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-omkar-cloud-woolworths-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": {
          "searchQueries": {
            "title": "Search Keywords",
            "type": "array",
            "description": "Keywords to search on Woolworths — each is searched separately. Rows carry a `query` field so you can tell keywords apart. Leave empty to scrape only categories, specials, barcodes or URLs.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Categories or subcategories to scrape. Each entry is a slug path (bakery/packaged-bread-bakery), a category ID (1_DEB537E) or a woolworths.com.au browse URL (https://www.woolworths.com.au/shop/browse/bakery). Rows carry a `category_input` field.",
            "items": {
              "type": "string"
            }
          },
          "specials": {
            "title": "Specials Shelf",
            "enum": [
              "none",
              "half_price",
              "lower_shelf_price",
              "everyday_low_price",
              "buy_more_save_more",
              "online_only_specials",
              "seasonal_price",
              "bundles"
            ],
            "type": "string",
            "description": "Also scrape this Woolworths specials shelf — every product currently on it. Rows carry a `specials_input` field. The shelves change with the weekly catalogue; a shelf that is not running this week returns no rows.",
            "default": "none"
          },
          "barcodes": {
            "title": "Barcodes",
            "type": "array",
            "description": "Product barcodes (EAN / UPC / GTIN, 8 to 14 digits) to look up, one product each. Example: 9300617064879. Rows carry a `barcode_input` field. A barcode Woolworths does not sell is skipped and not billed.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Woolworths URLs",
            "type": "array",
            "description": "Product, browse and/or search page URLs — you can mix them. Rows carry an `input_url` field. Product pages are always scraped with full details (billed at the detailed-product rate).",
            "items": {
              "type": "string"
            }
          },
          "specialsOnly": {
            "title": "Specials Only",
            "type": "boolean",
            "description": "Only include products that are on special right now. Applies to searches and categories (a specials shelf is all specials already).",
            "default": false
          },
          "filterBrands": {
            "title": "Filter by Brands",
            "maxItems": 10,
            "type": "array",
            "description": "Only include products of these brands, up to 10. Spell them as Woolworths does. Example: Cadbury, Lindt.",
            "items": {
              "type": "string"
            }
          },
          "dietary": {
            "title": "Dietary",
            "type": "array",
            "description": "Only include products that carry ALL of these dietary and lifestyle claims.",
            "items": {
              "type": "string",
              "enum": [
                "gluten_free",
                "halal",
                "high_fibre",
                "high_protein",
                "kosher",
                "low_fat",
                "low_salt",
                "low_saturated_fat",
                "low_sugar",
                "no_caffeine",
                "organic",
                "source_of_fibre",
                "source_of_protein",
                "vegan",
                "vegetarian",
                "wholegrain"
              ],
              "enumTitles": [
                "Gluten free",
                "Halal",
                "High fibre",
                "High protein",
                "Kosher",
                "Low fat",
                "Low salt",
                "Low saturated fat",
                "Low sugar",
                "No caffeine",
                "Organic",
                "Source of fibre",
                "Source of protein",
                "Vegan",
                "Vegetarian",
                "Wholegrain"
              ]
            }
          },
          "allergens": {
            "title": "Allergens",
            "type": "array",
            "description": "Only include products that carry ALL of these allergen-free claims.",
            "items": {
              "type": "string",
              "enum": [
                "crustacea_free",
                "dairy_free",
                "egg_free",
                "fish_free",
                "gluten_free",
                "lactose_free",
                "no_artificial_colours_or_flavours",
                "no_artificial_preservatives",
                "peanut_free",
                "sesame_free",
                "soy_free",
                "tree_nut_free",
                "wheat_free"
              ],
              "enumTitles": [
                "Crustacea free",
                "Dairy free",
                "Egg free",
                "Fish free",
                "Gluten free",
                "Lactose free",
                "No artificial colours or flavours",
                "No artificial preservatives",
                "Peanut free",
                "Sesame free",
                "Soy free",
                "Tree nut free",
                "Wheat free"
              ]
            }
          },
          "healthStarRatings": {
            "title": "Health Star Ratings",
            "type": "array",
            "description": "Only include products with one of these Health Star Ratings.",
            "items": {
              "type": "string",
              "enum": [
                "0.5",
                "1",
                "1.5",
                "2",
                "2.5",
                "3",
                "3.5",
                "4",
                "4.5",
                "5"
              ],
              "enumTitles": [
                "0.5 stars",
                "1 stars",
                "1.5 stars",
                "2 stars",
                "2.5 stars",
                "3 stars",
                "3.5 stars",
                "4 stars",
                "4.5 stars",
                "5 stars"
              ]
            }
          },
          "sortBy": {
            "title": "Sort By",
            "enum": [
              "",
              "relevance",
              "price_asc",
              "price_desc",
              "unit_price_asc",
              "unit_price_desc",
              "name_asc",
              "name_desc",
              "newest"
            ],
            "type": "string",
            "description": "Order of results. Default keeps Woolworths' own relevance order. Unit price sorts by the comparison price (per 100g, per litre, …).",
            "default": ""
          },
          "maxResultsPerInput": {
            "title": "Max Products per Input",
            "minimum": 1,
            "maximum": 18000,
            "type": "integer",
            "description": "Maximum number of products to scrape per keyword, category, specials shelf or listing URL. Use this to control your cost (1,000 products ≈ $1). Woolworths serves at most 18,000 products per listing (500 pages of 36). Ignored for barcodes and product page URLs.",
            "default": 100
          },
          "includeDetails": {
            "title": "Scrape Full Product Details",
            "type": "boolean",
            "description": "When enabled, every product is also scraped in full — long description, ingredients, nutrition panel, country of origin, storage and usage instructions, warnings, image gallery, dimensions, and (for Everyday Market items) variants and delivery terms. Still one dataset row per product, billed at the detailed-product rate (1,000 detailed products ≈ $3 vs $1 standard). Runs take longer because each product page is fetched individually.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}