Cian RU – Property Listings, Search Filters & URLs avatar

Cian RU – Property Listings, Search Filters & URLs

Pricing

from $1.50 / 1,000 dataset items

Go to Apify Store
Cian RU – Property Listings, Search Filters & URLs

Cian RU – Property Listings, Search Filters & URLs

Collect property listings from Cian.ru by search filters or direct URLs. Returns structured rows with listing URL, title, price, address, rooms, area, floors, photos, visible contact fields, coordinates when available, and optional detail-page enrichment.

Pricing

from $1.50 / 1,000 dataset items

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

3

Monthly active users

16 hours ago

Last modified

Share

Cian.ru Property Scraper

Collect property listings from Cian by search filters or direct URLs. Every row comes fully populated in a single fast pass: listing URL, title, price, address, rooms, area, floors, photos, coordinates, and contact phones.

Input

  • mode: choose search for filters or url for pasted Cian URLs.
  • urls: Cian search-result URLs, used in URL mode. The filters below are ignored in URL mode, so encode filters in the URL itself.

The next group applies to search mode only:

  • location / regionId: search area. Moscow is region 1, Saint Petersburg is region 2.
  • operationType: sale or rent.
  • category: flats, rooms, houses, new buildings, and commercial categories.
  • sort: default, price low→high, price per m² (asc/desc), area, newest, or walking time.
  • rooms, includeStudio: room-count filters (studio supported).
  • minPrice / maxPrice (RUB), minArea / maxArea, minFloor / maxFloor, minFloors / maxFloors.
  • advancedFilters: JSON object of raw Cian query fields for power users, e.g. {"repair":{"type":"terms","value":[2,3]}}.

Output and limits (both modes):

  • maxItems: maximum rows to save. Fewer can be returned when results or filters match fewer live records.
  • maxPages: leave 0 for no page limit. The run stops at Max items.
  • proxy: residential proxy is recommended for this site.
  • mcpConnectors: select authorized Apify MCP connectors to export saved rows to your apps.

Resume & recurring updates

  • resumeFromRunId: continue ONE interrupted crawl. Paste a previous run ID (or dataset ID) and this run skips listings it already saved, appending only new ones.
  • incrementalMode: for recurring/scheduled monitoring of the SAME search instead — remembers the previous run's results itself (keyed by your filters/URLs) and reports each listing as changeType NEW / UPDATED / REAPPEARED / EXPIRED / UNCHANGED. Off by default.
  • stateKey: optional manual key for the incremental baseline. Leave empty to derive one automatically from your mode/filters/URLs (excluding maxItems/maxPages), so identical searches share a baseline and different ones never mix.
  • emitUnchanged: also save (and charge for) listings that did not change. Off by default, so a recurring run only pays for what actually changed.
  • emitExpired: also save (and charge for) a row for previously-tracked listings no longer found, marked changeType: "EXPIRED". Only fires after a run that scanned the full tracked search — a capped, resumed, or partially-blocked run leaves previous state untouched instead of guessing.

resumeFromRunId and incrementalMode can combine to bootstrap a monitoring baseline from an interrupted crawl's dataset, but not once that baseline already has tracked listings (set a different stateKey for a separate campaign instead).

Output

Each dataset row includes:

  • id, url, sourceUrl, title, jkName
  • price, priceValue, pricePerMeter, currency
  • address, district, metro, metroTime
  • roomsCount, totalArea, livingArea, kitchenArea, floorNumber, floorsCount, buildYear, materialType
  • dealType, category, offerType, isFromDeveloper, isPremium
  • description, phoneNumbers
  • latitude, longitude
  • imageUrls, creationDate, addedLabel, scrapedAt

Incremental mode adds, only when incrementalMode is on:

  • changeType: NEW / UPDATED / REAPPEARED / EXPIRED / UNCHANGED (the last only when emitUnchanged is on).
  • changedFields: which fields differ from the previous run (empty for NEW/UNCHANGED/REAPPEARED/EXPIRED).
  • firstSeenAt, lastSeenAt: when this actor first and most recently observed the listing.

Incremental change detection ignores scrapedAt (this actor's own per-fetch timestamp) and addedLabel (cian's relative "added" label, e.g. "вчера, 14:40" — it shifts with scrape time and the day boundary independently of any real listing change). Both fields are still present in every row; they are just excluded from the change comparison itself. Every other field, including imageUrls and phoneNumbers, is measured live and stays part of the comparison.

Notes

Use broad filters first, then narrow by price, rooms, and area. Phones, coordinates, descriptions, and photos are included on every row, so there is no separate detail step. Residential proxy is recommended.