{
  "openapi": "3.0.1",
  "info": {
    "title": "WooCommerce & Shopify Price and Stock Change Monitor",
    "description": "Monitor WooCommerce and Shopify stores for price, sale and stock changes, new and removed products. Outputs only the changes, with old and new values, ready for webhooks, n8n and Make.",
    "version": "0.1",
    "x-build-id": "A5FSNxQ38bbqa9Egm"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/uniano~woocommerce-shopify-price-stock-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-uniano-woocommerce-shopify-price-stock-monitor",
        "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/uniano~woocommerce-shopify-price-stock-monitor/runs": {
      "post": {
        "operationId": "runs-sync-uniano-woocommerce-shopify-price-stock-monitor",
        "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/uniano~woocommerce-shopify-price-stock-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-uniano-woocommerce-shopify-price-stock-monitor",
        "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": [
          "startUrls"
        ],
        "properties": {
          "startUrls": {
            "title": "Store or product URLs",
            "type": "array",
            "description": "Add one URL per row. The platform is detected automatically.<br>• Whole store: <code>https://store.com</code><br>• Category or collection: <code>/product-category/hoodies/</code>, <code>/collections/sale</code><br>• Single product: WooCommerce <code>/product/&lt;slug&gt;/</code> or <code>?p=&lt;id&gt;</code>, Shopify <code>/products/&lt;handle&gt;</code>",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "maxProductsPerStore": {
            "title": "Max products per store",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "Upper limit of products checked (and billed) per store and run. Shopify variants count as products. When the limit is reached, removed products are not reported for that store.",
            "default": 1000
          },
          "categories": {
            "title": "Categories / collections",
            "type": "array",
            "description": "Only check products in these categories. WooCommerce: category slug or ID. Shopify: collection handle. Ignored for product URLs.",
            "items": {
              "type": "string"
            }
          },
          "skus": {
            "title": "SKUs",
            "type": "array",
            "description": "Only check and bill products with these SKUs (case-insensitive). Useful for MAP monitoring of your own products at resellers.",
            "items": {
              "type": "string"
            }
          },
          "changeTypes": {
            "title": "Change types to report",
            "type": "array",
            "description": "Leave empty to report every change type.",
            "items": {
              "type": "string",
              "enum": [
                "price_changed",
                "regular_price_changed",
                "sale_price_changed",
                "sale_started",
                "sale_ended",
                "stock_status_changed",
                "stock_quantity_changed",
                "currency_changed",
                "product_added",
                "product_removed"
              ],
              "enumTitles": [
                "Price changed",
                "Regular price changed (during a sale)",
                "Sale price changed",
                "Sale started",
                "Sale ended",
                "Stock status changed",
                "Stock quantity changed",
                "Currency changed",
                "Product added",
                "Product removed"
              ]
            }
          },
          "minPriceChangePercent": {
            "title": "Minimum price change (%)",
            "minimum": 0,
            "maximum": 100,
            "type": "number",
            "description": "Ignore price changes smaller than this percentage. 0 reports every change.",
            "default": 0
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "pattern": "^https?://.+",
            "type": "string",
            "description": "Optional. One JSON POST per run with all changes and a ready-made <code>text</code> summary, for n8n, Make, Zapier or your own endpoint, e.g. <code>https://hooks.zapier.com/hooks/catch/…</code>. Sent when something changed or a store or product could not be read; with the option below, after every run."
          },
          "webhookOnNoChanges": {
            "title": "Send webhook even without changes",
            "type": "boolean",
            "description": "Also send the webhook when nothing changed and there were no problems. Useful as a daily heartbeat for your automation.",
            "default": false
          },
          "reportProductsOnFirstRun": {
            "title": "Report all products on the first run",
            "type": "boolean",
            "description": "By default the first run only saves a baseline. Turn on to output every product as \"product_added\" on the first run (billed as changes).",
            "default": false
          },
          "includeUnchanged": {
            "title": "Include unchanged products",
            "type": "boolean",
            "description": "Also output an \"unchanged\" item with the current state of every checked product (not billed as changes).",
            "default": false
          },
          "resetBaseline": {
            "title": "Reset baseline",
            "type": "boolean",
            "description": "Ignore the saved snapshot and start a new baseline in this run.",
            "default": false
          },
          "platform": {
            "title": "Platform",
            "enum": [
              "auto",
              "woocommerce",
              "shopify"
            ],
            "type": "string",
            "description": "Leave on auto-detect. Set it only if detection picks the wrong feed for a store.",
            "default": "auto"
          },
          "snapshotStoreName": {
            "title": "Snapshot store name",
            "pattern": "^[a-z0-9-]{1,63}$",
            "type": "string",
            "description": "Named key-value store that keeps the last state of each watched store between runs. Use different names for independent watchlists.",
            "default": "store-change-monitor-snapshots"
          },
          "maxConcurrency": {
            "title": "Stores in parallel",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many stores are processed at the same time. Requests to one store are always sequential.",
            "default": 3
          },
          "requestDelayMs": {
            "title": "Delay between requests to one store",
            "minimum": 200,
            "maximum": 10000,
            "type": "integer",
            "description": "Pause between two requests to the same store, to stay polite.",
            "default": 500
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}