{
  "openapi": "3.0.1",
  "info": {
    "title": "Coles, Woolworths & ALDI Scraper — AUS Grocery Prices",
    "description": "Scrape Coles, Woolworths and ALDI Australia: price, was-price, unit price, specials and multi-buys, availability, brand, size, category, barcode and image for any search, category, specials list or product. Price-change monitor mode.",
    "version": "0.1",
    "x-build-id": "e7GUdIJRGo6rnh9FS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/griffie~coles-woolworths-aldi-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-griffie-coles-woolworths-aldi-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/griffie~coles-woolworths-aldi-scraper/runs": {
      "post": {
        "operationId": "runs-sync-griffie-coles-woolworths-aldi-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/griffie~coles-woolworths-aldi-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-griffie-coles-woolworths-aldi-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": {
          "retailers": {
            "title": "Retailers",
            "type": "array",
            "description": "Which supermarkets to search (used for search terms and \"All current specials\"). URLs and prefixed product IDs always go to their own retailer.",
            "items": {
              "type": "string",
              "enum": [
                "coles",
                "woolworths",
                "aldi"
              ],
              "enumTitles": [
                "Coles",
                "Woolworths",
                "ALDI"
              ]
            },
            "default": [
              "coles",
              "woolworths",
              "aldi"
            ]
          },
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Products to search for, e.g. \"milk\", \"Vegemite\", \"nappies\". Each term is searched at every selected retailer.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Category, search or product URLs",
            "type": "array",
            "description": "Paste any Coles, Woolworths or ALDI URL: a category (coles.com.au/browse/dairy-eggs-fridge/milk, woolworths.com.au/shop/browse/pantry, aldi.com.au/products/pantry/k/970000000), a search results page, a specials page (coles.com.au/on-special) or a product page.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "productIds": {
            "title": "Product IDs",
            "type": "array",
            "description": "Look up specific products: \"coles:7265535\", \"woolworths:88436\", \"aldi:000000000538441002\". Product URLs work too.",
            "items": {
              "type": "string"
            }
          },
          "scrapeSpecials": {
            "title": "All current specials",
            "type": "boolean",
            "description": "Also scrape the current specials catalogue of every selected retailer (Coles \"On Special\", Woolworths specials in every department, ALDI Super Savers and Limited Time Only). Limited by Max products per search.",
            "default": false
          },
          "specialsOnly": {
            "title": "Specials only",
            "type": "boolean",
            "description": "Only return products that are on special (price drops, multi-buys, half price). Applied to searches and categories.",
            "default": false
          },
          "maxItemsPerTarget": {
            "title": "Max products per search / category / specials",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Stop each search term, category or specials list after this many products. In monitor mode this counts products checked (changed or not), so every run watches the same products.",
            "default": 100
          },
          "maxItems": {
            "title": "Max products in total",
            "minimum": 0,
            "type": "integer",
            "description": "Stop the whole run after this many products (0 = no limit). You are never charged for more than this.",
            "default": 0
          },
          "includeSponsored": {
            "title": "Include sponsored listings",
            "type": "boolean",
            "description": "Keep paid/sponsored placements that the retailer mixes into results (they are marked isSponsored). Off by default because they repeat across searches.",
            "default": false
          },
          "monitorMode": {
            "title": "Price-change monitor",
            "type": "boolean",
            "description": "Remember prices between runs and only return products whose price, was-price, special or availability changed (plus products seen for the first time). Unchanged products are not saved and not charged. Schedule the same input daily or weekly.",
            "default": false
          },
          "monitorIncludeNew": {
            "title": "Return products seen for the first time",
            "type": "boolean",
            "description": "In monitor mode, also return products the monitor has never seen (always true on the first run you want a baseline). Turn off to get only real changes.",
            "default": true
          },
          "monitorStoreName": {
            "title": "Monitor memory name",
            "type": "string",
            "description": "Named key-value store that holds remembered prices. Use a different name for each separate watch-list.",
            "default": "au-grocery-price-monitor"
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many searches/categories run in parallel.",
            "default": 4
          },
          "maxRetries": {
            "title": "Max retries per request",
            "minimum": 0,
            "maximum": 15,
            "type": "integer",
            "description": "Retries on a fresh IP when a request is blocked or fails.",
            "default": 6
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify datacenter proxy (default) works for all three retailers. Coles blocks most servers without a proxy.",
            "default": {
              "useApifyProxy": true
            }
          },
          "fallbackToResidential": {
            "title": "Fall back to residential proxies",
            "type": "boolean",
            "description": "If a retailer keeps blocking datacenter IPs, switch that retailer to Apify residential proxies (Australia) automatically.",
            "default": true
          },
          "debugLog": {
            "title": "Debug log",
            "type": "boolean",
            "description": "Verbose logging.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}