{
  "openapi": "3.0.1",
  "info": {
    "title": "WooCommerce Catalog & Price Change Monitor",
    "description": "Export public WooCommerce products, prices and availability. Compare complete catalog snapshots for price changes, restocks and products entering or leaving a scope. No API key required.",
    "version": "1.0",
    "x-build-id": "9dbs2vA9JFBypedLh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/maydit~woocommerce-catalog-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-maydit-woocommerce-catalog-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/maydit~woocommerce-catalog-monitor/runs": {
      "post": {
        "operationId": "runs-sync-maydit-woocommerce-catalog-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/maydit~woocommerce-catalog-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-maydit-woocommerce-catalog-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",
        "properties": {
          "storeUrls": {
            "title": "Store base URLs",
            "type": "array",
            "description": "Up to 20 public WooCommerce store base URLs, optionally including a WordPress installation subdirectory. Empty or omitted uses WordPress Mercantile. The public Store API must be enabled and robots.txt must permit access.",
            "items": {
              "type": "string"
            }
          },
          "mode": {
            "title": "Output mode",
            "enum": [
              "catalog",
              "changes"
            ],
            "type": "string",
            "description": "Catalog exports current products without changing saved baselines. Changes compares with a named baseline; its first run emits initial products labeled baseline. Only complete crawls advance a baseline. Omitted mode means catalog."
          },
          "maxProductsPerStore": {
            "title": "Maximum products per store",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Hard cap on observed current products per store. A run that hits this cap before the full source scope is read preserves the old baseline and suppresses removals. Removed-product events may add rows beyond this cap in changes mode.",
            "default": 50
          },
          "maxPagesPerStore": {
            "title": "Maximum pages per store",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Pagination safety limit. Pages contain up to 100 products. Reaching the limit before the complete catalog preserves the saved baseline.",
            "default": 100
          },
          "search": {
            "title": "Product search",
            "type": "string",
            "description": "Optional public Store API product search, up to 200 characters. Changing the search selects a separate baseline scope."
          },
          "categoryIds": {
            "title": "Category IDs",
            "type": "array",
            "description": "Optional store-specific positive integer category IDs. These are category IDs from product output, not category names. Up to 50 values; changing them selects a separate baseline scope.",
            "items": {
              "type": "integer",
              "minimum": 1
            }
          },
          "onSale": {
            "title": "Only products on sale",
            "type": "boolean",
            "description": "When true, request only sale products. False or omitted includes both sale and regular products. Leaving this filtered scope does not prove that a product was deleted.",
            "default": false
          },
          "stockStatus": {
            "title": "Availability filter",
            "enum": [
              "any",
              "instock",
              "outofstock",
              "onbackorder"
            ],
            "type": "string",
            "description": "Limit the source scope to a public stock status, or include all. Filters affect scope membership; removed_from_scope means absent from this scope, not necessarily deleted from the store.",
            "default": "any"
          },
          "minimumPriceChangePercent": {
            "title": "Minimum current-price change (%)",
            "minimum": 0,
            "maximum": 100000,
            "type": "number",
            "description": "Only emit a price_changed label when the current price moves by at least this percentage from the previous complete snapshot. Other changes can still emit the product. A move from zero always qualifies. The baseline advances even for changes below this threshold.",
            "default": 0
          },
          "baselineKey": {
            "title": "Baseline namespace",
            "type": "string",
            "description": "Changes mode only. Use 1-80 letters, digits, underscores or hyphens to isolate independent monitors. Store URL and filters are also included automatically. First use emits all initial products. Avoid overlapping runs using the same key and scope.",
            "default": "default"
          },
          "maxRunSeconds": {
            "title": "Maximum run seconds",
            "minimum": 30,
            "maximum": 3600,
            "type": "integer",
            "description": "Own wall-clock budget, also bounded by the platform timeout with a safety margin. Requests and retry sleeps share this budget. Partial catalogs never replace a baseline.",
            "default": 240
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}