{
  "openapi": "3.0.1",
  "info": {
    "title": "WooCommerce Product Scraper",
    "description": "Extract product prices, stock status, SKUs, images and categories from supported WooCommerce stores—just paste a store URL. Export to CSV or JSON, or schedule repeat runs to track price drops, restocks and new products. No API key required.",
    "version": "0.0",
    "x-build-id": "IAA5e24vwI8FalI9n"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/ozer-studio~WooCommerce-Product-Scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-ozer-studio-WooCommerce-Product-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/ozer-studio~WooCommerce-Product-Scraper/runs": {
      "post": {
        "operationId": "runs-sync-ozer-studio-WooCommerce-Product-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/ozer-studio~WooCommerce-Product-Scraper/run-sync": {
      "post": {
        "operationId": "run-sync-ozer-studio-WooCommerce-Product-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": {
          "storeUrls": {
            "title": "WooCommerce store homepage URLs",
            "minItems": 1,
            "maxItems": 20,
            "type": "array",
            "description": "One HTTPS store homepage per line, such as https://store.com. If WordPress is installed under a subdirectory, include it. Do not paste product, /shop/, category or filtered search URLs. The full public /wp-json/wc/store/v1/products endpoint is also accepted without query parameters.",
            "items": {
              "type": "string"
            },
            "default": [
              "https://woocommerce.com"
            ]
          },
          "mode": {
            "title": "What would you like to do?",
            "enum": [
              "catalog",
              "monitor"
            ],
            "type": "string",
            "description": "Catalog: export the current products. Monitor: save a first complete baseline, then output only changed products on later runs. Use the same monitor name and filters. Incomplete scans never replace the baseline.",
            "default": "catalog"
          },
          "searchQuery": {
            "title": "Search for products (optional)",
            "maxLength": 200,
            "type": "string",
            "description": "Optional words to search within EACH supplied store. This is not a search across the internet. Leave blank to export the catalog. Changing this filter starts a separate monitoring baseline.",
            "default": ""
          },
          "maxProductsPerStore": {
            "title": "Maximum products per store",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Separate limit for each store. In monitor mode, set this high enough to cover the entire matching catalog. A capped scan does not create/update the baseline; RUN_SUMMARY.json shows the store's reported total.",
            "default": 500
          },
          "maxPagesPerStore": {
            "title": "Maximum pages per store",
            "minimum": 1,
            "maximum": 100,
            "type": "integer",
            "description": "Up to 100 products per API page. Also stops at the product limit or last verified page. A partial scan cannot be used to infer missing products.",
            "default": 100
          },
          "onlyInStock": {
            "title": "Only products currently in stock",
            "type": "boolean",
            "description": "Filter using the store's own public API. In monitor mode, an item leaving this filtered result is reported as missing_from_results, not proof it was deleted or sold.",
            "default": false
          },
          "onlyOnSale": {
            "title": "Only products currently on sale",
            "type": "boolean",
            "description": "Filter using the store's own sale flag. Changing this filter creates a separate monitoring baseline.",
            "default": false
          },
          "monitorKey": {
            "title": "Monitor name",
            "pattern": "^[A-Za-z0-9_-]{1,64}$",
            "type": "string",
            "description": "Monitor mode only. Reuse this name for later runs of the same watchlist. Use different names for independent schedules. Do not run overlapping jobs with the same name and store. Catalog mode ignores this field.",
            "default": "default"
          },
          "outputInitialSnapshot": {
            "title": "Export products on the first complete monitor run",
            "type": "boolean",
            "description": "On: first-run products appear as baseline records, not new-product alerts. Off: save the baseline silently, with zero dataset rows. Later monitor runs emit changed products only. Catalog mode ignores this setting.",
            "default": true
          },
          "saveCsvFile": {
            "title": "Save a CSV download",
            "type": "boolean",
            "description": "Save dataset output to a CSV in Storage → Key-value store. Catalog rows and monitor changes use the same columns. Store diagnostics and run summaries are separate, uncharged report files.",
            "default": true
          },
          "csvFilename": {
            "title": "CSV filename",
            "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]{0,100}\\.csv$",
            "type": "string",
            "description": "A simple .csv filename, not a folder path. An unchanged monitor may produce a header-only CSV, which is expected.",
            "default": "woocommerce_results.csv"
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}