POST /api/midland/estates
Price: 20 credits
Get the full profile of one Hong Kong residential estate (屋苑) or estate phase by id (or estate URL). Returns the estate name in Chinese and English, type, address, generated description, developer, vendor, occupation dates per phase, land-lease term, block and storey breakdown, total units and blocks, live listing counts with price and rent ranges and averages per bedroom count, the saleable-area price index with month-on-month change and deal counts, the eight-level geography and coordinates, school nets with named primary and secondary schools, MTR lines and stations, walkable amenities, estate facilities and features such as pet policy, every phase with its buildings, photos, site plans, videos, the full floor plan library, nearby Midland branches, and the most recent sale and rental deals in the estate.
Get one Hong Kong estate profile by id. Accepts an estate id ('E000004419', short form 'E00024') or a phase id ('P000000424'), and a full estate URL. Set lang / unit / currency for the output locale — note that per-area prices follow the chosen unit. Find ids with midland/estates/search, then use midland/properties/search with estate_ids for live listings and midland/transactions/search with estate_ids for the deal history.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)lang string — Output language. Districts, estates, buildings and feature names are all translated. (default: "zh-hk"; one of: "zh-hk", "zh-cn", "en")unit string — Area unit used for areas and per-area prices. (default: "feet"; one of: "feet", "meter")currency string — Currency used for prices, rents and monthly payments. (default: "HKD"; one of: "HKD", "CNY")estate string required — Midland estate or estate-phase id, or the full estate URL. (examples: "E000004419")@type string (default: "MidlandEstate")id string requiredname string nullablename_en string nullableurl string nullableurl_zh_cn string nullableurl_en string nullableestate_type string nullablebuilding_type string nullableis_phase boolean nullableis_hos boolean nullableaddress string nullabledescription string nullablehighlights string nullablefacilities_text string nullablerating integer nullabledeveloper string nullablevendor string nullablemanagement_company string nullableop_date_text string nullablefirst_op_at integer nullablelast_op_at integer nullableland_lease_text string nullableblock_count_text string nullablestorey_text string nullabletotal_flats_text string nullabletotal_phase_text string nullablesell_count integer nullablerent_count integer nullablemin_price number nullablemax_price number nullablemin_rent number nullablemax_rent number nullableavg_net_ft_price number nullablemin_net_ft_price number nullablemax_net_ft_price number nullableavg_net_ft_rent number nullablemin_net_ft_rent number nullablemax_net_ft_rent number nullablemarket_stat object nullable@type string (default: "MidlandMarketStat")net_ft_price number nullableprevious_net_ft_price number nullablenet_ft_price_change_percent number nullableft_price number nullableprevious_ft_price number nullableft_price_change_percent number nullablenet_ft_rent number nullabletransaction_count integer nullabletransaction_amount number nullableroom_stats array (default: [])@type string (default: "MidlandEstateRoomStat")bedroom_count string requiredsell_count integer nullablerent_count integer nullablemin_price number nullablemax_price number nullableavg_net_ft_price number nullablemin_net_ft_price number nullablemax_net_ft_price number nullablemin_rent number nullablemax_rent number nullableavg_net_ft_rent number nullablemin_net_ft_rent number nullablemax_net_ft_rent number nullableroom_market_stats array (default: [])@type string (default: "MidlandEstateRoomMarketStat")bedroom_count string requiredavg_net_ft_price number nullableavg_net_ft_rent number nullablecensus object nullable@type string (default: "MidlandEstateCensus")population integer nullablemedian_age number nullableage_0_14 integer nullableage_15_24 integer nullableage_25_44 integer nullableage_45_64 integer nullableage_65_plus integer nullableeducation_primary_and_below integer nullableeducation_secondary integer nullableeducation_post_secondary integer nullablehousehold_count integer nullableavg_household_size number nullablemedian_household_income number nullablemedian_active_household_income number nullablemedian_mortgage_payment number nullablemortgage_to_income_percent number nullablemedian_rent number nullablerent_to_income_percent number nullableowner_with_mortgage_percent number nullableowner_without_mortgage_percent number nullablesole_tenant_percent number nullableworking_population integer nullablemanagers_and_administrators integer nullableprofessionals integer nullableassociate_professionals integer nullableclerical_support_workers integer nullableservice_and_sales_workers integer nullableother_occupations integer nullablegeo object nullable@type string (default: "MidlandGeo")region object nullable@type string (default: "MidlandRef")id string nullablename string nullablesubregion object nullable@type string (default: "MidlandRef")id string nullablename string nullabledistrict object nullable@type string (default: "MidlandRef")id string nullablename string nullablesm_district object nullable@type string (default: "MidlandRef")id string nullablename string nullablecombined_district object nullable@type string (default: "MidlandRef")id string nullablename string nullableint_district object nullable@type string (default: "MidlandRef")id string nullablename string nullableint_sm_district object nullable@type string (default: "MidlandRef")id string nullablename string nullablelux_district object nullable@type string (default: "MidlandRef")id string nullablename string nullablelocation object nullable@type string (default: "MidlandLocation")latitude number nullablelongitude number nullableschool_net object nullable@type string (default: "MidlandSchoolNet")kindergarten_id string nullablekindergarten_name string nullableprimary_id string nullableprimary_name string nullablesecondary_id string nullablesecondary_name string nullableprimary_schools array (default: [])secondary_schools array (default: [])mtr_lines array (default: [])mtr_stations array (default: [])amenities array (default: [])@type string (default: "MidlandAmenity")type string nullablename string nullablewalking_minutes integer nullablefacility_groups array (default: [])@type string (default: "MidlandRef")id string nullablename string nullablefeatures array (default: [])@type string (default: "MidlandRef")id string nullablename string nullabletop_estates array (default: [])phases array (default: [])@type string (default: "MidlandEstatePhase")id string nullablename string nullableurl string nullablelatitude number nullablelongitude number nullablebuildings array (default: [])@type string (default: "MidlandEstateBuilding")id string nullablename string nullableaddress string nullablebuilding_type string nullablefirst_op_at integer nullablelatitude number nullablelongitude number nullablehas_floor_plan boolean nullableother_phases array (default: [])@type string (default: "MidlandRef")id string nullablename string nullablephotos array (default: [])@type string (default: "MidlandEstatePhoto")url string nullablename string nullablesite_plans array (default: [])videos array (default: [])@type string (default: "MidlandPropertyVideo")id string nullableurl string nullablestream_url string nullablethumbnail string nullablefloor_plans array (default: [])@type string (default: "MidlandFloorPlan")id string nullablename string nullableurl string nullablesource string nullablephase_id string nullablephase_name string nullablebuilding_id string nullablebuilding_name string nullablefloor_from string nullablefloor_to string nullablefloor_text string nullablebranches array (default: [])@type string (default: "MidlandBranchContact")name string nullablephone string nullablerecent_sale_transactions array (default: [])@type string (default: "MidlandNearbyTransaction")price number nullablenet_area number nullablebedroom_count integer nullableestate_name string nullablephase_name string nullablebuilding_name string nullablefloor string nullablefloor_name string nullableflat string nullablegain_percent number nullableholding_period_years number nullablerecent_rent_transactions array (default: [])@type string (default: "MidlandNearbyTransaction")price number nullablenet_area number nullablebedroom_count integer nullableestate_name string nullablephase_name string nullablebuilding_name string nullablefloor string nullablefloor_name string nullableflat string nullablegain_percent number nullableholding_period_years number nullablesale_listings_url string nullablerent_listings_url string nullabletransactions_url string nullabletransaction_history_url string nullablenews_url 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 — No estate or phase with this id. 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.