Cian Real Estate Monitor avatar

Cian Real Estate Monitor

Pricing

from $2.50 / 1,000 real estate observations

Go to Apify Store
Cian Real Estate Monitor

Cian Real Estate Monitor

Monitor Moscow secondary apartments and commercial property for sale or rent with retained price history, suitability checks, and explicit collection coverage.

Pricing

from $2.50 / 1,000 real estate observations

Rating

0.0

(0)

Developer

Ivan Solovyev

Ivan Solovyev

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Share

🏢 Cian Real Estate Monitor

Track Moscow residential and commercial property over time
Comparable prices, retained history, suitability checks, and explicit collection coverage.
Price history
Every successful observation is retained.
Commercial screening
Area, budget, floor, and preferred-use checks stay explainable.
Safe monitoring
A missing result is never labelled as sold or delisted.

Overview

Cian Real Estate Monitor collects Moscow secondary apartments for sale and commercial property for sale or rent. It accepts a validated Cian search URL or structured filters, records comparable observations across runs, and keeps each watch isolated by stateKey.

For commercial rentals, price is normalized to the total monthly rent and priceUnit is MONTHLY_RENT_RUB. For sales, price is the total sale price and priceUnit is SALE_TOTAL_RUB. Source price fields remain available for audit.

The Dataset includes current property data, previous price, change classification, bounded history, and optional suitability checks. Contacts, phone numbers, owner data, and address-based identity matching are outside the dataset.

Supported markets

  • Moscow secondary apartments: sale.
  • Moscow commercial property: sale and rent.
  • Maximum 5 result pages and 100 unique listings per run.
  • Listing identity uses the Cian listing identifier, never the address alone.

How to use

  1. Choose search for a current snapshot or monitor for a scheduled watch.
  2. Provide either searchUrl or structured property, deal, price, area, and room filters.
  3. Keep the Residential proxy country set to RU.
  4. Reuse one stable stateKey only for the same search contract.
  5. Schedule repeated monitor runs to build history.

Pricing

  • $0.005 per Actor start.
  • $0.0025 per observation written to the default Dataset.
  • Platform usage, including the default Residential RU proxy, is included.

In monitor mode, set emitUnchanged to false to write and pay only for new, updated, or reappeared observations. Successful observations still extend the retained history even when unchanged rows are not emitted.

Commercial rent example:

{
"mode": "monitor",
"assetType": "commercial",
"dealType": "rent",
"minArea": 150,
"maxArea": 400,
"maxPrice": 800000,
"preferredSpecialties": ["gymHall", "fitnessCentre"],
"groundFloorOnly": true,
"maxPages": 1,
"maxItems": 20,
"stateKey": "moscow-commercial-gym-watch",
"historyLimit": 20,
"emitUnchanged": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "RU"
}
}

Input

  • mode: search or monitor.
  • searchUrl: optional HTTPS Cian URL for a supported Moscow market. Do not combine it with structured search filters.
  • assetType: secondaryFlat or commercial when searchUrl is empty.
  • dealType: sale or rent. Apartment rent is not supported.
  • rooms: optional room counts from 1 to 6 for secondary apartments.
  • minPrice, maxPrice: total sale price or total monthly rent bounds in RUB.
  • minArea, maxArea: total area bounds in square meters and suitability criteria.
  • preferredSpecialties: optional Cian specialty codes or names, such as gymHall and fitnessCentre.
  • groundFloorOnly: evaluates known floor data against a ground-floor requirement.
  • maxPages: 1 to 5 result pages.
  • maxItems: 1 to 100 unique listings.
  • stateKey: optional observation identity. An automatic key is built from the normalized search and evaluation contract when empty.
  • historyLimit: 2 to 100 retained observations per listing.
  • emitUnchanged: includes UNCHANGED records in the Dataset. History is updated either way.
  • proxyConfiguration: Apify proxy settings. The default uses Residential with country RU.

The Actor rejects unsupported cities, new builds, unsupported deal and property combinations, non-Cian hosts, and plain HTTP. It does not silently rewrite an unsupported URL into another market.

Output

{
"platform": "cian",
"id": "123456789",
"title": "Помещение свободного назначения, 220 м²",
"assetType": "commercial",
"dealType": "rent",
"price": 550000,
"priceUnit": "MONTHLY_RENT_RUB",
"sourcePrice": 2500,
"sourcePriceType": "squareMeter",
"paymentPeriod": "monthly",
"monthlyRent": 550000,
"annualRentPerSqm": 30000,
"totalArea": 220,
"minArea": 150,
"pricePerSqm": 2500,
"address": "Москва, ул. Примерная, 10",
"url": "https://www.cian.ru/rent/commercial/123456789/",
"commercialType": "freeAppointment",
"specialtyTypes": ["gymHall"],
"specialtyNames": ["Спортивный зал"],
"suitabilityScore": 100,
"suitabilityStatus": "MATCH",
"suitabilityChecks": [
{"criterion": "minArea", "status": "MATCH", "expected": 150, "actual": 220}
],
"observedAt": "2026-10-03T10:00:00+00:00",
"runId": "example-run",
"firstSeenAt": "2026-10-02T10:00:00+00:00",
"lastSeenAt": "2026-10-03T10:00:00+00:00",
"previousPrice": 600000,
"priceChange": -50000,
"priceChangePct": -8.33,
"changeType": "UPDATED",
"changedFields": ["price", "monthlyRent", "pricePerSqm"],
"historyCount": 2
}

changeType values:

  • NEW: first observation under this state key.
  • UPDATED: one or more tracked fields changed.
  • UNCHANGED: the listing was observed again with the same tracked fields.
  • REAPPEARED: the listing returned to the monitored result set after an earlier complete comparable run did not contain it.

The Actor does not emit removed, expired, delisted, or sold events. A listing missing from a limited run is not classified as a market event.

Suitability checks

Suitability evaluates only data available in the listing. Every criterion is reported as MATCH, MISMATCH, or UNKNOWN; unknown values do not lower the percentage score. The result is a screening aid, not an engineering, legal, licensing, accessibility, electrical-capacity, ventilation, or noise assessment.

Commercial search pages can include promoted or grouped offers whose areas exceed requested bounds. The Dataset retains the source values and shows the result through suitability checks rather than hiding it.

Coverage and run summary

The default key-value store record RUN_SUMMARY contains:

  • pagesFetched, offersObserved, totalOffers, and itemsEmitted;
  • limitReached, scanComplete, and coverageScope;
  • counts for every changeType;
  • run status and duration.

scanComplete is true only when unique collected listings cover the reported result total without an item or page limit. FULL_RESULT_SET, LIMITED_BY_MAX_ITEMS, LIMITED_BY_MAX_PAGES, PARTIAL_ERROR, and UNPROVEN make the coverage decision explicit.

Observation state is stored in the named key-value store cian-price-history-state. Record names are hashed from stateKey, and a short TTL lock protects the state update from overlapping runs of the same watch.

Local development

Python 3.12 is required.

python3.12 -m venv .venv
.venv/bin/python -m pip install -r requirements-dev.txt
.venv/bin/python -m pytest -q

RU / На русском

Актор собирает вторичные квартиры на продажу и коммерческие помещения на продажу или в аренду в Москве. Для аренды поле price означает полную месячную ставку, для продажи полную цену объекта. История сохраняет успешные замеры и отделяет новое, изменившееся, неизменившееся и повторно появившееся в выборке объявление.

Для коммерческих объектов можно проверять площадь, бюджет, этаж и назначение. Неизвестные значения не ухудшают оценку. Такая оценка помогает отобрать кандидатов, но не заменяет техническую, юридическую и эксплуатационную проверку помещения.

Полнота запуска отражена в RUN_SUMMARY. Ограниченная выдача не создаёт вывод о снятии объявления с продажи или аренды.