{
  "openapi": "3.0.1",
  "info": {
    "title": "Coles Product Scraper – Prices, Specials & Stock",
    "description": "Returns Coles (coles.com.au) products with price, was-price, unit price, special or multibuy offer, availability and stock quantity. Search terms, categories, specials or URLs; optional GTIN, ingredients and nutrition. No login.",
    "version": "0.0",
    "x-build-id": "5csELcpoHW9V4dhMS"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/genial_candlestand~coles-product-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-genial_candlestand-coles-product-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/genial_candlestand~coles-product-scraper/runs": {
      "post": {
        "operationId": "runs-sync-genial_candlestand-coles-product-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/genial_candlestand~coles-product-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-genial_candlestand-coles-product-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": {
          "queries": {
            "title": "Search terms",
            "type": "array",
            "description": "Products to search for on coles.com.au, one term per line (e.g. \"milk\", \"gluten free bread\"). Each term is paged until its results or the limits run out. Blank lines are ignored. Give at least one of: Search terms, Categories, Specials or Start URLs.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Coles category paths as they appear after /browse/ in the site URL, one per line: a department (\"pantry\", \"liquorland\") or a sub-category (\"dairy-eggs-fridge/milk\"). Full browse URLs are accepted too. Lowercase letters, digits and dashes, up to 3 levels. An unknown category is skipped with a warning.",
            "items": {
              "type": "string"
            }
          },
          "specials": {
            "title": "Specials",
            "enum": [
              "none",
              "halfprice",
              "multibuy",
              "all"
            ],
            "type": "string",
            "description": "Also scrape the Coles specials list: all specials, only half-price, or only multibuy (\"2 for $X\") offers. \"none\" scrapes no specials list. Use Categories or Search terms for specials of one product type.",
            "default": "none"
          },
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "coles.com.au URLs to scrape: search (/search/products?q=…), category (/browse/…), specials (/on-special…, /half-price-specials) or product pages (/product/…). Filters in the URL (e.g. filter_Brand) are kept. Any other URL or host fails the run with an input error before scraping.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "includeDetails": {
            "title": "Include product details",
            "type": "boolean",
            "description": "Open each listed product's own page to add barcode (GTIN), ingredients, allergens, dietary info, storage, dimensions, country of origin, description and nutrition per 100 g. One extra page per product, charged as a separate add-on event. Product URLs in Start URLs always include details at no extra charge.",
            "default": false
          },
          "storeId": {
            "title": "Store ID",
            "pattern": "^[0-9]{3,4}$",
            "type": "string",
            "description": "Optional Coles store number (3–4 digits, e.g. \"0584\"). Stock quantity and the product range then come from this store; prices are national. Empty = Coles online defaults. A store number Coles does not know fails the run with an input error."
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "relevance",
              "priceAscending",
              "priceDescending",
              "productNameAscending",
              "productNameDescending"
            ],
            "type": "string",
            "description": "Order of search, category and specials results (matters with limits). \"relevance\" keeps the Coles default order. Does not apply to product URLs; a Start URL that already has sortBy keeps its own.",
            "default": "relevance"
          },
          "includeSponsored": {
            "title": "Include sponsored products",
            "type": "boolean",
            "description": "Keep sponsored (paid placement) products that Coles shows above the results. They are marked isSponsored = true and have no position. Turn off to get and pay for organic results only.",
            "default": true
          },
          "maxItems": {
            "title": "Max products",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Stop after this many products in total across all sources. Each saved product is one charged event.",
            "default": 1000
          },
          "maxItemsPerSource": {
            "title": "Max products per source",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Optional cap for each search term, category, specials list or start URL, so one big source cannot use up Max products. Empty = no per-source cap."
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Coles blocks requests without a proxy, so a proxy is required. Apify datacenter proxy (default) works; Residential with country Australia is the most reliable. Datacenter IPs have no Australia country (it is dropped with a warning).",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}