{
  "openapi": "3.0.1",
  "info": {
    "title": "SaaS Price Hike Monitor: Pricing Page Change Alerts",
    "description": "Watch the pricing pages of the software you pay for and get warned before renewal: price increases with old and new price, removed free plans, new tiers. AI reads each page into plans and prices, any vendor, no setup.",
    "version": "0.1",
    "x-build-id": "GAmwQCNBz97JGbW0a"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fayoussef~saas-price-hike-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fayoussef-saas-price-hike-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/fayoussef~saas-price-hike-monitor/runs": {
      "post": {
        "operationId": "runs-sync-fayoussef-saas-price-hike-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/fayoussef~saas-price-hike-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-fayoussef-saas-price-hike-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": {
          "pricingPages": {
            "title": "Pricing pages to watch",
            "type": "array",
            "description": "One per line: the pricing page of each tool you pay for. A bare domain like notion.com is checked at notion.com/pricing.",
            "items": {
              "type": "string"
            }
          },
          "alertOn": {
            "title": "What counts as a change",
            "type": "array",
            "description": "Which differences from the last check are reported. Limit changes (storage, seats, credits) are off by default because page wording shifts often.",
            "items": {
              "type": "string",
              "enum": [
                "price_increase",
                "price_decrease",
                "plan_removed",
                "plan_added",
                "limits_changed"
              ],
              "enumTitles": [
                "Price increases",
                "Price decreases",
                "Plans removed (including the free plan)",
                "New plans",
                "Plan limits changed"
              ]
            },
            "default": [
              "price_increase",
              "plan_removed",
              "plan_added",
              "price_decrease"
            ]
          },
          "watchlistName": {
            "title": "Watchlist name",
            "type": "string",
            "description": "Optional label for this watchlist's memory. Use a different name for each team or client you monitor."
          },
          "model": {
            "title": "AI model",
            "enum": [
              "anthropic/claude-haiku-5.5",
              "anthropic/claude-sonnet-5.5",
              "anthropic/claude-opus-5.5",
              "anthropic/claude-opus-5",
              "anthropic/claude-sonnet-5",
              "anthropic/claude-opus-4.8",
              "anthropic/claude-opus-4.7",
              "anthropic/claude-sonnet-4.6",
              "anthropic/claude-opus-4.6",
              "anthropic/claude-opus-4.5",
              "anthropic/claude-haiku-4.5",
              "anthropic/claude-sonnet-4.5",
              "anthropic/claude-opus-4.1",
              "anthropic/claude-fable-5.1",
              "anthropic/claude-fable-5",
              "google/gemini-3.8-flash",
              "google/gemini-3.7-flash",
              "google/gemini-3.6-flash",
              "google/gemini-3.5-flash-lite",
              "google/gemini-3.5-flash",
              "google/gemini-3.1-flash-lite",
              "google/gemini-3.1-flash-lite-preview",
              "google/gemini-3.1-pro-preview-customtools",
              "google/gemini-3.1-pro-preview",
              "google/gemini-3-flash-preview",
              "google/gemini-2.5-flash-lite",
              "google/gemini-2.5-flash",
              "google/gemini-2.5-pro",
              "google/gemini-2.5-pro-preview",
              "google/gemini-4-argon",
              "google/gemma-4-26b-a4b-it",
              "google/gemma-4-31b-it",
              "google/gemma-3-4b-it",
              "google/gemma-3-12b-it",
              "google/gemma-3-27b-it",
              "google/gemma-2-27b-it",
              "google/gemma-4-26b-a4b-it:free",
              "google/gemma-4-31b-it:free",
              "openai/gpt-5.6-luna-pro",
              "openai/gpt-5.6-luna",
              "openai/gpt-5.6-terra-pro",
              "openai/gpt-5.6-terra",
              "openai/gpt-5.6-sol-pro",
              "openai/gpt-5.6-sol",
              "openai/gpt-5.5-pro",
              "openai/gpt-5.5",
              "openai/gpt-5.4-nano",
              "openai/gpt-5.4-mini",
              "openai/gpt-5.4-pro",
              "openai/gpt-5.4",
              "openai/gpt-5.3-codex",
              "openai/gpt-5.2-codex",
              "openai/gpt-5.2-chat",
              "openai/gpt-5.2-pro",
              "openai/gpt-5.2",
              "openai/gpt-5.1-codex-max",
              "openai/gpt-5.1",
              "openai/gpt-5.1-codex",
              "openai/gpt-5.1-codex-mini",
              "openai/gpt-5-pro",
              "openai/gpt-5",
              "openai/gpt-5-mini",
              "openai/gpt-5-nano",
              "openai/o3-pro",
              "openai/o3",
              "openai/gpt-4.1",
              "openai/gpt-4.1-mini",
              "openai/gpt-4.1-nano",
              "openai/gpt-4o-2024-11-20",
              "openai/gpt-4o-2024-08-06",
              "openai/gpt-4o-mini",
              "openai/gpt-4o-mini-2024-07-18",
              "openai/gpt-4o",
              "openai/gpt-4o-2024-05-13",
              "openai/gpt-4",
              "openai/gpt-6.1-terra-pro",
              "openai/gpt-6.1-terra",
              "openai/gpt-6.1-sol-pro",
              "openai/gpt-6.1-sol",
              "openai/gpt-6-luna-pro",
              "openai/gpt-6-luna",
              "openai/gpt-6-sol-pro",
              "openai/gpt-6-sol",
              "openai/gpt-6-astra",
              "openai/gpt-6-astra-pro",
              "openai/gpt-chat-latest",
              "openai/gpt-oss-120b",
              "openai/gpt-oss-20b",
              "openai/gpt-3.5-turbo-0613",
              "openai/gpt-3.5-turbo-16k",
              "deepseek/deepseek-v3.2",
              "deepseek/deepseek-v3.2-exp",
              "deepseek/deepseek-v3.1-terminus",
              "deepseek/deepseek-chat-v3.1",
              "deepseek/deepseek-r1-0528",
              "deepseek/deepseek-chat-v3-0324",
              "deepseek/deepseek-chat",
              "deepseek/deepseek-v4.1-flash-1017",
              "deepseek/deepseek-v4.1-flash",
              "deepseek/deepseek-v4-flash-vision-exp",
              "deepseek/deepseek-v4-pro-0813",
              "deepseek/deepseek-v4-flash-0731",
              "deepseek/deepseek-v4-pro",
              "deepseek/deepseek-v4-flash",
              "x-ai/grok-4.7",
              "x-ai/grok-4.6",
              "x-ai/grok-4.5",
              "x-ai/grok-4.3",
              "x-ai/grok-4.20-multi-agent",
              "x-ai/grok-4.20",
              "x-ai/grok-build-0.1",
              "meta-llama/llama-4-maverick",
              "meta-llama/llama-4-scout",
              "meta-llama/llama-3.3-70b-instruct",
              "meta-llama/llama-3.2-1b-instruct",
              "meta-llama/llama-3.2-3b-instruct",
              "meta-llama/llama-3.1-70b-instruct",
              "meta-llama/llama-3.1-8b-instruct",
              "qwen/qwen3.8-max-prime",
              "qwen/qwen3.8-omni-flash"
            ],
            "type": "string",
            "description": "The model that reads each pricing page. A model is only called when a page's prices changed since the last check. Model usage is billed separately (see the README).",
            "default": "anthropic/claude-haiku-5.5"
          },
          "openrouterApiKey": {
            "title": "OpenRouter API key",
            "type": "string",
            "description": "Optional. Bring your own OpenRouter key and calls go straight to OpenRouter, billed by them on your own OpenRouter account instead of through Apify. Leave empty to use the built-in access, which needs no key at all."
          },
          "apifyToken": {
            "title": "Apify API token",
            "type": "string",
            "description": "Optional. Only needed when running this Actor outside the Apify platform. On Apify the run's own token is used automatically."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}