# Cian.ru Scraper — Russia Real Estate Listings (Циан) (`hipersoft/cian-scraper`) Actor

Scrape Cian.ru (Циан) real estate: apartments, houses and commercial property for sale or rent in Moscow, St Petersburg and all Russia. Price, area, rooms, floor, address, coordinates, metro, photos, description, agency. Goes past the result limit.

- **URL**: https://apify.com/hipersoft/cian-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.00125 / listing

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Cian.ru Scraper: Russia Real Estate Listings (Циан парсер)

**Cian.ru Scraper** extracts **real estate listings from Cian (Циан)**, Russia's largest property portal. It covers **apartments, rooms, houses, land and commercial property, for sale or long-term rent** in Moscow, St Petersburg and every other Russian region. Each listing comes with the **price, area, rooms, floor, building details, full address, GPS coordinates, nearest metro stations, photos, description, seller type and agency**. Export to **CSV, Excel or JSON**. Large searches are split automatically, so you can collect **far more than the ~1,500 results** the website shows per search.

### What does Cian.ru Scraper do?

- 🏙️ **Any Russian region**: Moscow, St Petersburg, Moscow and Leningrad oblasts, Kazan, Novosibirsk, Yekaterinburg, Krasnodar, Sochi, Nizhny Novgorod, or any other region by its Cian ID.
- 🏠 **All property types**: apartments and rooms, houses, cottages and land, and commercial real estate.
- 💰 **Sale or rent**, with price filters, room counts, new-build only and owner-only options.
- 📐 **Property details**: total, living and kitchen area, rooms, floor and total floors, build year, wall material and finishing.
- 📍 **Location**: full address, address parts (district, neighbourhood, street), coordinates and nearest metro stations with walking or transit time.
- 🏗️ **New developments**: residential complex name and developer.
- 🖼️ **Photos and description** of every listing.
- ♾️ **Unlimited results**: big searches are split into price bands automatically.

### What data can you scrape from Cian.ru?

| Field | Example |
|---|---|
| Price (₽) | 60,000 |
| Price as shown | 60 000 ₽/мес. |
| Deposit / payment period | 50,000 / monthly |
| Rooms | 2 |
| Total / living / kitchen area | 43 m² |
| Floor / floors in building | 14 / 23 |
| Build year, material, finishing | when listed |
| Address | Санкт-Петербург, проспект Просвещения, 83 |
| Coordinates | 60.0368, 30.4073 |
| Metro | Гражданский проспект, 10 min walk |
| Residential complex & developer | new-builds |
| Photos | full-size photo URLs |
| Description | full listing text |
| Seller type & agency | agency / owner, agency name |
| Added date | listing date |

### Use cases for Russian real estate data

- **Price analytics**: build price-per-m² maps for Moscow and St Petersburg districts and metro stations.
- **Investment research**: compare rental yields, new-build prices and secondary-market listings.
- **Real estate agencies**: monitor competitors' listings and find owner-only offers.
- **Developers**: track new-build supply, prices and complexes in your area.
- **Rental market monitoring**: catch new rentals as soon as they're listed.
- **Academic and urban research**: housing supply and pricing across Russian cities.

### How to scrape Cian.ru

1. Click **Try for free** to open Cian.ru Scraper in Apify Console.
2. Choose **sale or rent**, the **property type** and the **region**.
3. Optionally set **rooms**, **price range**, **new buildings only** or **owners only**.
4. Choose **Sort by** and **Max listings**, then click **Start**.
5. Download the listings as **CSV, Excel or JSON**.

### Input

#### Example input

```json
{
  "dealType": "rent",
  "propertyType": "flat",
  "region": "spb",
  "rooms": ["1", "2"],
  "priceTo": 60000,
  "ownersOnly": false,
  "sortBy": "newest",
  "maxItems": 1000
}
```

| Field | Description |
|---|---|
| **Deal type** | Sale (купить) or long-term rent (снять). |
| **Property type** | Apartments & rooms, houses & land, or commercial. |
| **Region** | Moscow, St Petersburg, Moscow Oblast, Leningrad Oblast, Kazan, Novosibirsk and more. |
| **Custom region ID** | Any other region: the `region=` number from a Cian search link. |
| **Rooms** | Studio, 1–5, 6+ or free layout (apartments). |
| **Price from / to** | Price range in roubles (monthly rent for rentals). |
| **New buildings only** | Only новостройки. |
| **Owners only** | Only listings from owners (от собственника). |
| **Sort by** | Default, newest, price or area. |
| **Max listings** | Stop after this many listings (0 = all). |

### Output

#### Listing example

```json
{
  "id": "317754437",
  "url": "https://spb.cian.ru/rent/flat/317754437/",
  "title": "Сдаются впервые после ремонта",
  "category": "flatRent",
  "price": 60000,
  "priceFormatted": "60 000 ₽/мес.",
  "paymentPeriod": "monthly",
  "deposit": 50000,
  "rooms": 2,
  "totalAreaM2": 43,
  "floor": 14,
  "floorsTotal": 23,
  "address": "Россия, Санкт-Петербург, проспект Просвещения, 83",
  "latitude": 60.036793,
  "longitude": 30.407317,
  "metro": [{ "name": "Гражданский проспект", "minutes": 10, "by": "walk" }],
  "photos": ["https://images.cdn-cian.ru/images/...-1.jpg"],
  "sellerType": "agency",
  "agencyName": "SVET hotel",
  "addedAt": "2026-10-05T08:10:18.000Z"
}
```

#### Output schema

| Field | Type | Description |
|---|---|---|
| `id` | string | Cian listing ID. |
| `url` | string (URL) | Listing page. |
| `title` | string | Listing title, if any. |
| `category`, `dealType`, `propertyType` | string | Listing classification. |
| `price` | number | Price in roubles. |
| `priceFormatted` | string | Price as shown. |
| `paymentPeriod`, `deposit` | string / number | Rental terms. |
| `mortgageAllowed`, `saleType` | boolean / string | Sale terms. |
| `rooms` | integer | Rooms. |
| `totalAreaM2`, `livingAreaM2`, `kitchenAreaM2` | number | Areas. |
| `floor`, `floorsTotal` | integer | Floor and building height. |
| `buildYear`, `buildingMaterial`, `decoration` | mixed | Building and finishing. |
| `isNewBuilding`, `complexName`, `developer` | mixed | New-build details. |
| `address`, `addressParts` | string / array | Address. |
| `latitude`, `longitude` | number | Coordinates. |
| `metro` | array | Nearest metro stations with minutes. |
| `description` | string | Listing description. |
| `photos` | array | Photo URLs. |
| `sellerType`, `agencyName`, `isByHomeowner` | mixed | Seller details. |
| `agencyPhones` | array | Agency and developer phone numbers. |
| `addedAt`, `added` | string | When the listing was added. |
| `scrapedAt` | string (ISO date) | When the row was collected. |

### How much does it cost to scrape Cian.ru?

Cian.ru Scraper uses **pay-per-listing** pricing: a small fixed price per listing, with automatic discounts on higher Apify plans. See the **Pricing** tab for the exact price.

### More real estate data

- [Redfin Scraper](https://apify.com/hipersoft/redfin-scraper): US homes for sale.
- [Airbnb Scraper](https://apify.com/hipersoft/airbnb-scraper): short-term rentals.
- [AutoScout24 Scraper](https://apify.com/hipersoft/autoscout24-scraper): European car listings.

### FAQ

**Can I get more than 1,500 listings?**
Yes. Cian shows about 1,500 results per search, so the scraper automatically splits big searches into price bands and collects them all.

**Which cities are supported?**
All of Russia. Pick a city from the list or enter the region ID from any Cian search link (the number after `region=`).

**Does it include owner phone numbers?**
No. Only agency and developer phone numbers are included. Private owners' numbers are left out.

**Is daily rent supported?**
The scraper collects long-term rentals and sales. Daily rentals are excluded.

**How fresh is the data?**
Every run reads live listings. Sort by "Newest first" to get the latest offers first.

**What formats can I export?**
CSV, Excel, JSON, XML, HTML and RSS, or read the results through the Apify API.

**Can I integrate Cian.ru Scraper with other apps?**
Cian.ru Scraper can be connected with almost any cloud service or web app thanks to [integrations on the Apify platform](https://apify.com/integrations). It works with [Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), [Airbyte](https://docs.apify.com/platform/integrations/airbyte), [GitHub](https://docs.apify.com/platform/integrations/github), [Google Drive](https://docs.apify.com/platform/integrations/drive) and [many more](https://apify.com/integrations), plus the [Apify API](https://docs.apify.com/api/v2), JS/Python clients and MCP. Or use [webhooks](https://docs.apify.com/platform/integrations/webhooks) to trigger an action whenever a run finishes.

**Is it legal to scrape Cian?**
The scraper only collects publicly listed property offers. You are responsible for using the data in line with Cian's terms and applicable data protection law.

### Related Actors

- [Redfin Scraper](https://apify.com/hipersoft/redfin-scraper)
- [Airbnb Scraper](https://apify.com/hipersoft/airbnb-scraper)

### Notes

Original clean-room implementation. Returns only public data; you are responsible for compliance with Cian's terms. Not affiliated with Cian.

# Actor input Schema

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

Buy (sale) or long-term rent.

## `propertyType` (type: `string`):

Apartments, suburban houses/land, or commercial property.

## `region` (type: `string`):

City or region.

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

Optional: Cian region ID for any other city (the `region=` number in a Cian search link). Overrides the region above.

## `rooms` (type: `array`):

Number of rooms (apartments only). Leave empty for any.

## `priceFrom` (type: `integer`):

Minimum price in roubles (monthly rent for rentals).

## `priceTo` (type: `integer`):

Maximum price in roubles. 0 means no limit.

## `newBuildingsOnly` (type: `boolean`):

Only apartments in new developments (sale).

## `ownersOnly` (type: `boolean`):

Only listings posted by owners, not agencies.

## `sortBy` (type: `string`):

Order of results.

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

Stop after this many listings. 0 means all.

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

Optional. Leave the default for the most reliable results.

## Actor input object example

```json
{
  "dealType": "sale",
  "propertyType": "flat",
  "region": "moscow",
  "regionId": 0,
  "priceFrom": 0,
  "priceTo": 0,
  "newBuildingsOnly": false,
  "ownersOnly": false,
  "sortBy": "default",
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

The results as dataset items.

# 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 = {
    "dealType": "sale",
    "region": "moscow",
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/cian-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 = {
    "dealType": "sale",
    "region": "moscow",
    "maxItems": 100,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

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

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

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

```

## CLI example

```bash
echo '{
  "dealType": "sale",
  "region": "moscow",
  "maxItems": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call hipersoft/cian-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/cian-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/TsPWbM1pxOIj0d5Ag/builds/yBxBPy2mhkAlH6Vih/openapi.json
