Cian Scraper — Russia Property Data & API avatar

Cian Scraper — Russia Property Data & API

Pricing

from $1.70 / 1,000 overview listings

Go to Apify Store
Cian Scraper — Russia Property Data & API

Cian Scraper — Russia Property Data & API

Cian scraper & real estate data API for Russia's #1 property portal. Sale & rent listings nationwide — flats, rooms, houses, commercial & new builds: price, price/m², rooms, area, floor, metro, GPS, building, seller — clean JSON/CSV.

Pricing

from $1.70 / 1,000 overview listings

Rating

0.0

(0)

Developer

SIÁN OÜ

SIÁN OÜ

Maintained by Community

Actor stats

1

Bookmarked

28

Total users

10

Monthly active users

15 hours ago

Last modified

Share

Cian Scraper — Russia Property Data & API 🏠

SIÁN Agency Store Idealista Zoopla Immobiliare

🇷🇺 Turn Cian — Russia's #1 real-estate portal (~31M visits/month) — into clean, structured property data.

For investors, analysts, PropTech teams and lead-gen pros who need Moscow, St Petersburg & nationwide listings as JSON, CSV or Excel — no account, no API key.


🔎 What is the Cian Scraper — and when should you use it?

The Cian Scraper turns sale and rent listings from the Russian property portal cian.ru into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

Use it when you need: price in roubles and price per square metre, rooms, and the total, living and kitchen area. Each listing also gives the floor and the building's floor count, the nearest metro station with walk time, coordinates, building material and year, and the new-build complex and developer where there is one. Seller type and phone number come through as well.

Use something else when: you want a different Russian portal, or a different country. Use Avito Real Estate Scraper for Avito's Russian classifieds listings, including rooms, houses, commercial space and land. Use Yandex Realty Scraper for Yandex Realty's sale and rent listings for Russia. This actor reads cian.ru only, so listings that sit on other Russian portals will not show up here.

🤖 Use with AI agents

Already connected to the Apify MCP server? Just ask for this Actor by name: sian.agency/cian-property-scraper

Your agent can pay for its own runs. This Actor is eligible for agentic payments, so an agent can discover it, run it and settle the bill over x402 (USDC on Base) or Skyfire — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

I want Russian property data from Cian using the Apify Actor `sian.agency/cian-property-scraper`.
Use it when I need: price in roubles and price per square metre, rooms, and the total, living and kitchen area. Each listing also gives the floor and the building's floor count, the nearest metro station with walk time, coordinates, building material and year, and the new-build complex and developer where there is one. Seller type and phone number come through as well.
Don't use it when: you want a different Russian portal, or a different country — use avito-property-scraper or yandex-realty-scraper instead.
How to call it: pick a `searchMode` — `byApiLocation` (fastest: a free-text `location` such as a city, district or metro station, or a `latitude`/`longitude` pair with a `radius` in km), `bySearchUrl` (paste cian.ru search URLs into `searchUrls`, or build a search from `deal`, `offerType` and `region`), or `byListingUrl` (specific listing URLs, valid only with `scrapeMode: "detail"`). `scrapeMode` is `overview` (core fields off the search results) or `detail` (full listing page). Filters `rooms`, `minPrice`/`maxPrice`, `minArea`/`maxArea`, `newBuild` and `sort` apply across modes.
Start with this input:
{
"searchMode": "byApiLocation",
"location": "Москва",
"deal": "sale",
"offerType": "flat",
"maxResults": 50
}
Ask me which city, district or metro station, and whether you want sale or rent, then run the Actor and summarise the results as a table.

Things you can ask your agent for:

  • Pull 1- and 2-room flats for sale in Хамовники and rank them by price per square metre.
  • Compare asking rents near a Moscow metro station against sale prices in the same district.
  • Track new-build listings from one developer in St Petersburg week over week.

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at apify.com/sian.agency/cian-property-scraper.md.

📋 Overview

Cian (Циан) is the largest real-estate marketplace in Russia — millions of for-sale and for-rent listings across flats, rooms, houses, land, commercial space and new-build complexes (ЖК). This scraper pulls them into a clean dataset you can analyze, enrich or feed straight into your own pipeline.

What you get:

  • Nationwide coverage: Moscow, St Petersburg and any Cian region — by ID, filters, or pasted search URL.
  • High throughput: a full page of listings comes back per request, so a single run covers thousands of properties.
  • 🌆 Search by place name or map pin: the fast By API location mode takes a free-text city, district or metro station — "Москва", "Хамовники", "м. Арбатская" — or latitude/longitude/radius, with no region ID to look up.
  • 🎯 Rich, structured fields: price, price/m², rooms, area, floor, metro & walk time, GPS, building material/year, complex & developer, seller type — all normalized.
  • 💸 Transparent pay-per-result: 25 listings free per run, then pay only for the listings you keep. Nothing is charged until your input is validated.
  • 💎 Two depths: fast & cheap Overview (every core field from the search results) or full Detail (complete description, all photos, full building & seller data per listing).
  • 🛏️ Native filters & sort: deal type, property type, rooms, price & area ranges, new-builds only, and Cian's own sort orders — exactly the levers you'd use on the site.

✨ Features

  • 🧭 Overview mode: a full page of listings per request — price, ₽/m², rooms, area, floor, metro, GPS, building and seller, straight from the search results.
  • 🔍 Detail mode: the full per-listing record — complete description, the whole photo gallery and the richest building & seller fields.
  • 🌆 By API location: type a city, district, metro station or street and skip the region ID entirely. Or search around a map pin with latitude, longitude and a radius in km.
  • 🔗 By search URL: build the search on Cian, paste the URL, keep every on-page filter.
  • 🆔 By listing URL: hand it a list of specific listings and get the full record for each.
  • 🎚️ Native filters & sort: deal type, property type, rooms, price range, area range, new-builds only, and Cian's own sort orders.
  • 📊 Price per m² on every row, worked out from price and total area so you don't have to.
  • 🚇 Metro station and walk time on every listing, for territory and commute analysis.
  • 📄 Run report on every run: what you extracted, what failed and why, and an itemized charges statement.
  • 📤 Clean exports: JSON, CSV, Excel, or the full Apify REST API.

🎬 Quick Start

Choose a scrape depth, choose how to search, set your filters, and run. Results stream into the Apify dataset as clean JSON, CSV or Excel.

curl -X POST "https://api.apify.com/v2/acts/sian.agency~cian-property-scraper/runs?token=[YOUR_TOKEN]" \
-H 'Content-Type: application/json' \
-d '{"scrapeMode":"overview","searchMode":"byApiLocation","location":"Москва","deal":"sale","offerType":"flat","maxResults":50}'

Paste a search URL

Build any search on Cian (set filters, sort, region), copy the URL from the address bar, and drop it into Search URLs — every on-page filter is preserved.

https://www.cian.ru/cat.php?deal_type=sale&engine_version=2&offer_type=flat&region=1&room2=1

⚡ Fast search by location (no region ID)

Prefer a place name over a region ID? Set Search by to By API location, then type a Location — a city, district, metro station or street such as "Москва", "Санкт-Петербург" or "Хамовники" — or set Latitude / Longitude / Radius for a map-pin search. Your Deal type, Property type, Rooms, Price/Area range and Sort filters all still apply. This path is fast and light: it runs comfortably at 512 MB, while the actor default stays 2 GB for the URL and region modes.


🚀 Getting Started (3 Simple Steps)

Step 1: Pick your scrape depth

Overview for a fast price and spec scan across a whole market, or Detail for the complete per-listing record.

By API location (type a city, district or metro station), By search URL (paste a Cian search link — filters honored), or By listing URL (Detail mode — drop in specific listings).

Step 3: Set filters and run

Deal type, property type, rooms, price range, area range, new-builds only, sort order, Max results — then hit Start.

That's it! In under a minute, you'll have:

  • A clean dataset of Russian property listings (JSON / CSV / Excel)
  • Price, ₽/m², rooms, area, floor, metro, GPS, building and seller on every row
  • A repeatable, no-code real-estate data feed you can schedule

📥 Input Configuration

FieldTypeRequiredDescription
scrapeModestringNooverview (fast, all core fields) or detail (full per-listing fields).
searchModestringNobySearchUrl, byListingUrl (detail only), or byApiLocation — fast search by place name or coordinates.
dealstringNosale or rent.
offerTypestringNoflat · room · house · townhouse · land · commercial.
regionintegerNoCian region ID (1 = Moscow, 2 = St Petersburg, …).
newBuildbooleanNoRestrict to new-build (ЖК) offers.
roomsarrayNoOne or more room counts — 15, or 6 for 6+ rooms.
searchUrlsarrayNoPaste Cian search-results URLs — all filters preserved.
listingUrlsarrayNoDetail mode: specific listing URLs to fetch.
locationstringNoAPI mode: free-text place — city, district, metro or street.
latitude / longitude / radiusnumberNoAPI mode: map-pin search center and radius (km, default 5).
minPrice / maxPriceintegerNoPrice range in roubles.
minArea / maxAreanumberNoArea range in m².
sortstringNoPrice ↑ · Price/m² · Newest · Area · Walk time to metro.
maxResultsintegerNoRun cap. Free tier: 25/run. Paid: unlimited.

Example — fast search by place name:

{
"scrapeMode": "overview",
"searchMode": "byApiLocation",
"location": "Москва",
"deal": "sale",
"offerType": "flat",
"maxResults": 50
}

Example — full records for specific listings:

{
"scrapeMode": "detail",
"searchMode": "byListingUrl",
"listingUrls": [
"https://www.cian.ru/sale/flat/317927888/"
]
}

📤 Output

Each listing is one clean record. Sample fields:

FieldExample
id317927888
urlhttps://www.cian.ru/sale/flat/317927888/
deal_type / offer_typesale / flat
price / currency / price_rub44426100 / rur / 44426100
price_per_sqm955400
rooms / area_total / floor / floors_total1 / 46.5 / 12 / 18
is_new_building / building_material / building_yeartrue / monolith / 2025
jk_name / developer_nameЖК SHIFT / …
city / district / addressМосква / …
lat / lng55.70 / 37.58
metro / metro_minutes / metro_transportЛенинский проспект / 10 / walk
seller_type / seller_name / phonedeveloper / … / +7…
photos / photo_count / description[ … ] / 12 /

Example row (trimmed):

{
"id": 317927888,
"url": "https://www.cian.ru/sale/flat/317927888/",
"deal_type": "sale",
"offer_type": "flat",
"price_rub": 44426100,
"price_per_sqm": 955400,
"rooms": 1,
"area_total": 46.5,
"floor": 12,
"floors_total": 18,
"is_new_building": true,
"jk_name": "ЖК SHIFT",
"city": "Москва",
"lat": 55.70,
"lng": 37.58,
"metro": "Ленинский проспект",
"metro_minutes": 10,
"seller_type": "developer"
}

Export as JSON, CSV or Excel from the dataset, or pull via the Apify API.


💼 Use Cases & Examples

1. Investor and buyer lead-gen

Pull fresh listings by region, price band and rooms, ranked and ready to call.

Input: Overview mode, a region or place name, a price range and the room counts you buy. Output: A ranked list with price, ₽/m², area, floor, metro and seller contact. Use: A daily shortlist your acquisitions team can work through.

2. Price-per-m² market analysis

Track ₽/m² across districts, metro lines and new-build complexes.

Input: The same search run for several districts or metro stations. Output: price_per_sqm on every row, plus district, city, metro and GPS. Use: District-level pricing benchmarks and heat maps.

3. Realtor and developer intelligence

Monitor who is listing what, by seller type.

Input: Overview mode across a market you compete in. Output: seller_type, seller_name, is_agent and phone on every listing. Use: Market-share tracking by agency, developer or private owner.

4. New-build (ЖК) tracking

Follow developer inventory, completion deadlines and complex-level pricing.

Input: New-builds only, filtered to a city or region. Output: jk_name, developer_name, building_deadline and pricing per complex. Use: A weekly view of what one developer is releasing and at what price.

5. Rental-yield research

Pair sale and rent pulls in the same area to model gross yield.

Input: Two runs over the same location, one with deal: "sale" and one with deal: "rent". Output: Comparable rows with price, area and ₽/m² for both sides. Use: Gross-yield estimates by district, building age or metro distance.

6. Portfolio and competitor monitoring

Watch a saved search and diff it run over run.

Input: A scheduled run on a pasted Cian search URL. Output: The same dataset shape every time, ready to compare. Use: New listings, price cuts and withdrawals, detected automatically.

7. Valuation and CMA data feeds

Feed a valuation model with comparables that carry real attributes.

Input: Detail mode on a set of comparable listings. Output: Building material, build year, decoration, full area breakdown and photos. Use: Defensible comparables for AVM and CMA work.


🔗 Integration Examples

JavaScript/Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('sian.agency/cian-property-scraper').call({
scrapeMode: 'overview', searchMode: 'byApiLocation', location: 'Москва', deal: 'sale', offerType: 'flat', maxResults: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('sian.agency/cian-property-scraper').call(
run_input={'scrapeMode': 'overview', 'searchMode': 'byApiLocation', 'location': 'Москва', 'deal': 'sale', 'offerType': 'flat', 'maxResults': 50}
)
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(item)

cURL

curl -X POST 'https://api.apify.com/v2/acts/sian.agency~cian-property-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"scrapeMode":"overview","searchMode":"byApiLocation","location":"Москва","deal":"sale","offerType":"flat","maxResults":50}'

Automation Workflows (N8N / Zapier / Make)

  1. Trigger: Schedule (e.g. daily) or webhook
  2. HTTP Request: Call the actor API
  3. Process: Handle the JSON results
  4. Action: Save to a sheet or database, notify, or transform

📊 Performance & Pricing

FREE Tier (Try It Now)

  • 25 listings per run — full feature access, same fields, same quality
  • No credit card required
  • Perfect for testing and small projects
  • Unlimited listings per run
  • Pay-per-result: you are charged per listing extracted, never for failed fetches
  • Overview and Detail are priced separately, so you only pay for the depth you use

💰 Overview from $2.50 per 1,000 listings on paid plans, dropping further on higher plans — Detail priced separately for the full per-listing record.

🔗 View current pricing


❓ Frequently Asked Questions

Q: How many listings can I extract? A: FREE tier: 25 per run. PAID tier: unlimited.

Q: Do I need a Cian account or API key? A: No. Just configure the input and run.

Q: Which regions are supported? A: Any Cian region — pick the region ID off a Cian search URL (1 = Moscow, 2 = St Petersburg, and so on). Don't want to hunt for an ID? Use Search by → By API location and just type the place name, or drop in latitude and longitude.

Q: Overview vs Detail — which should I use? A: Start with Overview: it already carries price, rooms, area, floor, metro, GPS, building and seller fields for most use cases. Switch to Detail only when you need the complete description, the full photo gallery and the richest per-listing data.

Q: How is pricing calculated? A: Pay-per-result: you are charged per listing extracted, with a free tier to try it out. Your input is validated before any charge.

Q: Can I filter by price, rooms or new-builds? A: Yes — all native Cian filters are exposed, or paste a search URL with the filters already applied.

Q: What output formats are available? A: JSON, CSV, Excel — export directly from the Apify dataset, or pull them over the API.

Q: Does it work for both sale and rent? A: Yes — set Deal type to sale or rent. Run both over the same area to model rental yield.


🐛 Troubleshooting

No results returned

  • Check the place-name spelling in By API location ("Москва", not "Moscow"), or paste a working Cian search URL instead.
  • Loosen your filters — a tight price or area range combined with a small district can legitimately return zero listings.

Fewer results than expected

  • The FREE tier is capped at 25 listings per run. Upgrade for unlimited, or raise Max results.
  • Cian caps how deep a single search paginates. Slice a big market into several narrower searches (by district, price band or room count) and run them separately.

Listing URLs seem to be ignored

  • By listing URL only works with Scrape mode: detail. Set both, and put the URLs in Listing URLs, not Search URLs.

Some listings failed

  • Open the run's Processing Report: each failed item is listed with the reason and a ready-made retry input you can paste straight back into the JSON input tab. Failed fetches are never charged.

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the legality of web scraping.

Independent tool, not affiliated with, endorsed by, or sponsored by Cian (Циан). All trademarks belong to their respective owners. Use responsibly and in line with applicable terms and laws.


🤝 Support

Telegram Support

Join our active support community


🔗 More by SIÁN Agency

Love this actor? Leave a 5-star review — it helps us build more features for you.


Built by SIÁN Agency | More Tools