{
  "openapi": "3.0.1",
  "info": {
    "title": "Competitor Price, Stock, and Changelog Monitor",
    "description": "Watch competitor stores and SaaS sites and get only what changed since your last run: price, sale price, and stock changes per product, new and removed products, plan price changes on a pricing page, and new changelog entries. Shopify, WooCommerce, and any pricing page. Clay ready.",
    "version": "0.1",
    "x-build-id": "ElwDT7hcxbGPaADnu"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/mambalabs~competitor-price-stock-changelog-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-mambalabs-competitor-price-stock-changelog-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/mambalabs~competitor-price-stock-changelog-monitor/runs": {
      "post": {
        "operationId": "runs-sync-mambalabs-competitor-price-stock-changelog-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/mambalabs~competitor-price-stock-changelog-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-mambalabs-competitor-price-stock-changelog-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": [
          "sites"
        ],
        "properties": {
          "sites": {
            "title": "Sites",
            "type": "array",
            "description": "Competitor sites to watch, one per line: a domain (deathwishcoffee.com, linear.app) or a URL. A URL with a path is read as that page: a pricing page, a changelog page, or a product page. Up to 200 sites per run.",
            "items": {
              "type": "string"
            }
          },
          "site_type": {
            "title": "Site type",
            "type": "string",
            "description": "auto (default) reads the public Shopify product feed or the WooCommerce Store API when the site has one, and otherwise reads the pricing and changelog pages it links to.",
            "default": "auto"
          },
          "watch": {
            "title": "What to watch",
            "type": "array",
            "description": "Any of: prices, stock, products, plans, changelog, docs, positioning, new_pages. prices covers price and compare at price per variant; stock covers in stock and out of stock; products covers new and removed products; plans covers plan names and prices on a pricing page; changelog covers new changelog entries. Off unless you add them: docs covers content changes on docs pages; positioning covers the homepage title, meta description, h1, and first h2 headings; new_pages covers new landing pages in the site's sitemap. Empty means the first five.",
            "items": {
              "type": "string"
            }
          },
          "product_urls": {
            "title": "Product page URLs (optional)",
            "type": "array",
            "description": "Product pages on a store that is not Shopify or WooCommerce. Each page is read for its schema.org Product price and availability.",
            "items": {
              "type": "string"
            }
          },
          "pricing_urls": {
            "title": "Pricing page URLs (optional)",
            "type": "array",
            "description": "Pricing pages to read, when the site does not link to its pricing page from the homepage.",
            "items": {
              "type": "string"
            }
          },
          "changelog_urls": {
            "title": "Changelog page URLs (optional)",
            "type": "array",
            "description": "Changelog or release notes pages to read, when the site does not link to one from the homepage. An RSS or Atom feed the page declares is read first.",
            "items": {
              "type": "string"
            }
          },
          "docs_urls": {
            "title": "Docs page URLs (optional)",
            "type": "array",
            "description": "Docs, API reference, or help pages to watch for content changes, up to 20 per site. Giving one turns on docs for its site. With docs in What to watch and no URL here, the docs page the homepage links to is read.",
            "items": {
              "type": "string"
            }
          },
          "max_products": {
            "title": "Max products per store",
            "type": "string",
            "description": "Products read from a store catalog per run, up to 5000. A store with more products than this is compared on the products read, and removed products are not reported for it.",
            "default": "250"
          },
          "min_price_change_pct": {
            "title": "Minimum price change (percent)",
            "type": "string",
            "description": "Report a price change only when it is at least this many percent. 0 reports every change.",
            "default": "0"
          },
          "max_changes_per_site": {
            "title": "Max change rows per site",
            "type": "string",
            "description": "Change rows returned per site per run, up to 1000. The rest are counted in changes_found.",
            "default": "200"
          },
          "include_snapshot": {
            "title": "Include snapshot rows",
            "type": "string",
            "description": "true to also return one snapshot row per product variant, plan, and changelog entry on the first check of a site. Each snapshot row is billed as a snapshot row.",
            "default": "false"
          },
          "state_key": {
            "title": "State key",
            "type": "string",
            "description": "Names the saved state, so separate schedules keep separate baselines. Runs with the same state key and site compare against each other."
          },
          "reset_state": {
            "title": "Reset state",
            "type": "string",
            "description": "true to ignore the saved state and record a new baseline for every site.",
            "default": "false"
          },
          "max_charge_usd": {
            "title": "Maximum charge (USD)",
            "type": "string",
            "description": "Optional. The run stops before it would charge more than this."
          },
          "proxy_mode": {
            "title": "Proxy mode",
            "type": "string",
            "description": "auto (default) sends requests directly and moves a host to the Apify proxy default pool only when that host refuses. A reliability setting: proxy use adds nothing to your price.",
            "default": "auto"
          },
          "source_tag": {
            "title": "Source tag",
            "type": "string",
            "description": "Internal attribution tag. Leave empty."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}