Discover/Cian API
live

Cian APIcian.ru

Search Moscow apartment listings on cian.ru by district, price range, rooms, and sort order. Returns price, area, metro, floor, coordinates, and building info.

This API takes change requests — .
Endpoint health
verified 2h ago
search_apartments
1/1 passing latest checkself-healing
Endpoints
1
Updated
3h ago

What is the Cian API?

The cian.ru API exposes one endpoint — search_apartments — that returns paginated Moscow apartment-for-sale listings with 10+ structured fields per offer, including price, area, room count, floor, address, metro station, and GPS coordinates. Filter by district using cian.ru internal IDs, set a ruble price range, specify room counts (including studios as 9), and sort results to match your query requirements.

This call costs10 credits / call— charged only on success
Try it
Page number for pagination (1-based).
Sort order for results.
Comma-separated room counts to filter by (e.g. '1,2,3'). Studio = 9.
District (округ) ID on cian.ru. Known IDs: 11 = ЗАО (Western), 13 = ЦАО (Central), 12 = САО (Northern), 325 = НАО (Новомосковский). Omitting searches all Moscow.
Maximum price in rubles (e.g. 120000000 for 120 million).
Minimum price in rubles (e.g. 30000000 for 30 million).
api.parse.bot/scraper/4b71aac9-2dd8-49f4-936e-f3b3b675ad71/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/4b71aac9-2dd8-49f4-936e-f3b3b675ad71/search_apartments?page=1&sort=default&rooms=2&district=11&max_price=120000000&min_price=30000000' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace cian-ru-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.


"""Walkthrough: Cian SDK — bounded, re-runnable; every call capped."""
from parse_apis.cian_ru_api import Cian, Sort, InvalidInput

client = Cian()

# Search apartments in Western Moscow (ЗАО), sorted by price ascending
for apt in client.apartments.search(district="11", min_price="30000000", max_price="120000000", sort=Sort.PRICE_ASC, limit=3):
    print(apt.title, apt.price, apt.total_area, apt.metro_station)

# Get the cheapest apartment for inspection
cheapest = client.apartments.search(district="11", min_price="30000000", max_price="50000000", sort=Sort.PRICE_ASC, limit=1).first()
if cheapest:
    print(cheapest.address, cheapest.floor, cheapest.floors_total, cheapest.building_type)

# Handle invalid input gracefully
try:
    for apt in client.apartments.search(district="11", limit=1):
        print(apt.id)
except InvalidInput as e:
    print(f"invalid input: {e}")

print("exercised: apartments.search")
All endpoints · 1 totalmissing one? ·

Search apartments for sale in Moscow. Returns paginated listings with price, area, rooms, floor, address, metro station, coordinates, and building info. Results are auto-iterated across pages (28 listings per page). The district filter uses cian.ru internal IDs (e.g. 11 = ЗАО/Western, 13 = ЦАО/Central).

Input
ParamTypeDescription
pageintegerPage number for pagination (1-based).
sortstringSort order for results.
roomsstringComma-separated room counts to filter by (e.g. '1,2,3'). Studio = 9.
districtstringDistrict (округ) ID on cian.ru. Known IDs: 11 = ЗАО (Western), 13 = ЦАО (Central), 12 = САО (Northern), 325 = НАО (Новомосковский). Omitting searches all Moscow.
max_pricestringMaximum price in rubles (e.g. 120000000 for 120 million).
min_pricestringMinimum price in rubles (e.g. 30000000 for 30 million).
Response
{
  "type": "object",
  "fields": {
    "page": "current page number",
    "total": "total number of matching listings across all pages",
    "offers": "array of apartment listing objects with id, url, title, price, area, rooms, floor, address, metro, coordinates, building info",
    "per_page": "number of listings per page (28)"
  },
  "sample": {
    "data": {
      "page": 1,
      "total": 6550,
      "offers": [
        {
          "id": 330002778,
          "url": "https://www.cian.ru/sale/flat/330002778/",
          "added": "15 май, 15:58",
          "floor": 3,
          "price": 30000000,
          "title": "2-комн.кв.  ·  3/14 этаж",
          "address": "Россия, Москва, улица Красных Зорь, 23",
          "category": "flatSale",
          "district": "ЗАО",
          "flat_type": "rooms",
          "build_year": 2023,
          "decoration": null,
          "total_area": 55.5,
          "coordinates": {
            "lat": 55.724601,
            "lng": 37.43463
          },
          "living_area": 32,
          "rooms_count": 2,
          "floors_total": 14,
          "kitchen_area": 10.5,
          "neighborhood": null,
          "building_type": null,
          "is_apartments": false,
          "metro_station": "Кунцевская",
          "price_per_sqm": 540541
        }
      ],
      "per_page": 28
    },
    "status": "success"
  }
}

About the Cian API

What the API Returns

The search_apartments endpoint queries Moscow apartment-for-sale listings on cian.ru and returns a paginated result set. Each response includes page (current page), total (total matching listings across all pages), per_page (fixed at 28), and an offers array. Each object in offers contains the listing id, a direct url, a title, the asking price in rubles, area in square meters, rooms count, floor, full address, nearest metro station, geographic coordinates, and building metadata.

Filtering and Pagination

The district parameter accepts cian.ru internal district (округ) IDs — for example, 11 for ЗАО (Western), 13 for ЦАО (Central), 12 for САО (Northern), and 325 for НЗАО (New Western). Price bounds are set in rubles via min_price and max_price (e.g. 30000000 for 30 million RUB). Room counts are passed as a comma-separated string in the rooms parameter; studios use the value 9. The page parameter is 1-based for straightforward iteration across result sets. The sort parameter lets you order results by relevance, price, or other available orderings.

Coverage and Scope

All listings reflect Moscow residential apartments listed for sale on cian.ru. The total field in each response tells you how many listings match your filters across all pages, so you can calculate page depth before iterating. Metro station data and GPS coordinates are included at the listing level, making the results usable for distance-based or map-driven analysis without a separate geocoding step.

Reliability & maintenanceVerified

The Cian API is a managed, monitored endpoint for cian.ru — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when cian.ru changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official cian.ru API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
2h ago
Latest check
1/1 endpoint passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a Moscow property price heatmap using coordinates and price fields from search_apartments
  • Track median asking prices per district over time by iterating all pages for each district ID
  • Filter listings by rooms and max_price to surface affordable apartments within a specific округ
  • Compare price-per-square-meter across districts using area and price fields
  • Identify listings near a specific metro station using the metro and coordinates fields
  • Aggregate total listing counts per district to measure market supply across Moscow neighborhoods
  • Alert users when new listings appear that match a saved rooms + price range + district combination
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does cian.ru have an official developer API?+
Cian.ru does not publish a public developer API or documentation portal for third-party access to its listings data.
How does district filtering work, and where do I find valid district IDs?+
The district parameter takes cian.ru's internal округ (administrative district) IDs as integers. Known mappings include 11 = ЗАО (Western), 12 = САО (Northern), 13 = ЦАО (Central), and 325 = НЗАО (New Western). These IDs correspond to Moscow's administrative divisions as used by cian.ru internally. Pass a single ID per request to scope results to that district.
Does the API cover rental listings or properties outside Moscow?+
The current API covers only apartments listed for sale in Moscow. Rental listings and other Russian cities are not included. You can fork this API on Parse and revise it to target rental or regional listing pages.
Can I retrieve sold or historical listing data?+
The API returns currently active for-sale listings on cian.ru. Sold, archived, or historical price data is not exposed. You can fork this API on Parse and revise it to capture additional listing states or historical snapshots if cian.ru surfaces that data in accessible pages.
What is the fixed page size and how do I retrieve all results?+
Each response returns up to 28 listings (per_page: 28) and includes a total count. Divide total by 28 and round up to determine the number of pages to iterate. Use the page parameter (1-based) to step through them.
Page content last updated . Spec covers 1 endpoint from cian.ru.
Cian Apartments API – Moscow Listings · Parse