{
  "openapi": "3.0.1",
  "info": {
    "title": "Aldi Australia Price Scraper & Tracker: Special Buys",
    "description": "Aldi Australia shelf prices by keyword, category or product page, Special Buys drops, and a watch mode that returns only added or changed prices. Coles and Woolworths are not available at the moment.",
    "version": "0.1",
    "x-build-id": "g1cCASsLSsZ8mr9DI"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yappman~au-supermarket-price-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yappman-au-supermarket-price-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/yappman~au-supermarket-price-scraper/runs": {
      "post": {
        "operationId": "runs-sync-yappman-au-supermarket-price-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/yappman~au-supermarket-price-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-yappman-au-supermarket-price-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 shops to search in search mode (other modes ignore it). Allowed values: aldi_au, coles, woolworths. The default and only available value is aldi_au; coles and woolworths are accepted but skipped (not available at the moment).",
            "items": {
              "type": "string",
              "enum": [
                "coles",
                "woolworths",
                "aldi_au"
              ],
              "enumTitles": [
                "Coles",
                "Woolworths",
                "Aldi Australia"
              ]
            },
            "default": [
              "aldi_au"
            ]
          },
          "mode": {
            "title": "Mode",
            "enum": [
              "search",
              "category",
              "product",
              "specialBuys"
            ],
            "type": "string",
            "description": "Which mode to run, one per run. Allowed values: search (keywords in queries), category (pages in categoryUrls), product (pages in productUrls), specialBuys (Aldi's dated Special Buys drops). Default search. Example: \"search\" with queries [\"full cream milk\"].",
            "default": "search"
          },
          "queries": {
            "title": "Search queries",
            "maxItems": 50,
            "type": "array",
            "description": "Keywords to search for in every selected shop: a list of up to 50 strings, each up to 200 characters. Default [\"milk\"]. Search mode only.",
            "items": {
              "type": "string",
              "maxLength": 200
            },
            "default": [
              "milk"
            ]
          },
          "categoryUrls": {
            "title": "Category URLs",
            "maxItems": 50,
            "type": "array",
            "description": "Aldi Australia category page URLs, up to 50 (category mode only). An Aldi category address is the Aldi site, then /products/, then the category name, then /k/ and its number. Coles and Woolworths addresses are skipped (not available at the moment). Leave empty unless the user supplied URLs.",
            "items": {
              "type": "string",
              "maxLength": 2048
            },
            "default": []
          },
          "fullRange": {
            "title": "Category: whole Aldi range",
            "type": "boolean",
            "description": "Category mode only. true reads Aldi Australia's online range department by department (14 departments, about 2,600 products when last counted) instead of the category URLs, which must then be empty. Departments are read in a fixed order starting with fruit and vegetables, so with the default maxItems (60) the products come mostly or entirely from the first department or two: raise maxItems for a spread across departments. maxItems caps how many products are returned and charged: on the Free plan, 500 products cost about $0.76 and the whole range about $4. Allowed values: true or false; default false.",
            "default": false
          },
          "productUrls": {
            "title": "Product URLs",
            "maxItems": 500,
            "type": "array",
            "description": "Aldi Australia product page URLs, up to 500 (product mode only). An Aldi product address is the Aldi site, then /product/, then the product name and its number. Coles and Woolworths addresses are skipped (not available at the moment). Leave empty unless the user supplied URLs.",
            "items": {
              "type": "string",
              "maxLength": 2048
            },
            "default": []
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "The most rows to save in total, a whole number of 1 or more, split evenly between the shops in the run. Default 60 (the Console form is pre-filled with 15). Applies to every mode; a Special Buys drop is typically 20 to 100 products, so raise it for that mode.",
            "default": 60
          },
          "excludeMarketplace": {
            "title": "Exclude Woolworths marketplace products",
            "type": "boolean",
            "description": "Woolworths only, which is not available at the moment, so this has no effect: true leaves out Woolworths Everyday Market (third-party) products. Allowed values: true or false; default false.",
            "default": false
          },
          "colesProductDetails": {
            "title": "Coles: look up barcodes (EAN)",
            "type": "boolean",
            "description": "Coles only, which is not available at the moment, so this has no effect: true adds each Coles product's barcode (EAN), at one extra request per product. Allowed values: true or false; default false.",
            "default": false
          },
          "specialBuysDrops": {
            "title": "Special Buys drop dates",
            "maxItems": 20,
            "type": "array",
            "description": "Aldi Special Buys drop dates to read, each as YYYY-MM-DD, up to 20. Empty (the default) reads every drop dated today or later (Sydney date). Used in specialBuys mode only.",
            "items": {
              "type": "string",
              "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
              "maxLength": 10
            },
            "default": []
          },
          "watchId": {
            "title": "Watch id",
            "pattern": "^([a-z0-9]([a-z0-9-]{0,38}[a-z0-9])?)?$",
            "maxLength": 40,
            "type": "string",
            "description": "Turns this run into a watch: give the same id on later runs to get only what changed since the last run with that id (Aldi Australia only, any mode). 1 to 40 lowercase letters, digits and hyphens. The first run returns every product it reads, charged like a search. Leave empty for an ordinary run."
          },
          "watchEvents": {
            "title": "Watch: what to report",
            "minItems": 1,
            "uniqueItems": true,
            "type": "array",
            "description": "Watch runs only (with watchId): which changes to return. Allowed values: added (a product this watch has not reported before: new to the scope, back in it, or left over from an earlier run), changed (price or was-price changed), removed (listed free in the run summary, never as rows). Default [\"added\", \"changed\"].",
            "items": {
              "type": "string",
              "enum": [
                "added",
                "changed",
                "removed"
              ],
              "enumTitles": [
                "Added products",
                "Changed prices",
                "Removed products (listed free)"
              ]
            },
            "default": [
              "added",
              "changed"
            ]
          },
          "minMovePct": {
            "title": "Watch: smallest price move (%)",
            "minimum": 0,
            "maximum": 1000,
            "type": "number",
            "description": "Watch runs only (with watchId): ignore price moves smaller than this percentage of the last reported price; small moves add up and are reported once they reach it. 0 (the default) reports any change. Between 0 and 1000.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}