{
  "openapi": "3.0.1",
  "info": {
    "title": "Coles Australia Scraper - Prices, Half Price Specials & Stock",
    "description": "Scrape Coles (coles.com.au) prices, half-price and multibuy specials, unit price per kg/L, stock, barcode and aisle by keyword, category, specials page or product ID. Pull the whole specials catalogue in one run. Per-store pricing, store finder, price-drop alerts. No proxy needed.",
    "version": "0.0",
    "x-build-id": "cKFvc7d1mEwszaPCc"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/memo23~coles-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-memo23-coles-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/memo23~coles-scraper/runs": {
      "post": {
        "operationId": "runs-sync-memo23-coles-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/memo23~coles-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-memo23-coles-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": {
          "searchTerms": {
            "title": "Product keywords",
            "type": "array",
            "description": "Keywords to search on Coles, e.g. `milk`, `coffee`, `tim tams`.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Coles search / product / specials URLs",
            "type": "array",
            "description": "Paste Coles product-search URLs (e.g. `https://www.coles.com.au/search/products?q=coffee`), category `/browse/` URLs, specials pages (`/on-special`, `/specials/half-price`) or direct `/product/` URLs — each is auto-routed. Specials pages are served from Coles' own specials filter.",
            "items": {
              "type": "string"
            }
          },
          "skuList": {
            "title": "Product IDs",
            "type": "array",
            "description": "Specific Coles product IDs to fetch directly, e.g. `8150288`.",
            "items": {
              "type": "string"
            }
          },
          "specialsOnly": {
            "title": "Only products on special",
            "type": "boolean",
            "description": "Deliver only products currently on special: a was-price markdown, a multibuy deal (e.g. Any 2 for $5) or an online special. Applied after fetching, so it works with any input.",
            "default": false
          },
          "specials": {
            "title": "Specials catalogue",
            "enum": [
              "none",
              "all",
              "halfPrice",
              "multibuy",
              "onlineOnly"
            ],
            "type": "string",
            "description": "Narrow results to one kind of weekly special, filtered by Coles itself. With keywords or category URLs it returns only the matching specials within them. With no keywords, URLs or product IDs it scrapes the whole Coles specials catalogue of that kind (half price is usually 1,000+ products). Clear the prefilled keyword to get the full catalogue.",
            "default": "none"
          },
          "monitorMode": {
            "title": "Monitor mode",
            "enum": [
              "snapshot",
              "changes"
            ],
            "type": "string",
            "description": "`snapshot` (default) emits plain product rows. `changes` compares each run against the last run of the same Watchlist name and adds `changeType` (NEW, PRICE_DROP, PRICE_RISE, BACK_IN_STOCK, OUT_OF_STOCK, UNCHANGED) plus the previous price and availability to every row.",
            "default": "snapshot"
          },
          "stateName": {
            "title": "Watchlist name",
            "type": "string",
            "description": "Distinguishes separate change-tracking scopes (e.g. different searches on a schedule). Only used when Monitor mode is Changes or Only changed is on.",
            "default": "default"
          },
          "onlyChanged": {
            "title": "Only changed rows",
            "type": "boolean",
            "description": "Emit only rows whose price or availability changed since the last run (skips UNCHANGED rows). The first run always emits every row as NEW. Implies change tracking.",
            "default": false
          },
          "includeDescription": {
            "title": "Include product description",
            "type": "boolean",
            "description": "Extract full text product descriptions for each item when found.",
            "default": true
          },
          "includeDetails": {
            "title": "Include extra details",
            "type": "boolean",
            "description": "Add barcode (GTIN), country of origin, nutrition serving info (serving size, servings per pack) and aisle location to each row.",
            "default": false
          },
          "store": {
            "title": "Coles store (for local pricing)",
            "type": "string",
            "description": "Coles store id as `COL:<storeNumber>` (e.g. `COL:7674`). Prices and stock are per store. Leave empty for the default online store."
          },
          "maxItems": {
            "title": "Maximum products",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on products collected (and billed). Free-plan runs are capped at 25.",
            "default": 1000
          },
          "maxRequestsPerCrawl": {
            "title": "Max page requests",
            "minimum": 0,
            "type": "integer",
            "description": "Hard cap on page requests/paginations (0 = unlimited).",
            "default": 0
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 30,
            "type": "integer",
            "description": "Parallel requests.",
            "default": 10
          },
          "storeLookup": {
            "title": "Find nearby Coles stores",
            "type": "object",
            "description": "Set latitude/longitude to emit nearby Coles/Liquorland stores (id, name, distance) instead of crawling products. Use the returned storeId in the store field of a later run for per-store pricing.",
            "properties": {
              "latitude": {
                "type": "number",
                "description": "Latitude (e.g. -33.86 for Sydney CBD)",
                "title": "Latitude"
              },
              "longitude": {
                "type": "number",
                "description": "Longitude (e.g. 151.21 for Sydney CBD)",
                "title": "Longitude"
              }
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}