{
  "openapi": "3.0.1",
  "info": {
    "title": "Woolworths Scraper: Australia Grocery Prices and Specials",
    "description": "Scrape Woolworths Australia products and prices by keyword, category, specials or stock code: price, was price, half price and multi buy, unit price per kg or litre, in store price, stock, barcode, ingredients, nutrition, health star rating. Monitor mode returns price changes only.",
    "version": "0.1",
    "x-build-id": "JfIgmlYvRN4vDhBE4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/themineworks~woolworths-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-themineworks-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/themineworks~woolworths-scraper/runs": {
      "post": {
        "operationId": "runs-sync-themineworks-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/themineworks~woolworths-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-themineworks-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": "Keywords",
            "type": "array",
            "description": "Products as you would type them in the woolworths.com.au search box, one per line. Example: milk, coffee beans, nappies. Each keyword reads Woolworths' search results, 36 per page, up to Max products per list. Any Woolworths link (product, category, search) works here too. Up to 100 searches per run.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories (optional)",
            "type": "array",
            "description": "Woolworths categories by name (Milk, Dairy, Eggs & Fridge, Soft Drinks), slug path (dairy-eggs-fridge/milk), node id (1_6E4F4E4) or link (https://www.woolworths.com.au/shop/browse/dairy-eggs-fridge/milk). A department includes its categories. Write all to read every grocery department.",
            "items": {
              "type": "string"
            }
          },
          "specials": {
            "title": "Specials",
            "enum": [
              "none",
              "all",
              "halfprice",
              "multibuy",
              "lowershelfprice",
              "seasonal",
              "onlineonly",
              "everydaylowprice"
            ],
            "type": "string",
            "description": "Read Woolworths' specials lists. All: half price, buy more save more, lower shelf price, seasonal and online only specials together (Everyday Low Price is a standing price; pick it on its own). Woolworths changes its specials on Wednesday.",
            "default": "none"
          },
          "productUrls": {
            "title": "Product links or stock codes (optional)",
            "type": "array",
            "description": "Woolworths product links (https://www.woolworths.com.au/shop/productdetails/44528/norco-full-cream-milk) or stock codes (44528), 60 per call. Built for one record at a time from Clay, n8n or an AI agent, and for watch lists of thousands of products.",
            "items": {
              "type": "string"
            }
          },
          "fullCatalogue": {
            "title": "Read the full catalogue",
            "type": "boolean",
            "description": "On: every Woolworths grocery department (24,864 products in our test). Max products per list does not limit it; use the run's max cost to cap the spend.",
            "default": false
          },
          "maxItems": {
            "title": "Max products per list",
            "minimum": 1,
            "maximum": 30000,
            "type": "integer",
            "description": "The most products to return for each keyword, category or specials list, 1 to 30,000. Product links are not limited by this. Example: 500.",
            "default": 100
          },
          "sortBy": {
            "title": "Sort order",
            "enum": [
              "relevance",
              "price_asc",
              "price_desc",
              "unit_price_asc",
              "unit_price_desc",
              "name_asc"
            ],
            "type": "string",
            "description": "Order of the results, as on woolworths.com.au. Empty: relevance for keywords, name A to Z for categories and specials (stable between runs)."
          },
          "specialsOnly": {
            "title": "Specials only",
            "type": "boolean",
            "description": "On: keywords and categories return only the products currently on special.",
            "default": false
          },
          "includeSponsored": {
            "title": "Keep sponsored products",
            "type": "boolean",
            "description": "Woolworths mixes paid placements into its results. On: they are kept and marked is_sponsored. Off: they are left out and not charged.",
            "default": true
          },
          "includeEverydayMarket": {
            "title": "Include Everyday Market listings",
            "type": "boolean",
            "description": "Everyday Market is Woolworths' marketplace of third party sellers, shipped by the seller and not sold in stores. Off (default): searches and categories show the supermarket range only. On: marketplace listings are included and marked is_marketplace.",
            "default": false
          },
          "monitorMode": {
            "title": "Monitor mode: only what changed since the last run",
            "type": "boolean",
            "description": "On: the actor remembers the last price of every product it delivered (under the monitor name) and returns only products whose price or was price changed, with previous_price, price_change and price_change_percent, plus new products. Unchanged products are not delivered and not charged. Run it on a schedule with the same input.",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Keeps separate price memories for separate watch lists, for example dairy-nsw. Letters, numbers and dashes. Only used in monitor mode.",
            "default": "default"
          },
          "monitorWatch": {
            "title": "What counts as a change",
            "enum": [
              "price",
              "all"
            ],
            "type": "string",
            "description": "Price: price and was price only. All: also the in store price, a special or multi buy offer starting, ending or changing, and a product going in or out of stock.",
            "default": "price"
          },
          "includeNewProducts": {
            "title": "Return new products in monitor mode",
            "type": "boolean",
            "description": "On: products the monitor has not seen before are returned with change_type new (on the first run, that is every product). Off: they are saved as the baseline and not returned or charged, so the first run costs nothing per product.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify datacenter proxy by default, which Woolworths answered on every call in our tests.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}