{
  "openapi": "3.0.1",
  "info": {
    "title": "Woolworths AU Scraper [$1.50/1K💰] | Groceries",
    "description": "Extract Woolworths Australia products by search, category or current specials - price, was-price, savings, unit pricing, ingredients, nutrition, allergens and reviews. Ideal for Coles price comparison and fake-specials analysis.",
    "version": "0.1",
    "x-build-id": "Zx15g72WhLvf6si04"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/ahmed_jasarevic~woolworths-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-ahmed_jasarevic-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/ahmed_jasarevic~woolworths-scraper/runs": {
      "post": {
        "operationId": "runs-sync-ahmed_jasarevic-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/ahmed_jasarevic~woolworths-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-ahmed_jasarevic-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": {
          "mode": {
            "title": "Mode",
            "enum": [
              "all",
              "search",
              "categories",
              "specials"
            ],
            "type": "string",
            "description": "Which data to extract.",
            "default": "all"
          },
          "searchTerms": {
            "title": "Search terms",
            "type": "array",
            "description": "Keyword searches to run (only used by the 'search' and 'all' modes). Example: milk, coffee, nappies.",
            "items": {
              "type": "string"
            },
            "default": [
              "milk"
            ]
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Categories to browse (only used by the 'categories' and 'all' modes). Accepts URL slugs such as 'dairy-eggs-fridge/milk', a single slug such as 'pantry', a full path like 'fruit-veg/fruit/avocados', a category node id such as '1_6E4F4E4' or a woolworths.com.au browse URL. Unknown targets are logged with suggestions and skipped.",
            "items": {
              "type": "string"
            },
            "default": [
              "dairy-eggs-fridge"
            ]
          },
          "specialsTargets": {
            "title": "Specials scopes",
            "type": "array",
            "description": "Specials scopes to scrape (only used by the 'specials' and 'all' modes). Leave empty to collect specials from every top-level department. Otherwise give scopes such as 'dairy-eggs-fridge', 'dairy-eggs-fridge/milk' or a promotion group like 'half-price', 'buy-more-save-more', 'online-only-specials'.",
            "items": {
              "type": "string"
            },
            "default": []
          },
          "maxItemsPerTarget": {
            "title": "Max items per target",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "Stop each search term / category / specials scope after this many products. Free accounts are always clamped to 10.",
            "default": 120
          },
          "maxItemsTotal": {
            "title": "Max items in total",
            "minimum": 1,
            "maximum": 200000,
            "type": "integer",
            "description": "Hard cap for the whole run, across all targets. Free accounts are always clamped to 10 items.",
            "default": 2000
          },
          "sortOrder": {
            "title": "Sort order",
            "enum": [
              "TraderRelevance",
              "PriceAsc",
              "PriceDesc"
            ],
            "type": "string",
            "description": "Product ordering inside each target.",
            "default": "TraderRelevance"
          },
          "includeDetails": {
            "title": "Fetch full product details",
            "type": "boolean",
            "description": "Extra request per product for the richest nutrition/ingredient payload (fetched concurrently, limited by the concurrency setting). Off by default - the list endpoints already contain ingredients, nutrition, allergens and ratings.",
            "default": false
          },
          "includeReviews": {
            "title": "Fetch product reviews",
            "type": "boolean",
            "description": "Also scrape customer reviews (star rating, text, date, source) for every product found. Reviews go to a separate 'reviews' dataset so they never slow down or bloat the product output. Reviews are batched - many products are fetched per request, so the extra request count is far below one per product.",
            "default": false
          },
          "maxReviewsPerProduct": {
            "title": "Max reviews per product",
            "minimum": 1,
            "maximum": 500,
            "type": "integer",
            "description": "How many reviews to collect per product. Products with fewer reviews than this simply return what they have. Free accounts are always clamped to 5. Only used when 'Fetch product reviews' is enabled.",
            "default": 10
          },
          "reviewsOrder": {
            "title": "Review order",
            "enum": [
              "latest",
              "highest",
              "lowest"
            ],
            "type": "string",
            "description": "Which reviews to return when a product has more reviews than the per-product limit.",
            "default": "latest"
          },
          "deduplicate": {
            "title": "Deduplicate products",
            "type": "boolean",
            "description": "Skip a product that was already written earlier in the same run (useful when search terms or categories overlap).",
            "default": true
          },
          "delayMs": {
            "title": "Delay between requests (ms)",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Minimum gap between request starts. Keep at least 100 ms to stay polite with the origin.",
            "default": 150
          },
          "maxConcurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 8,
            "type": "integer",
            "description": "How many HTTP/2 requests may be in flight at once on the shared connection.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Off by default: the origin is reachable directly over HTTP/2 with a plain cookie bootstrap, so a proxy is not required. Turn on Apify Proxy only if your run gets blocked."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}