# CIAN Real Estate Scraper: Недвижимость ЦИАН (`getascraper/cian-real-estate-scraper`) Actor

Scrape apartment listings for sale or rent from CIAN (cian.ru), Russia's largest real estate portal - price, price per m2, rooms, area, floor, metro distance, and a developer/agency/agent/owner seller-type flag.

- **URL**: https://apify.com/getascraper/cian-real-estate-scraper.md
- **Developed by:** [GetAScraper](https://apify.com/getascraper) (community)
- **Categories:** Real estate, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.32 / 1,000 property listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## CIAN Real Estate Scraper: Недвижимость ЦИАН

<table width="100%">
<tr>
<td style="padding:24px 28px;background:#F0F9FF;border:1px solid #BAE6FD;border-top:4px solid #0284C7;border-radius:12px">
<span style="font-size:23px;font-weight:800;color:#1C1917;line-height:1.3">CIAN listings with the seller-type detail other scrapers miss</span><br>
<span style="font-size:15px;color:#57534E;line-height:1.6">Pull apartment listings from CIAN (Циан), Russia's biggest property portal, complete with price per square meter, floor and area detail, metro distance, and whether you're dealing with a developer, agency, agent, or private owner.</span>
</td>
</tr>
</table>

<table width="100%">
<tr>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BAE6FD;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#0369A1">💰 Price per m²</span><br>
<span style="font-size:12px;color:#57534E">Compare true value across listings, not just the sticker price.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BAE6FD;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#0369A1">🏷️ Seller type on every listing</span><br>
<span style="font-size:12px;color:#57534E">See developer, agency, agent, or private owner at a glance.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BAE6FD;border-left:none;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#0369A1">🏗️ Full building specs</span><br>
<span style="font-size:12px;color:#57534E">Ceiling height, material, and year built, on request.</span>
</td>
<td style="padding:14px 12px;width:25%;background:#FFFFFF;border:1px solid #BAE6FD;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:15px;font-weight:800;color:#0369A1">🖼️ Complete photo galleries</span><br>
<span style="font-size:12px;color:#57534E">Every listing photo, ready to display or analyze.</span>
</td>
</tr>
</table>

### 🔍 What does CIAN Real Estate Scraper do?

CIAN Real Estate Scraper collects apartment listings for sale or rent from
[CIAN (cian.ru)](https://www.cian.ru), the largest real estate marketplace in
Russia. Give it a region and a few filters, and it returns structured listing
data: price, price per square meter, rooms, total and living area, floor,
address, nearest metro station and walking distance, and a clear seller-type
tag showing whether the listing comes from a developer, an agency, an
individual agent, or the owner directly.

Runs go through the Apify platform, so you get automatic proxy rotation,
scheduling, and API or webhook access to every dataset without maintaining
any infrastructure yourself.

### 💡 Why use CIAN Real Estate Scraper?

**Investment funds and PropTech analysts** use it to track pricing trends
across Moscow and other Russian cities, benchmarking price per square meter
by district and building type instead of relying on headline asking prices.

**Real estate agencies** use it to monitor competitor listings, spot
newly-listed inventory in their target neighborhoods, and see how similar
units are priced across the market.

**Developers building property search tools** use it as a structured data
feed instead of scraping CIAN by hand, with consistent fields ready to load
into a database or search index.

**Buyers and researchers** use the seller-type flag to filter out agency
markup and find listings posted directly by owners or developers.

### 🚀 How to use CIAN Real Estate Scraper

<table width="100%">
<tr>
<td style="padding:16px 14px;width:33%;background:#F0F9FF;border:1px solid #BAE6FD;border-radius:10px 0 0 10px;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#0284C7;letter-spacing:1px">STEP 1</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Set your filters</span><br>
<span style="font-size:12px;color:#57534E">Pick a region, deal type, room count, price range, and floor range in the Input tab.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F0F9FF;border:1px solid #BAE6FD;border-left:none;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#0284C7;letter-spacing:1px">STEP 2</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Run the Actor</span><br>
<span style="font-size:12px;color:#57534E">Click Start. CIAN's bot defenses are handled automatically behind the scenes.</span>
</td>
<td style="padding:16px 14px;width:33%;background:#F0F9FF;border:1px solid #BAE6FD;border-left:none;border-radius:0 10px 10px 0;vertical-align:top">
<span style="font-size:12px;font-weight:800;color:#0284C7;letter-spacing:1px">STEP 3</span><br>
<span style="font-size:14px;font-weight:700;color:#1C1917">Export your data</span><br>
<span style="font-size:12px;color:#57534E">Download as JSON, CSV, or Excel, or pull it via the Apify API.</span>
</td>
</tr>
</table>

### 📥 Input

Configure the Actor from the Input tab in Apify Console, or pass JSON
directly via the API.

| Field | Type | Required | Description |
|---|---|---|---|
| `regionId` | integer | No | Numeric CIAN region id. Defaults to 1 (Moscow). |
| `dealType` | enum | No | `sale` or `rent`. Defaults to `sale`. |
| `roomCounts` | array of enum | No | Filter by room count (1 to 5, or studio). Leave empty for all. |
| `minPrice` / `maxPrice` | integer | No | Price range in Russian rubles. |
| `minFloor` / `maxFloor` | integer | No | Floor range. |
| `startUrls` | array of URLs | No | Paste your own CIAN search URLs instead of using the filters above. |
| `scrapeDetails` | boolean | No | Visit each listing's page for building specs (ceiling height, material, year built, finish). Roughly doubles run time. |
| `maxItems` | integer | No | Maximum listings to return. Defaults to 100. |
| `maxPages` | integer | No | Maximum search-result pages to paginate through. Defaults to 20. |
| `includeRawData` | boolean | No | Attach raw source HTML to each item for debugging. |
| `proxyConfiguration` | object | No | Defaults to a residential Russian proxy, the only configuration verified to reliably access CIAN. |

### 📤 Output

Every listing is returned as a JSON object in your dataset. You can download
it as JSON, HTML, CSV, or Excel, or fetch it through the Apify API.

```json
{
  "listingId": "327835011",
  "listingUrl": "https://www.cian.ru/sale/flat/327835011/",
  "dealType": "sale",
  "title": "2-комн. квартира, 44 м², 2/14 этаж",
  "rooms": 2,
  "totalArea": 44,
  "floor": 2,
  "floorTotal": 14,
  "price": 14500000,
  "pricePerSqm": 329545,
  "currency": "RUB",
  "city": "Москва",
  "district": "Лосиноостровский",
  "metroStation": "Медведково",
  "metroDistanceMinutes": 6,
  "sellerType": "agency",
  "sellerName": "Homeapp",
  "isNewBuilding": false,
  "photoCount": 13,
  "postedDateText": "6 часов назад"
}
````

#### Data table

| Field | Type | Description |
|---|---|---|
| `listingId` / `listingUrl` | string | CIAN's internal id and the canonical listing URL. |
| `dealType` / `propertyType` | string | Sale or rent, and the property type (apartment or apartments-format unit). |
| `title` | string | Listing headline as shown on CIAN. |
| `rooms` / `isStudio` | number / boolean | Room count, or a studio flag. |
| `totalArea` / `livingArea` / `kitchenArea` | number | Area in square meters. Living and kitchen area require `scrapeDetails`. |
| `floor` / `floorTotal` | number | The listing's floor and the building's total floors. |
| `price` / `pricePerSqm` / `currency` | number / string | Full price, price per square meter, and currency (RUB). |
| `city` / `district` / `okrug` / `residentialComplex` | string | Location breakdown as shown on CIAN. |
| `metroStation` / `metroDistanceText` / `metroDistanceMinutes` | string / number | Nearest metro station and distance. |
| `sellerType` / `sellerName` | string | One of developer, agency, agent, or owner, plus the seller's name. |
| `isSuperAgent` / `documentsVerified` | boolean | Trust signals CIAN itself surfaces on the listing. |
| `isNewBuilding` / `has3dTour` | boolean | Whether it's a new-build listing and whether a 3D tour is available. |
| `photos` / `photoCount` | array / number | Photo URLs and count. |
| `description` | string | Full listing description. |
| `postedDateText` | string | When the listing was posted or last updated, as shown on CIAN. |
| `ceilingHeight` / `buildingMaterial` / `yearBuilt` / `finishType` | number / string | Building specs, available with `scrapeDetails` enabled. |

### 💰 Pricing

CIAN Real Estate Scraper runs on the Apify pay-per-result model. You only
pay for the compute used during a run, empty runs cost nothing, and there's
no subscription required. Apify's free monthly usage credits cover small
test runs before you commit to a larger job.

### ⭐ Enjoying CIAN Real Estate Scraper?

<table width="100%">
<tr>
<td style="padding:20px 24px 14px;background:#F0F9FF;border:1px solid #BAE6FD;border-left:5px solid #0284C7;border-radius:10px 10px 0 0">
<span style="font-size:20px;letter-spacing:4px">⭐ ⭐ ⭐ ⭐ ⭐</span><br>
<span style="font-size:17px;font-weight:800;color:#1C1917">If this saved you from scraping CIAN by hand, a rating helps.</span><br>
<span style="font-size:14px;color:#57534E">A 5-star rating takes 10 seconds and helps other real estate analysts and agencies find this Actor. Your feedback also tells us what to build next.</span>
</td>
</tr>
<tr>
<td style="padding:0;background:#0284C7;border:1px solid #BAE6FD;border-top:none;border-radius:0 0 10px 10px;text-align:center">
<a href="https://apify.com/getascraper/cian-real-estate-scraper/reviews" style="display:block;padding:13px 16px;color:#FFFFFF;text-decoration:none;font-weight:800;font-size:15px;letter-spacing:0.3px">★&nbsp;&nbsp;Rate this Actor on Apify</a>
</td>
</tr>
</table>

### 🛠️ Tips for better runs

- Enable `scrapeDetails` only when you need building specs (ceiling height,
  material, year built). It roughly doubles the number of requests and run
  time, since each listing needs its own detail-page visit.
- Set `maxItems` and `maxPages` to reasonable bounds for testing before
  scaling up to a full-region crawl.
- Leave the default proxy configuration in place. CIAN blocks datacenter
  and unproxied traffic outright, so the residential Russian proxy default
  is required, not optional.

### ❓ FAQ

**Can I scrape houses or commercial property, not just apartments?**
Not in this version. CIAN's own filtering for houses, rooms, and land uses a
different URL structure than apartments, and it wasn't reliably verified
during development, so this Actor is scoped to apartment listings only to
avoid shipping filters that silently return the wrong data.

**Как спарсить квартиры в Москве с Циан?**
Укажите `regionId: 1` в настройках Actor. Это код Москвы на Циан, и он был
проверен вручную перед публикацией.

**Собственник или агент? Как отличить?**
Поле `sellerType` в каждой записи данных показывает: `developer`
(застройщик), `agency` (агентство), `agent` (риелтор), или `owner`
(собственник), напрямую из карточки объявления на Циан.

**Is this legal?**
This Actor only collects data that is already publicly visible on CIAN's
listing pages. You are responsible for how you use the data, including
compliance with CIAN's terms of service and any applicable data protection
law in your jurisdiction.

**What if I need a feature this Actor doesn't have?**
Open an issue in the Actor's Issues tab in Apify Console, or reach out
through Apify's support. Custom scraping projects are also available on
request.

### 🔗 Other actors

- [Yandex Realty Scraper: Яндекс Недвижимость](https://apify.com/getascraper/yandex-realty-scraper) ↗ - property listings from Russia's other major real estate portal, Yandex Realty.
- [Etagi Real Estate Scraper: Парсер Этажи](https://apify.com/getascraper/etagi-property-scraper) ↗ - listings from Etagi, a large Russian regional real estate brokerage.
- [Avito Auto Scraper: Парсер Авито Авто](https://apify.com/getascraper/avito-auto-scraper) ↗ - vehicle listings from Avito, Russia's largest classifieds site.
- [Property24 Scraper: Real Estate Listings, Prices & Broker Leads](https://apify.com/getascraper/property24-scraper) ↗ - real estate listings from South Africa's Property24.
- [CommercialRealEstate.com.au Scraper | Prices and Agents](https://apify.com/getascraper/commercialrealestate-au-scraper) ↗ - commercial property listings and agent contacts from Australia.

# Actor input Schema

## `regionId` (type: `integer`):

Numeric CIAN region id, e.g. 1 for Moscow (the only id verified against the live site). Other ids follow the same convention CIAN itself uses in its own city-search URLs, but were not individually re-tested.

## `dealType` (type: `string`):

Sale or long-term rent listings.

## `roomCounts` (type: `array`):

Filter by number of rooms. Leave empty for all. 9 means studio.

## `minPrice` (type: `integer`):

Lower bound on listing price in Russian rubles.

## `maxPrice` (type: `integer`):

Upper bound on listing price in Russian rubles.

## `minFloor` (type: `integer`):

Lower bound on the listing's floor number.

## `maxFloor` (type: `integer`):

Upper bound on the listing's floor number.

## `startUrls` (type: `array`):

Optional: paste your own CIAN cat.php search URLs (with any filters you built on the site) instead of using the fields above. When set, this overrides Region/Deal Type/Price/Floor filters.

## `scrapeDetails` (type: `boolean`):

Visit each listing's detail page to add living area, kitchen area, ceiling height, building material, year built, and finish type. Roughly doubles requests and run time.

## `maxItems` (type: `integer`):

Maximum number of listings to return.

## `maxPages` (type: `integer`):

Maximum number of search-result pages to paginate through.

## `includeRawData` (type: `boolean`):

Attach a raw HTML snippet of the source card to each item, for debugging.

## `proxyConfiguration` (type: `object`):

CIAN blocks plain requests and datacenter proxies with an explicit bot-detection WAF verdict. Residential proxies in Russia are the only combination verified to work this session; do not switch this to datacenter without re-verifying.

## Actor input object example

```json
{
  "regionId": 1,
  "dealType": "sale",
  "roomCounts": [],
  "startUrls": [],
  "scrapeDetails": false,
  "maxItems": 100,
  "maxPages": 20,
  "includeRawData": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "RU"
  }
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "regionId": 1,
    "dealType": "sale",
    "roomCounts": [],
    "startUrls": [],
    "scrapeDetails": false,
    "maxItems": 100,
    "maxPages": 20,
    "includeRawData": false,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "RU"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("getascraper/cian-real-estate-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "regionId": 1,
    "dealType": "sale",
    "roomCounts": [],
    "startUrls": [],
    "scrapeDetails": False,
    "maxItems": 100,
    "maxPages": 20,
    "includeRawData": False,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "RU",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("getascraper/cian-real-estate-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "regionId": 1,
  "dealType": "sale",
  "roomCounts": [],
  "startUrls": [],
  "scrapeDetails": false,
  "maxItems": 100,
  "maxPages": 20,
  "includeRawData": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "RU"
  }
}' |
apify call getascraper/cian-real-estate-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=getascraper/cian-real-estate-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "CIAN Real Estate Scraper: Недвижимость ЦИАН",
        "description": "Scrape apartment listings for sale or rent from CIAN (cian.ru), Russia's largest real estate portal - price, price per m2, rooms, area, floor, metro distance, and a developer/agency/agent/owner seller-type flag.",
        "version": "0.1",
        "x-build-id": "enpEcg5ipM4p0hBaP"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/getascraper~cian-real-estate-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-getascraper-cian-real-estate-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/getascraper~cian-real-estate-scraper/runs": {
            "post": {
                "operationId": "runs-sync-getascraper-cian-real-estate-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/getascraper~cian-real-estate-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-getascraper-cian-real-estate-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": {
                    "regionId": {
                        "title": "Region ID",
                        "type": "integer",
                        "description": "Numeric CIAN region id, e.g. 1 for Moscow (the only id verified against the live site). Other ids follow the same convention CIAN itself uses in its own city-search URLs, but were not individually re-tested.",
                        "default": 1
                    },
                    "dealType": {
                        "title": "Deal Type",
                        "enum": [
                            "sale",
                            "rent"
                        ],
                        "type": "string",
                        "description": "Sale or long-term rent listings.",
                        "default": "sale"
                    },
                    "roomCounts": {
                        "title": "Room Count",
                        "type": "array",
                        "description": "Filter by number of rooms. Leave empty for all. 9 means studio.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "1",
                                "2",
                                "3",
                                "4",
                                "5",
                                "9"
                            ],
                            "enumTitles": [
                                "1 room",
                                "2 rooms",
                                "3 rooms",
                                "4 rooms",
                                "5+ rooms",
                                "Studio"
                            ]
                        },
                        "default": []
                    },
                    "minPrice": {
                        "title": "Minimum Price (RUB)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Lower bound on listing price in Russian rubles."
                    },
                    "maxPrice": {
                        "title": "Maximum Price (RUB)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Upper bound on listing price in Russian rubles."
                    },
                    "minFloor": {
                        "title": "Minimum Floor",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Lower bound on the listing's floor number."
                    },
                    "maxFloor": {
                        "title": "Maximum Floor",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Upper bound on the listing's floor number."
                    },
                    "startUrls": {
                        "title": "Start URLs (advanced)",
                        "type": "array",
                        "description": "Optional: paste your own CIAN cat.php search URLs (with any filters you built on the site) instead of using the fields above. When set, this overrides Region/Deal Type/Price/Floor filters.",
                        "default": [],
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "scrapeDetails": {
                        "title": "Scrape Detail Pages",
                        "type": "boolean",
                        "description": "Visit each listing's detail page to add living area, kitchen area, ceiling height, building material, year built, and finish type. Roughly doubles requests and run time.",
                        "default": false
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 5000,
                        "type": "integer",
                        "description": "Maximum number of listings to return.",
                        "default": 100
                    },
                    "maxPages": {
                        "title": "Max Search Pages",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "Maximum number of search-result pages to paginate through.",
                        "default": 20
                    },
                    "includeRawData": {
                        "title": "Include Raw Card HTML",
                        "type": "boolean",
                        "description": "Attach a raw HTML snippet of the source card to each item, for debugging.",
                        "default": false
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "CIAN blocks plain requests and datacenter proxies with an explicit bot-detection WAF verdict. Residential proxies in Russia are the only combination verified to work this session; do not switch this to datacenter without re-verifying.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "RU"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            },
                            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
