Vepler logo
v5.11.0

Property queries serve 10,000 per page, and map tiles carry address attributes

A property query returns up to 10,000 properties in one page, map tiles encode the address fields you ask for, and address suggestions rank around a supplied point.

Added

  • Address attributes on property vector tiles. GET /v1/property/tiles/{z}/{x}/{y} encodes the fields named in attributes onto every feature, so a map can label and filter properties straight from the tile without a second lookup. Tiles serve address, which expands to the whole address block, and the individual fields address.displayAddress, address.line_1 to address.line_3, address.post_town, address.postcode, address.postcodeNoSpace, address.outcode, address.incode, address.country, address.countryCode and address.eircode.
  • A tile request that omits attributes carries the four default fields: propertyId, locationId, pricing.currentSale and marketStatus.forSale. Sending attributes replaces that default set rather than adding to it, with locationId always 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.county on the property address block: the ceremonial county the postcode falls in, such as Surrey, Greater London or Powys. 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 of displayAddress, 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. limit takes a maximum of 10,000 and still defaults to 25, offset a 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 code pagination_window_exceeded and naming offset. 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=10000 receives, 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 on tiers[].credits, so a page can be priced before it is sent.
  • has_more reports whether the API will serve a next page, so a paging loop terminates on has_more false, while total_count keeps reporting the full match count. has_more is present on the X-API-Version: 2 response envelope only. limit and offset are accepted as whole numbers.
  • Address suggestions rank by proximity to a supplied lat and lng on 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_meters and geo_mode.
  • marketStatus.forSale resolves to unavailable once a completion for that property is registered at HM Land Registry, and the sale entry in marketStatus.timeline is 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 be sstc or under_offer and 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.