{
  "openapi": "3.0.1",
  "info": {
    "title": "AU Grocery Price Comparison - Cheapest retailer + Price History",
    "description": "Prices a shopping list across every Australian retailer holding each item, names the cheapest and dearest shop with the saving worked out, judges today's price against that product's own history, and totals the whole basket per retailer against buying each item wherever it is cheapest.",
    "version": "1.0",
    "x-build-id": "6gZyQETm9ei7RzzIl"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/gatherworks~au-grocery-price-comparison-history/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-gatherworks-au-grocery-price-comparison-history",
        "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/gatherworks~au-grocery-price-comparison-history/runs": {
      "post": {
        "operationId": "runs-sync-gatherworks-au-grocery-price-comparison-history",
        "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/gatherworks~au-grocery-price-comparison-history/run-sync": {
      "post": {
        "operationId": "run-sync-gatherworks-au-grocery-price-comparison-history",
        "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",
        "required": [
          "queries"
        ],
        "properties": {
          "queries": {
            "title": "🛒 Products to price",
            "type": "array",
            "description": "One product name per line. Matched against product names in the database — this is not a live search of a supermarket site.",
            "items": {
              "type": "string"
            }
          },
          "matchesPerQuery": {
            "title": "Products per name",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "How many distinct products to price for each name. \"milk\" matches many products; \"Weet-Bix 375g\" matches one. Each product is charged separately, so raise this deliberately.",
            "default": 3
          },
          "market": {
            "title": "Market",
            "type": "string",
            "description": "ISO 3166-1 alpha-2 country code. AU is the only market with coverage today; any other code returns no matches rather than guessing.",
            "default": "AU"
          },
          "maxItems": {
            "title": "Maximum products",
            "minimum": 1,
            "type": "integer",
            "description": "Hard cap on products priced across the whole run. Leave blank for no cap."
          },
          "priceHistory": {
            "title": "📉 Price history — is today a good price?",
            "enum": [
              "off",
              "30d",
              "90d"
            ],
            "type": "string",
            "description": "Adds a verdict (good price / typical / poor price) plus a history bar you can chart, by placing today's cheapest price in the range that product has actually held. Three months costs more than one, because it is a deeper lookup. Never charged when the database holds too little of the window to judge fairly.",
            "default": "30d"
          },
          "unitPrice": {
            "title": "⚖️ Unit price — cheapest per 100g / 100ml",
            "type": "boolean",
            "description": "The cheapest pack is often not the cheapest buy. This adds the price per 100g or 100ml at each retailer and says outright whether the cheapest pack is also the cheapest per unit. (+$0.004 per product)",
            "default": true
          },
          "listingHistory": {
            "title": "🔗 Every listing, every link",
            "type": "boolean",
            "description": "Every listing ever seen for the product at every retailer — the link, when it was first seen, when it was last seen, how many times it has been observed, and whether it is still listed. (+$0.005 per product)",
            "default": false
          },
          "stockCodes": {
            "title": "🏷️ Retailer stock codes",
            "type": "boolean",
            "description": "Each retailer's own SKU for the product, for matching against your catalogue or a supplier feed. (+$0.004 per product)",
            "default": false
          },
          "nutrition": {
            "title": "🥣 Nutrition",
            "type": "boolean",
            "description": "Nutrition panel where the database holds one. Charged once per product name rather than per product, and coverage is genuinely patchy — products without it are marked so rather than returned empty. (+$0.01 per product name)",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}