Added
- Address attributes on property vector tiles. GET /v1/property/tiles/{z}/{x}/{y} encodes the fields named in
attributesonto every feature, so a map can label and filter properties straight from the tile without a second lookup. Tiles serveaddress, which expands to the whole address block, and the individual fieldsaddress.displayAddress,address.line_1toaddress.line_3,address.post_town,address.postcode,address.postcodeNoSpace,address.outcode,address.incode,address.country,address.countryCodeandaddress.eircode. - A tile request that omits
attributescarries the four default fields:propertyId,locationId,pricing.currentSaleandmarketStatus.forSale. Sendingattributesreplaces that default set rather than adding to it, withlocationIdalways included, so name every field the style renders. Anything outside the servable list is dropped rather than rejected, so a tile still renders, and density tiles (mode=density) carry no per-feature attributes. address.countyon the property address block: the ceremonial county the postcode falls in, such asSurrey,Greater LondonorPowys. It is on the contract and in the generated SDK types, and is populated as each property is re-aggregated. It is absent where there is none, Northern Ireland has no ceremonial county, and on properties whose stored address predates the field, so absence does not mean the postcode has no county. It is not part ofdisplayAddress, cannot be filtered on, and is not servable as a tile attribute. GET /v1/address/postcodes/{postcode} resolves the same value on demand for any GB postcode.
Changed
- POST /v1/property/query serves up to 10,000 properties in one page, so a whole area comes back in one request.
limittakes a maximum of 10,000 and still defaults to 25,offseta maximum of 9,999, and the two together may not exceed 10,000: a request for a deeper page is answered with a 400 carrying the codepagination_window_exceededand namingoffset. Reach a deeper result set by narrowing the area. - Property responses are charged per property record returned, so a wider page costs proportionally more: a request sending
limit=10000receives, and is billed for, up to 10,000 records. GET /v1/property/attributes is free to call and lists what each tier costs per property record ontiers[].credits, so a page can be priced before it is sent. has_morereports whether the API will serve a next page, so a paging loop terminates onhas_morefalse, whiletotal_countkeeps reporting the full match count.has_moreis present on theX-API-Version: 2response envelope only.limitandoffsetare accepted as whole numbers.- Address suggestions rank by proximity to a supplied
latandlngon every matching path, and partial or misheard queries resolve near that point instead of anywhere in the country. It applies on GET /v1/search/suggest wherever the request already carries both coordinates, so a request without them behaves as it did. The parameters are unchanged:lat,lng,radius_metersandgeo_mode. marketStatus.forSaleresolves tounavailableonce a completion for that property is registered at HM Land Registry, and the sale entry inmarketStatus.timelineis ended at the completion date, so the status reflects the completed sale. The entry closes only on unambiguous evidence: every eligible sale listing must itself besstcorunder_offerand must have been published on an earlier day than the completion, and a completion that predates the marketing closes nothing. It takes effect for each property as that property is re-aggregated.- Every per-service health probe, such as GET /v1/property/health, answers on any valid API key whatever products that key holds, and costs nothing. Point a connectivity check or an uptime monitor at the probe for each service you integrate with.