
Global Sources Supplier Scraper
scrape.ly/store/cornerledger/globalsources-scraperLead generationE-commerce
2 monthly users

Scrape cian.ru property listings in Russia by city, district, metro or map pin, or from search and listing URLs. Get price, ₽/m², rooms, area, floor, address, metro, coordinates, building, new-build complex, seller and phone.
Turn cian.ru, Russia's largest property portal, into a clean spreadsheet. Type a city, district, metro station or street (or paste any cian.ru search) and get every listing with price, ₽/m², rooms, area, floor, full address, metro and walking time, coordinates, building details, new-build complex, seller and phone number. No login, no browser: 1,000 listings in about half a minute.
Москва, Казань, Хамовники, м. Арбатская, Тверская улица, or English names such as Moscow and Kazan. No region IDs to look up (they work too).Москва, Санкт-Петербург, Хамовники) or paste cian.ru URLs (search pages with your filters, or single listings). You can also set a map pin.| Field | What it does |
|---|---|
locations | Places in Russia: city or region (Москва, Московская область), district (Хамовники), metro (м. Арбатская), street (Тверская улица), English city names, or a cian region ID (1 = Moscow, 2 = St Petersburg). |
startUrls | cian.ru search URLs (every filter set on the site is kept) or listing URLs (always with full details). |
maxItems | Listings to save in total (default 20, 0 = no limit). Shared by all searches. |
dealType | sale or rent. |
propertyType | flat, room, house, townhouse, land, commercial. |
rentTerm | long (monthly) or daily, for rentals. |
rooms | Flats: any of studio, 1 … 5, 6+, freeLayout. |
minPrice / maxPrice | Price range in roubles. |
minArea / maxArea | Total area range in m². |
minFloor / maxFloor | Floor range. |
market | Flats: any, new (новостройки) or secondary (вторичка). |
ownerOnly | Only listings from owners (от собственника). |
publishedWithin | any, hour, day, week, month. |
sortBy | default, price_asc, price_desc, price_per_sqm_asc, newest, area_desc, metro_walk. |
latitude / longitude / radiusKm | Map pin search (radius 2 km by default, up to 50). |
scrapeDetails | Open each listing page for price history, views, every feature and seller stats (extra event). |
maxItemsPerSearch | Cap per location, URL or map pin. |
Example: 1- and 2-room flats for sale in Moscow under 20 million roubles, newest first:
{
"locations": ["Москва"],
"dealType": "sale",
"propertyType": "flat",
"rooms": ["1", "2"],
"maxPrice": 20000000,
"sortBy": "newest",
"maxItems": 100
}
One row per listing. The main fields:
| Field | Example |
|---|---|
id, url | 332687430, https://www.cian.ru/sale/flat/332687430/ |
title | Видовая квартира в ЦАО в Сталинке |
dealType, propertyType, category | sale, flat, flatSale |
price, currency, pricePerSqm | 45700000, RUB, 761667 |
rentPeriod, deposit, commissionPercent, utilitiesIncluded | rentals only |
rooms, isStudio, areaTotal, areaLiving, areaKitchen, landArea | 2, false, 60, 37, 9, null |
floor, floorsTotal, ceilingHeight | 3, 10, 3.0 |
buildingMaterial, buildingYear, buildingDeadline, parking, lifts | stalin, 1930, null, ground |
isNewBuilding, complexName, complexUrl, developerName | new-build complex (ЖК) and developer |
address, region, city, okrug, district, street, houseNumber | full address, split into parts |
latitude, longitude | 55.765083, 37.655526 |
metro, metroMinutes, metroTransport, metroStations | nearest stations with minutes on foot or by transport |
sellerType, sellerName, sellerId, sellerUrl, isOwner, isAgent | agent, Анна Петрова, … |
phone, phones | +79160000000 |
description, photos, photoCount, thumbnail, videoCount | full text and every photo |
publishedAt, createdAt, addedText | dates |
oldPrice, discountPercent, isPremium, isTop3 | promotions |
features, priceHistory, viewsText, sellerOffersCount, sellerSince | with Open each listing page |
Example row (trimmed; the seller is fictional):
{
"id": 332687430,
"url": "https://www.cian.ru/sale/flat/332687430/",
"title": "Видовая квартира в ЦАО в Сталинке",
"dealType": "sale",
"propertyType": "flat",
"price": 45700000,
"currency": "RUB",
"priceText": "45 700 000 ₽",
"pricePerSqm": 761667,
"rooms": 2,
"areaTotal": 60,
"areaLiving": 37,
"areaKitchen": 9,
"floor": 3,
"floorsTotal": 10,
"buildingMaterial": "stalin",
"buildingYear": 1930,
"address": "Москва, ЦАО, р-н Басманный, м. Красные ворота, Садовая-Черногрязская ул., 13/3С1",
"city": "Москва",
"okrug": "ЦАО",
"district": "р-н Басманный",
"latitude": 55.765083,
"longitude": 37.655526,
"metro": "Красные ворота",
"metroMinutes": 8,
"metroTransport": "walk",
"sellerType": "agent",
"sellerName": "Анна Петрова",
"isOwner": false,
"phone": "+79160000000",
"photoCount": 31,
"publishedAt": "2026-10-21T10:20:22Z",
"detailScraped": false
}
You pay per saved listing:
Examples: 1,000 listings ≈ $2.00; 1,000 listings with listing pages ≈ $5.00. Platform usage (compute and proxy traffic) is billed on top and is small: about $0.006 for a 1,000-listing run in our tests. No start fee, no subscription, nothing charged for listings that are not saved.
Is it legal to scrape cian.ru? The scraper only reads public listing pages that anyone can open without an account. You are responsible for how you use the data, especially personal data such as sellers' names and phone numbers; check the laws that apply to you (for example 152-FZ in Russia or the GDPR) before storing or contacting anyone.
Do I need a cian.ru account or a proxy? No login is needed. The run uses the platform's datacenter proxy by default and switches to Russian residential addresses by itself if cian.ru starts refusing requests.
How many listings can I get? As many as cian.ru lists for your search. One cian search shows about 1,500 listings; bigger searches are split into price bands automatically. We exported 10,000 Moscow listings in one run.
Why is a field empty? Fields are only filled when the listing has them: new builds have no build year but a completion quarter, rooms and land plots have no floor count, rentals have no price per m². Turn on Open each listing page for the extra fields.
Can I schedule it or use the API? Yes. Save your input as a task, schedule it daily or weekly, and read the results with the API or an integration.
Does it work outside Moscow? Yes, for every region and city on cian.ru, from Saint Petersburg to Vladivostok.
viewsText and addedText are cian's own Russian text (for example 154 просмотра, 131 за сегодня).Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
locationsarrayOptionalLocations
Places in Russia to search: a city or region (Москва, Санкт-Петербург, Казань, Московская область), a district (Хамовники), a metro station (м. Арбатская) or a street (Тверская улица). English city names such as Moscow or Kazan work too, and so does a cian region ID such as 1 (Moscow) or 2 (St Petersburg). Each one is a separate search using the deal type, property type and filters below.
startUrlsarrayOptionalcian.ru URLs
Search result pages from cian.ru (every filter you set on the site is kept) or single listing pages such as https://www.cian.ru/sale/flat/335122475/. Listing pages always come with their full details.
maxItemsintegerOptionaldefault 20Max listings
How many listings to save in total. 0 means no limit. One cian search pages through about 1,500 listings; bigger searches are split by price automatically so you can go further.
dealTypeenumOptionaldefault "sale"Deal type
Buy or rent. Used with Locations and the map pin.
propertyTypeenumOptionaldefault "flat"Property type
What kind of property to search for. Used with Locations and the map pin.
rentTermenumOptionaldefault "long"Rent term
Long-term (monthly) or daily rentals. Only used when Deal type is rent.
roomsarrayOptionalRooms
Flats only. Pick any number of room counts; leave empty for any.
minPriceintegerOptionalMin price (₽)
Lowest price in roubles (per month for long-term rent).
maxPriceintegerOptionalMax price (₽)
Highest price in roubles (per month for long-term rent).
minAreaintegerOptionalMin area (m²)
Smallest total area in square metres.
maxAreaintegerOptionalMax area (m²)
Largest total area in square metres.
minFloorintegerOptionalMin floor
Lowest floor.
maxFloorintegerOptionalMax floor
Highest floor.
marketenumOptionaldefault "any"New or resale
Flats only: new builds (новостройки), resale (вторичка) or both.
ownerOnlybooleanOptionaldefault falseOwners only
Only listings posted by the owner (от собственника), no agents.
publishedWithinenumOptionaldefault "any"Published within
Only listings posted recently.
sortByenumOptionaldefault "default"Sort by
Order of the results. Searches split by price keep this order within each price band.
latitudenumberOptionalMap pin latitude
Search around a point instead of (or as well as) Locations: latitude of the centre, for example 55.7539. Needs Longitude too.
longitudenumberOptionalMap pin longitude
Longitude of the centre, for example 37.6208.
radiusKmnumberOptionalRadius (km)
Distance around the map pin, in kilometres (default 2, up to 50).
scrapeDetailsbooleanOptionaldefault falseOpen each listing page
Adds the price history, view count, every feature from the listing page (ceiling height, view from the windows, renovation, bathroom, balcony...), and the seller's listing count and join date. One extra page per listing, charged as a listing-details event.
maxItemsPerSearchintegerOptionalMax listings per search
Cap for each location, URL or map pin on its own, so one big search does not use up Max listings. Leave empty for no per-search cap.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy
Datacenter addresses are used first; if cian.ru refuses them, the run switches to Russian residential addresses by itself.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| id | number | null | |
| url | string | null | |
| title | string | null | |
| dealType | string | null | |
| propertyType | string | null | |
| category | string | null | |
| price | number | null | |
| currency | string | null | |
| priceText | string | null | |
| pricePerSqm | number | null | |
| rentPeriod | string | null | |
| deposit | number | null | |
| commissionPercent | number | null | |
| utilitiesIncluded | boolean | null | |
| saleType | string | null | |
| mortgageAllowed | boolean | null | |
| oldPrice | number | null | |
| discountPercent | number | null | |
| rooms | number | null | |
| isStudio | boolean | null | |
| areaTotal | number | null | |
| areaLiving | number | null | |
| areaKitchen | number | null | |
| landArea | number | null | |
| landAreaUnit | string | null | |
| floor | number | null | |
| floorsTotal | number | null | |
| ceilingHeight | number | null | |
| decoration | string | null | |
| isApartments | boolean | null | |
| isNewBuilding | boolean | null | |
| buildingMaterial | string | null | |
| buildingYear | number | null | |
| buildingDeadline | string | null | |
| passengerLifts | number | null | |
| cargoLifts | number | null | |
| parking | string | null | |
| complexName | string | null | |
| complexId | number | null | |
| complexUrl | string | null | |
| developerName | string | null | |
| address | string | null | |
| region | string | null | |
| city | string | null | |
| okrug | string | null | |
| district | string | null | |
| street | string | null | |
| houseNumber | string | null | |
| latitude | number | null | |
| longitude | number | null | |
| metro | string | null | |
| metroMinutes | number | null | |
| metroTransport | string | null | |
| metroStations | array | null | |
| sellerType | string | null | |
| sellerName | string | null | |
| sellerId | string | null | |
| sellerUrl | string | null | |
| isOwner | boolean | null | |
| isAgent | boolean | null | |
| phone | string | null | |
| phones | array | null | |
| description | string | null | |
| photos | array | null | |
| photoCount | number | null | |
| thumbnail | string | null | |
| videoCount | number | null | |
| publishedAt | string | null | |
| createdAt | string | null | |
| addedText | string | null | |
| isPremium | boolean | null | |
| isTop3 | boolean | null | |
| features | object | null | |
| priceHistory | array | null | |
| viewsText | string | null | |
| sellerOffersCount | number | null | |
| sellerSince | string | null | |
| detailScraped | boolean | null | |
| searchQuery | string | null | |
| scrapedAt | string | null |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Listing | One cian.ru listing saved to the dataset | $0.002 |
| Listing details | Listing page details (price history, views, all features, seller stats) added to a saved listing | $0.003 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('roamandroof/cian-scraper').call({
"locations": [
"Москва"
],
"maxItems": 20,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run roamandroof/cian-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=roamandroof/cian-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Long-term rentals in Saint Petersburg: 1-2 rooms, up to 80,000 RUB a month, newest first.
Scrape any cian.ru search URL with the filters you set on the site.
Moscow new-build flats with price history, view counts and every listing feature.
Search by a district (Хамовники) or a metro station (м. Арбатская).
Houses and cottages for sale around Kazan, with land area.
Rentals within 1.5 km of a point on the map.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.