{
  "openapi": "3.0.1",
  "info": {
    "title": "Kaspi.kz Price Drop Monitor & Scraper - Kazakhstan",
    "description": "Schedule it hourly/daily and get only new products, price drops and price rises from Kaspi.kz, with the old price. Search by keyword, category, brand or seller in any of 17 cities: price, old price, discount, rating, reviews and seller in KZT. Export JSON, CSV or Excel.",
    "version": "0.1",
    "x-build-id": "fedopWarISkyUoYJh"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~kaspi-price-drop-monitor/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-kaspi-price-drop-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/neverempty~kaspi-price-drop-monitor/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-kaspi-price-drop-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/neverempty~kaspi-price-drop-monitor/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-kaspi-price-drop-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": {
          "searchQueries": {
            "title": "Products to search (keyword, Kaspi search URL or product URL)",
            "type": "array",
            "description": "One per line: a product name as you would type it on Kaspi.kz, in Russian or English (аэрогриль, iphone 15, пылесос dyson), the URL of a Kaspi search or category page with your filters already set, or the URL of a product page (kaspi.kz/shop/p/…) to watch that exact product. Up to 50 searches and 300 product URLs per run. Leave it empty to run the example: 24 air fryers (аэрогриль) in Almaty.",
            "items": {
              "type": "string"
            }
          },
          "city": {
            "title": "City",
            "enum": [
              "almaty",
              "astana",
              "shymkent",
              "karaganda",
              "aktobe",
              "taraz",
              "pavlodar",
              "ustKamenogorsk",
              "semey",
              "atyrau",
              "kostanay",
              "kyzylorda",
              "uralsk",
              "petropavlovsk",
              "aktau",
              "kokshetau",
              "taldykorgan"
            ],
            "type": "string",
            "description": "Kaspi shows a different best price, seller and delivery in each city. Prices, stock and links are read for this city.",
            "default": "almaty"
          },
          "monitoringMode": {
            "title": "Watch mode: only new products, price drops and price rises",
            "type": "boolean",
            "description": "Schedule it hourly/daily → get only new listings & price drops. The first run returns the current products marked new and remembers their prices. Each later run returns only products that are new to the search (changeType new), cheaper than last time (price_drop) or pricier (price_up) with the previous price and the change in %, or have left the search (removed). A run with no changes returns one free row that says so.",
            "default": false
          },
          "brand": {
            "title": "Brands",
            "type": "array",
            "description": "Only products from these brands, spelled as on Kaspi.kz, for example Ninja, Tefal, Samsung. Empty = all brands.",
            "items": {
              "type": "string"
            }
          },
          "sellerId": {
            "title": "Seller IDs",
            "type": "array",
            "description": "Only products sold by these sellers. Use the number in the seller's page link on Kaspi.kz, or the sellerId column of an earlier run, for example 30293385. Empty = all sellers.",
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Minimum price (KZT)",
            "minimum": 0,
            "type": "number",
            "description": "Only products priced at least this much in tenge. Empty = no minimum."
          },
          "maxPrice": {
            "title": "Maximum price (KZT)",
            "minimum": 0,
            "type": "number",
            "description": "Only products priced at most this much in tenge. Empty = no maximum. In watch mode, a product that moves out of the price range is not reported as removed."
          },
          "sortBy": {
            "title": "Sort order",
            "enum": [
              "relevance",
              "newest",
              "priceLowHigh",
              "priceHighLow",
              "rating"
            ],
            "type": "string",
            "description": "The order Kaspi lists the results in. With a maximum per search set, it decides which products you get. When every product of a search is wanted, or in watch mode, popular and top rated are read newest first, so none are skipped and every watch run covers the same products.",
            "default": "relevance"
          },
          "maxResultsPerSearch": {
            "title": "Max products per search",
            "minimum": 1,
            "maximum": 3000,
            "type": "integer",
            "description": "How many products to return for each search (in watch mode: how many products to watch). Empty = 100. At most 3,000 per search; split larger searches by brand, price range or category. Each product is returned once per run, even if two searches overlap."
          },
          "minChangePercent": {
            "title": "Watch: smallest price change to report (%)",
            "minimum": 0,
            "maximum": 1000,
            "type": "number",
            "description": "Report a price drop or rise only when the price moved at least this much since it was last reported, for example 5 for 5%. Small moves add up: a product that drops 1% a day is reported once the total reaches this.",
            "default": 1
          },
          "includeUnchanged": {
            "title": "Watch: also return unchanged products",
            "type": "boolean",
            "description": "Return every watched product on every run, with changeType unchanged for those that did not move. Off = only changes (cheaper runs).",
            "default": false
          },
          "watchName": {
            "title": "Watch name",
            "type": "string",
            "description": "Optional. Give each scheduled task its own name so two watches of the same search keep separate memories."
          },
          "resetMonitoringState": {
            "title": "Start the watch over",
            "type": "boolean",
            "description": "Forget what this watch has already returned. The next run behaves like a first run.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}