{
  "openapi": "3.0.1",
  "info": {
    "title": "Krisha.kz Scraper - Kazakhstan Property Listings & Prices",
    "description": "Krisha.kz property data: prices in tenge, rooms, area, floor, address, seller type and photos for Almaty, Astana and all Kazakhstan. JSON/CSV/Excel.",
    "version": "1.0",
    "x-build-id": "yUX5vEu5vYH0O0ePf"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/sian.agency~krisha-property-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-sian.agency-krisha-property-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/sian.agency~krisha-property-scraper/runs": {
      "post": {
        "operationId": "runs-sync-sian.agency-krisha-property-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/sian.agency~krisha-property-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-sian.agency-krisha-property-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": {
          "operation": {
            "title": "🎯 What do you want to scrape?",
            "enum": [
              "search"
            ],
            "type": "string",
            "description": "🔍 **PROPERTY LISTINGS:** reads krisha.kz search results for the deal type, property type and location you pick, with any filters, and returns one row per advert: price, rooms, area, floor, address, seller and photo.\n\n📄 **TIP:** switch on **Add full details** below to also open each advert's own page for GPS coordinates, the complete description and every photo.",
            "default": "search"
          },
          "dealType": {
            "title": "🤝 For sale or for rent",
            "enum": [
              "sale",
              "rent"
            ],
            "type": "string",
            "description": "🤝 **SALE OR RENT:** sale adverts carry the asking price in tenge; rent adverts carry the rent, with its period (usually per month) in a column of its own.\n\n⚠️ Some sections exist on one side only: land plots, ready businesses and property abroad are sale-only, and rooms are rent-only. A pair krisha.kz does not publish stops the run before any advert is billed (only the run-start fee applies).",
            "default": "sale"
          },
          "propertyType": {
            "title": "🏠 Property type",
            "enum": [
              "apartments",
              "houses",
              "land",
              "commercial",
              "garages",
              "industrial",
              "business",
              "rooms",
              "abroad"
            ],
            "type": "string",
            "description": "🏠 **WHICH SECTION:** the krisha.kz category to read. Apartments is by far the largest: about 223,000 for sale and 25,000 for rent across Kazakhstan.\n\n💰 **For sale:** apartments, houses, land plots, commercial premises, garages, industrial bases, ready businesses, property abroad.\n🔑 **For rent:** apartments, houses, rooms, commercial premises, garages, industrial bases.",
            "default": "apartments"
          },
          "location": {
            "title": "📍 Location",
            "enum": [
              "kazakhstan",
              "almaty",
              "astana",
              "shymkent",
              "karaganda",
              "aktobe",
              "atyrau",
              "aktau",
              "pavlodar",
              "ust-kamenogorsk",
              "semej",
              "kostanaj",
              "taraz",
              "uralsk",
              "petropavlovsk",
              "kyzylorda",
              "turkestan",
              "taldykorgan",
              "kokshetau",
              "temirtau",
              "ekibastuz",
              "konaev",
              "kaskelen",
              "talgar",
              "boroldaj-burundaj",
              "zhezkazgan",
              "balhash",
              "rudnyj",
              "ridder",
              "lisakovsk",
              "shahtinsk",
              "shhuchinsk",
              "kulsary",
              "aksaj",
              "bajkonur",
              "almatinskaja-oblast",
              "akmolinskaja-oblast",
              "abay-oblast",
              "aktjubinskaja-oblast",
              "atyrauskaja-oblast",
              "vostochno-kazahstanskaja-oblast",
              "zhambylskaja-oblast",
              "jetisyskaya-oblast",
              "zapadno-kazahstanskaja-oblast",
              "karagandinskaja-oblast",
              "kostanajskaja-oblast",
              "kyzylordinskaja-oblast",
              "mangistauskaja-oblast",
              "pavlodarskaja-oblast",
              "severo-kazahstanskaja-oblast",
              "juzhno-kazahstanskaja-oblast",
              "ulitayskay-oblast"
            ],
            "type": "string",
            "description": "📍 **WHERE:** one of 34 cities, one of 17 regions, or all of Kazakhstan. A region includes every town in it. Property abroad ignores this field and always searches the whole section.\n\n💡 **TIP:** one search tops out near 20,000 adverts. To cover a whole section nationwide, run one city or region at a time.",
            "default": "almaty"
          },
          "maxResults": {
            "title": "🔢 Max results",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "🔢 **HOW MANY ADVERTS:** the run stops after this many. krisha.kz serves 20 adverts per page and at most 1,000 pages per search, so one search tops out near 20,000. For more, split by location or price range. With several Search URLs this is one budget for the whole run, filled in order.\n\n💎 **Paid Apify plans** get the full amount. Free plans are capped at 25 adverts per run.",
            "default": 100
          },
          "minPrice": {
            "title": "💵 Min price (₸)",
            "minimum": 0,
            "type": "integer",
            "description": "💵 **PRICE FROM:** lowest asking price in tenge. For rentals this is the lowest rent. Leave empty for no lower bound. Works for every section except property abroad."
          },
          "maxPrice": {
            "title": "💵 Max price (₸)",
            "minimum": 0,
            "type": "integer",
            "description": "💵 **PRICE UP TO:** highest asking price in tenge, or the highest rent for rentals. Leave empty for no upper bound. Works for every section except property abroad."
          },
          "rooms": {
            "title": "🛏️ Rooms",
            "uniqueItems": true,
            "type": "array",
            "description": "🛏️ **ROOM COUNT:** keep only these room counts. Pick several to combine them; 5 means five or more. Works for apartments and houses. Leave empty for every size.",
            "items": {
              "type": "string",
              "enum": [
                "1",
                "2",
                "3",
                "4",
                "5"
              ],
              "enumTitles": [
                "1️⃣ 1 room",
                "2️⃣ 2 rooms",
                "3️⃣ 3 rooms",
                "4️⃣ 4 rooms",
                "5️⃣ 5 rooms or more"
              ]
            }
          },
          "minArea": {
            "title": "📐 Min floor area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "📐 **FLOOR AREA FROM:** smallest total floor area in square metres. Works for apartments, houses, rooms, commercial premises and ready businesses."
          },
          "maxArea": {
            "title": "📐 Max floor area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "📐 **FLOOR AREA UP TO:** largest total floor area in square metres. Works for the same sections as the minimum: apartments, houses, rooms, commercial premises and ready businesses."
          },
          "minPlotSotka": {
            "title": "🌱 Min plot size (sotka)",
            "minimum": 0,
            "type": "integer",
            "description": "🌱 **PLOT SIZE FROM:** smallest plot in sotka (1 sotka = 100 m², 100 sotka = 1 hectare). Works for houses, land plots and industrial bases."
          },
          "maxPlotSotka": {
            "title": "🌱 Max plot size (sotka)",
            "minimum": 0,
            "type": "integer",
            "description": "🌱 **PLOT SIZE UP TO:** largest plot in sotka. Works for the same sections as the minimum: houses, land plots and industrial bases."
          },
          "ownersOnly": {
            "title": "👤 Owners only",
            "type": "boolean",
            "description": "👤 **PRIVATE SELLERS ONLY:** keep only adverts posted by the owner (krisha.kz's own 'from owners' filter), leaving out agents, agencies and developers. Handy for a for-sale-by-owner lead list."
          },
          "withPhotosOnly": {
            "title": "📷 With photos only",
            "type": "boolean",
            "description": "📷 **PHOTOS REQUIRED:** skip adverts that have no photos."
          },
          "sortBy": {
            "title": "↕️ Sort by",
            "enum": [
              "newest",
              "cheapest",
              "most-expensive"
            ],
            "type": "string",
            "description": "↕️ **ORDER:** newest first is krisha.kz's default and the right one for a scheduled run that only wants what appeared since the last one. Adverts that paid to be raised also count as new on the day they were raised.\n\n💡 **TIP:** price order is handy when you only need the cheapest or the most expensive slice of a large search.",
            "default": "newest"
          },
          "includeDetails": {
            "title": "📄 Add full details",
            "type": "boolean",
            "description": "📄 **FULL DETAILS (PAID ADD-ON):** open each advert's own page for its GPS coordinates, the complete description, every photo, kitchen area, days on market and the full parameter list (bathroom, balcony, furniture, flooring, security and more).\n\n💰 Billed as one Listing Details event per advert on top of the listing row, and only when the page was read. Adds a few seconds per advert.",
            "default": false
          },
          "searchUrls": {
            "title": "🌐 Search URLs",
            "type": "array",
            "description": "🌐 **YOUR OWN SEARCH:** paste krisha.kz search addresses instead of filling the form, e.g. https://krisha.kz/prodazha/kvartiry/almaty/?das[live.rooms]=2. Build the search on the site and copy the address bar. Its filters carry over, including ones this form does not offer; page numbers and tracking tags are dropped.\n\n⚠️ When set, deal type, property type, location, filters and sort above are ignored. Max results and full details still apply.",
            "default": [],
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}