POST /api/midland/commercial/properties
Price: 1 credit
Get one Midland ICI (美聯工商舖) Hong Kong commercial listing by its reference number (or listing URL). Returns the property class (office, industrial or shop), sale or lease intent, name and address, district, street and building, building grade, floor band and stock type, the area range, asking price and monthly rent with per-square-foot figures and negotiability flags, unit features, tags, media flags, thumbnail, coordinates, the nearest MTR station with walking time, a link to deals in the same building, and the assigned agents with EAA licence numbers, emails, phone, WhatsApp and WeChat contacts.
Get a single Hong Kong commercial listing from Midland ICI by property_no (e.g. 'C0138196'); a full listing URL is also accepted. Set lang for the output language. Areas are in square feet and prices in HKD. Find reference numbers with midland/commercial/properties/search.
access-token string requiredtimeout integer — Max scrapping execution timeout (in seconds) (default: 300; min: 20; max: 1500)lang string — Output language for names, districts and agent details. (default: "zh-hk"; one of: "zh-hk", "zh-cn", "en")property_no string required — Midland ICI property reference, or the full listing URL. (examples: "C0138196")@type string (default: "MidlandCommercialProperty")property_no string requiredname string nullableurl string nullableusage string nullabletransaction_types array (default: [])address string nullabledistrict_code string nullabledistrict string nullablestreet object nullable@type string (default: "MidlandRef")id string nullablename string nullablebuilding object nullable@type string (default: "MidlandRef")id string nullablename string nullablegrade object nullable@type string (default: "MidlandRef")id string nullablename string nullablefloor_level object nullable@type string (default: "MidlandRef")id string nullablename string nullablestock_type object nullable@type string (default: "MidlandRef")id string nullablename string nullablemin_area number nullablemax_area number nullableprice number nullableprice_per_area number nullablerent number nullablerent_per_area number nullableis_price_negotiable boolean nullableis_rent_negotiable boolean nullablefeatures array (default: [])@type string (default: "MidlandRef")id string nullablename string nullabletags array (default: [])@type string (default: "MidlandRef")id string nullablename string nullablehas_photo boolean nullablehas_video boolean nullablehas_vr boolean nullablehas_vr720 boolean nullableimage string nullablelocation object nullable@type string (default: "MidlandLocation")latitude number nullablelongitude number nullablemtr_station string nullablemtr_walking_seconds integer nullabletransactions_url string nullableagents array (default: [])@type string (default: "MidlandCommercialAgent")id string nullablelicence_no string nullablename string nullablename_zh_cn string nullablename_en string nullablejob_title string nullableemail string nullablephone string nullablewhatsapp string nullablewechat_id string nullablewechat_qr string nullableimage string nullabledepartment_id string nullabledepartment_name string nullabledepartment_code string nullableis_sole_agent boolean 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 commercial listing with this reference number. 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.