# Cian.ru Russia Real Estate

> Search Cian.ru, Russia's largest property portal: flats, rooms, houses, land, townhouses and commercial property, for sale, long-term rent or daily rent, in any region or city. Filters: rooms, new-build/resale, price, area, kitchen, floor, building year, owner-only or developer-only, one agency's ads, metro station with walking time, district, residential complex. Each row carries the printed price, price per m², rent terms (deposit, tenant commission, utilities), rooms, areas, floor, metro with minutes, address, coordinates, photos, the seller and the phone numbers the page publishes. `region` is required.
> ReefAPI engine `cian` · 4 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/cian/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed calls are free except verified SHEIN NOT_FOUND on product/detail and price (4 credits).
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http). Send the key as `Authorization: Bearer <key>`, or put it in the URL (`?key=<key>`) when the client has no header field, as ChatGPT does.

## Endpoints

### POST https://api.reefapi.com/cian/v1/search — 3 credits
Search Cian.ru, Russia's largest property portal: flats, rooms, houses, land, townhouses and commercial property, for sale, long-term rent or daily rent, in any region or city. Filters: rooms, new-build/resale, price, area, kitchen, floor, building year, owner-only or developer-only, one agency's ads, metro station with walking time, district, residential complex. Each row carries the printed price, price per m², rent terms (deposit, tenant commission, utilities), rooms, areas, floor, metro with minutes, address, coordinates, photos, the seller and the phone numbers the page publishes. `region` is required.

**Parameters:**
- `region` (string, required) — Where to search: a Cian region or city id from `regions` (1 Moscow, 2 Saint Petersburg, 4593 Moscow Oblast, 4588 Leningrad Oblast, 4777 Kazan, 4897 Novosibirsk…) or its exact Russian name (`Казань`), resolved with Cian's own city lookup.
- `deal` (enum, optional, default "sale") — sale (default) or rent. [one of: sale, rent]
- `property_type` (enum, optional, default "flat") — What kind of property (default flat). [one of: flat, room, house, house_part, land, townhouse, commercial]
- `rent_term` (enum, optional) — deal=rent of a flat, room or house: long-term (default) or daily. [one of: long, daily]
- `commercial_type` (enum, optional) — property_type=commercial: which kind. [one of: office, retail, warehouse, free_purpose, catering, garage, production, car_service, business, building, domestic_services]
- `rooms` (array, optional) — Flats: room counts, one or several in ONE call (1, 2, 3, 4, 5, 6 = 6+, studio), e.g. `1,2`. [one of: 1, 2, 3, 4, 5, 6, studio]
- `building` (enum, optional) — Flats for sale: new-build or resale. [one of: secondary, new]
- `min_price` (integer, optional) — Minimum price in roubles (sale: total; long rent: per month; daily rent: per day).
- `max_price` (integer, optional) — Maximum price in roubles (same basis as min_price).
- `min_area` (integer, optional) — Total area from, m².
- `max_area` (integer, optional) — Total area up to, m².
- `min_kitchen_area` (integer, optional) — Flats: kitchen area from, m².
- `min_floor` (integer, optional) — Floor from.
- `max_floor` (integer, optional) — Floor up to.
- `not_first_floor` (boolean, optional) — Exclude ground-floor flats.
- `not_last_floor` (boolean, optional) — Exclude top-floor flats.
- `min_build_year` (integer, optional) — Building year from.
- `max_build_year` (integer, optional) — Building year up to.
- `seller` (enum, optional) — Only ads placed by the owner, or only by developers. [one of: owner, developer]
- `user_id` (integer, optional) — Only ads of one Cian account (an agency, agent or developer) — the `seller.user_id` of any row.
- `metro` (integer, optional) — One metro station id (from `geo_suggest` or a row's metro[].id), e.g. 8 = Арбатская.
- `max_walk_minutes` (integer, optional) — With `metro`: at most this many minutes on foot to it.
- `district` (integer, optional) — One district / okrug id (from `geo_suggest` or a row's districts[].id), e.g. 13 = Арбат.
- `newbuilding_id` (integer, optional) — One residential complex (ЖК) id (from `geo_suggest` or a row's newbuilding.id).
- `sort` (enum, optional) — Result order. Default is Cian's own ranking, which can repeat an ad across pages; use `newest` to page through a result set. [one of: price_asc, price_desc, newest, area_desc, price_per_m2_asc]
- `page` (integer, optional, default 1) — Result page, 1-54 (up to 28 ads per page; Cian serves at most 1,500 ads per query).
- `include_pii` (boolean, optional, default false) — Accepted for gateway compatibility; seller fields are returned as published.

**Returns:** {region, total, page, page_size, last_page, has_more, sort, filters_applied, duplicates_dropped, listings[]}. Each listing: id, url, category, deal_type, offer_type, title, summary, price_rub, price_text, price_min_rub, price_max_rub, price_per_m2_rub, price_period, price_text_was_placeholder, price_raw{value, unit, period, currency}, currency, sale_type, mortgage_allowed, bargain_allowed, vat_type, vat_rub, deposit_rub, tenant_fee_pct, agent_fee_pct, prepay_months, lease_term, utilities_included, utilities_price_rub, meters_not_included, terms_text, rooms, flat_type, is_studio, is_apartments, is_new_building, total_area_m2, living_area_m2, kitchen_area_m2, min_area_m2, land{area, unit, status}, floor, floors_total, build_year, completion{year, quarter, is_complete}, building_material, decoration, newbuilding{id, name, house, finish, url}, address, address_parts[], districts[], metro[{id, name, minutes, transport, line_color}], lat, lng, description, photos[], photo_count, has_video, published_at, updated_at, added_text, seller{kind, user_id, name, account_type, is_owner, is_developer, is_passport_verified, level, phones[]}, is_top3, is_premium, is_auction, is_unique, mortgage_text.

**Example request body:**
```json
{
  "region": "1",
  "deal": "sale",
  "property_type": "flat",
  "rooms": "2",
  "sort": "newest"
}
```

### POST https://api.reefapi.com/cian/v1/listing — 3 credits
One Cian ad in full: status (published/deleted), title and full description, the printed price and its raw basis, price per m², the full price-change history with the previous price, rent terms table, rooms, all areas, floor, building year, material, lifts, parking, repair, bathrooms, balconies, amenities, the site's feature table, residential complex, address, metro with minutes, coordinates, all photos and videos, view counter, and the seller (name, agency/developer, account type, ad count, phones). Either `id` or `url` is required.

**Parameters:**
- `id` (string, optional) — Cian ad id exactly as a `search` row gives it (`id`), e.g. 333511998.
- `url` (string, optional) — Or the ad URL (https://www.cian.ru/sale/flat/<id>/).
- `include_pii` (boolean, optional, default false) — Accepted for gateway compatibility; seller fields are returned as published.

**Returns:** {id, url, status, is_active, is_archived, category, deal_type, offer_type, title, description, price_rub, price_text, price_min_rub, price_max_rub, price_per_m2_rub, price_raw{}, deposit_rub, tenant_fee_pct, agent_fee_pct, prepay_months, lease_term, utilities_included, price_history[{at, price, currency, period}], previous_price_rub, price_change_rub, rooms, flat_type, total_area_m2, living_area_m2, kitchen_area_m2, land{}, floor, floors_total, build_year, building_material, ceiling_height_m, passenger_lifts, cargo_lifts, parking, repair, decoration, windows_view, bathrooms_combined, bathrooms_separate, balconies, loggias, amenities[], features[{section, label, value}], rent_terms[{label, value}], newbuilding{}, address, address_parts[], districts[], metro[], lat, lng, photos[], photo_count, videos[], published_at, created_at, edited_at, added_text, views_total, views_today, views_text, is_top3, is_premium, is_unique, seller{kind, user_id, name, company_name, account_type, user_type, is_owner, is_developer, is_passport_verified, offers_count, registered_at, avatar, phones[]}, developer{name, id, description}}

**Example request body:**
```json
{
  "url": "https://www.cian.ru/sale/flat/333511998/"
}
```

### POST https://api.reefapi.com/cian/v1/regions — 1 credit
Cian's own region and city ids for `search`: the 85 top-level regions, the cities of one region (`region_id`), or a name lookup (`query`).

**Parameters:**
- `query` (string, optional) — Find cities/regions by name (Russian), e.g. `Казань`. Without query and region_id the 85 top-level regions are listed.
- `region_id` (integer, optional) — List the cities of this region id, e.g. 4588.

**Returns:** {mode, query, region_id, regions[{id, name, full_name, parent_id, main_town_id, has_metro, has_districts, lat, lng, host}]}

**Example request body:**
```json
{
  "query": "Казань"
}
```

### POST https://api.reefapi.com/cian/v1/geo_suggest — 1 credit
Cian's own location lookup: type part of a name and get metro stations (with lines), districts, residential complexes (ЖК), cities, roads, railway stations and builders with the ids `search` accepts (`metro`, `district`, `newbuilding_id`).

**Parameters:**
- `query` (string, required) — Text to look up: a metro station, district, street, residential complex or city, in Russian, e.g. `Арбат`.
- `region` (integer, optional, default 1) — Region id to look in (default 1 = Moscow).
- `deal` (enum, optional, default "sale") — sale (default) or rent. [one of: sale, rent]
- `property_type` (enum, optional, default "flat") — flat (default), suburban or commercial context. [one of: flat, suburban, commercial]

**Returns:** {query, region, metro[{id, name, full_name, lines[]}], districts[], newbuildings[{id, name, address, url}], cities[], roads[], railways[], builders[]}

**Example request body:**
```json
{
  "query": "Арбат",
  "region": 1
}
```

## At scale
- **Volume:** 5M+ requests a day, measured at 60 requests a second across the fleet with no
  central bottleneck. Per-key limits are raised for high-volume accounts; volume pricing on request.
- **Missing a source:** tell us a site we do not cover and it becomes an engine. A customer asked
  for bestprice.gr on 21 Sep 2026 and it was in the catalog on 22 Sep.
- **Support:** 2 minute median time from a question in the live chat to the first answer. Setup
  help included, no support tier to buy.
- **One key, one credit pool** across every API. No per-site plans, no separate subscriptions.

## More
- Try it live, no code: https://reefapi.com/playground?engine=cian
- Human docs page: https://reefapi.com/docs/cian
- Overview page: https://reefapi.com/cian-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
