POST /api/cian/offers/search
Price: 20 credits
Search CIAN real-estate offers within a region. Returns offer cards: id, url, deal/offer type, price (with multi-currency values), total/living/kitchen area, rooms, floor, building details, address with coordinates and nearby metro, photos, the new-building complex and the seller. Filter by deal type, property type, room layout, price/area/floor/ceiling/build-year ranges, building material, renovation, metro distance, new-build only, developer-only, owner-only, mortgage-possible, not-first-floor, balcony, loggia, video and photos, with configurable sort order.
Search CIAN offers within a region (region: numeric CIAN region ID, 1 = Moscow, 2 = Saint Petersburg). Choose deal_type (sale/rent/rent_daily) and offer_type (flat/room/house/commercial/garage/...). Each result has id (feed to cian/offers for full detail), url, price, area, rooms_count, floor_number, address, latitude/longitude, undergrounds, image+images, newbuilding and seller. Narrow with rooms, min/max price (RUB; per month for rentals), total/living/kitchen area ranges, floor and building-floors ranges, ceiling height, build-year range, house_material, repair, metro distance (max_metro_time + metro_transport), only_newbuilding, from_developer, from_owner, mortgage_possible, not_first_floor, with_balcony, with_loggia, with_video, with_photo and sort.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)region integer — CIAN region ID (e.g. 1 = Moscow, 2 = Saint Petersburg). (default: 1; >: 0)deal_type string — Deal type: sale, long-term rent or daily rent. (default: "sale"; one of: "sale", "rent", "rent_daily")offer_type string — Property type. (default: "flat"; one of: "flat", "room", "house", "house_part", "townhouse", "land", "commercial", "garage")count integer required — Max number of results to return (min: 1)only_newbuilding boolean nullable — Only new-build (primary market) offers.rooms array nullable — Restrict to these room layouts (multiple allowed). (one of: "studio", "1", "2", "3", "4", "5", "6+", "free_layout")min_price integer nullable — Minimum price (RUB; per month for rentals). (min: 0)max_price integer nullable — Maximum price (RUB; per month for rentals). (min: 0)min_total_area number nullable — Minimum total area (m²). (min: 0)max_total_area number nullable — Maximum total area (m²). (min: 0)min_living_area number nullable — Minimum living area (m²). (min: 0)max_living_area number nullable — Maximum living area (m²). (min: 0)min_kitchen_area number nullable — Minimum kitchen area (m²). (min: 0)max_kitchen_area number nullable — Maximum kitchen area (m²). (min: 0)min_floor integer nullable — Minimum floor of the flat. (min: 0)max_floor integer nullable — Maximum floor of the flat. (min: 0)min_floors_count integer nullable — Minimum number of floors in the building. (min: 0)max_floors_count integer nullable — Maximum number of floors in the building. (min: 0)min_ceiling_height number nullable — Minimum ceiling height (m). (min: 0)min_build_year integer nullable — Minimum building construction year. (min: 0)max_build_year integer nullable — Maximum building construction year. (min: 0)house_material array nullable — Restrict to these building materials (multiple allowed). (one of: "brick", "monolith", "panel", "block", "wood", "stalin", "shield", "brick_monolith", "wireframe", "aerocrete_block", "gas_silicate_block")repair array nullable — Restrict to these renovation states (multiple allowed). (one of: "without", "cosmetic", "euro", "design")metro_transport string nullable — How to measure metro distance when max_metro_time is set. (one of: "walk", "transport")max_metro_time integer nullable — Maximum time to metro (minutes), measured per metro_transport. (min: 0)from_developer boolean nullable — Only offers sold directly by the developer.from_owner boolean nullable — Only offers listed directly by the owner (no agents).mortgage_possible boolean nullable — Only offers where a mortgage purchase is possible.not_first_floor boolean nullable — Exclude offers on the first floor.with_balcony boolean nullable — Only offers that have at least one balcony.with_loggia boolean nullable — Only offers that have a loggia.with_video boolean nullable — Only offers that include a video.with_photo boolean nullable — Only offers that have photos.sort string — Result ordering. (default: "default"; one of: "default", "price_asc", "price_desc", "area", "metro_time", "street", "date_desc", "date_asc")@type string (default: "CianOffer")id integer requiredurl string nullabledeal_type string nullableoffer_type string nullablecategory string nullablestatus string nullableflat_type string nullableis_apartments boolean nullableprice integer nullableprice_rur integer nullableprice_usd integer nullableprice_eur integer nullableprice_per_meter integer nullablecurrency string nullablesale_type string nullablerooms_count integer nullabletotal_area number nullableliving_area number nullablekitchen_area number nullablefloor_number integer nullablecombined_wcs_count integer nullablewindows_view_type string nullabledecoration string nullablebuild_year integer nullablematerial_type string nullablefloors_count integer nullableceiling_height number nullablepassenger_lifts_count integer nullablecargo_lifts_count integer nullableparking_type string nullabledeadline_year integer nullabledeadline_quarter string nullableaddress string nullablelatitude number nullablelongitude number nullableundergrounds array (default: [])@type string (default: "CianUnderground")id integer nullablename string requiredline_color string nullabletravel_type string nullabletravel_time integer nullabledistricts array (default: [])@type string (default: "CianDistrict")id integer nullablename string requiredtype string nullabledescription string nullableimage string nullableimages array (default: [])published_at integer nullablecreated_at string nullableedited_at string nullablenewbuilding object nullable@type string (default: "CianNewbuildingRef")id integer nullablename string requiredurl string nullabledeadline_year integer nullabledeadline_quarter string nullableis_finished boolean nullableseller object nullable@type string (default: "CianSeller")id integer nullablename string nullabletype string nullableaccount_type string nullablecompany_name string nullableis_agent boolean nullableis_builder boolean nullableis_developer boolean nullableoffers_count integer nullableimage string nullableview_count integer nullableprice_history array (default: [])@type string (default: "CianPriceChange")date string nullableprice integer nullablecurrency string nullablefeatures array (default: [])@type string (default: "CianFeature")group string nullablelabel string requiredvalue string nullable422 — The request body did not validate Check the fields against this schema. A URN with the wrong prefix is the most common cause.408 — The request ran past its time limit Raise `timeout` in the request body, up to the maximum this endpoint documents. Lowering `count` or turning off the `with_*` flags also helps, because less work finishes sooner.412 — Region not found or no offers matched Retrying will not help: either the entity does not exist, or the input points at a different one.429 — Too many requests: a rate limit or a usage window is exhausted When the response carries an X-Retry-After header, wait that many seconds and retry: the same number is in the body as `detail.retry_after`, and the limit clears once that window passes. The message in the body names the limit that was hit.500 — Something broke on our side Retrying will not help. If it keeps happening, send us the X-Request-ID from the response headers.529 — Rate limit reached, or the endpoint is overloaded Wait at least 30 seconds, then retry.X-Error — Error message text (present only on error)X-Request-ID — Unique request identifierX-Execution-Time — Execution time in secondsX-Result-Count — How many records the body carries. 0 means an empty result, which is a normal answer and not by itself an error. A non-zero count can come back together with X-Error when the failure happened partway through — read this header and X-Error independently.X-Total-Available-Results — How many records exist for this query, when the endpoint can say. On a `dry_run` request this is the answer and the body is empty. It saturates: the endpoint's documented maximum means 'at least that many', any smaller number is exact.X-Warning — Present when the request body carried keys this endpoint does not document. They were ignored, so any filter you meant to apply through them did not apply. Check the spelling against this schema and retry.X-Retry-After — Seconds to wait before retrying. Present only on 429.