Everything a filter drawer needs, with no listings attached. Use it to render the drawer
on first paint, then weblistings for the results themselves.
Accepts the same filters as the search endpoint, so counts narrow as the user
refines — "which towns have offices to let" is this call with classificationTypes
and transactionType set. With no filters it describes everything the key can see.
transactionType splits sales from lettings. Pass Sales or Lettings to
describe one track — the natural call behind a "For sale" or "To let" tab. Omit it and
both are covered in one response, which is what a combined listings page wants.
Restricting to a track empties the other track's figures rather than leaving them stale:
ask for sales and ranges.rentAnnual comes back null with availability.withRent at 0,
so a rent slider cannot be rendered on a sales tab.
ranges is the part search cannot give you. Sale price, rent, size, EPC and contract
length come back as the observed minimum and maximum across the matching listings, which
is what a slider needs for its endpoints. A null range means no matching listing carries
that figure at all — render it as unavailable, never as zero to zero.
salePrice and rentAnnual also carry a count: how many of the matching listings
actually have a price. 47 out of 128 is worth saying on screen. Size, EPC and contract
length have no such count, because the index holds no companion flag to count against and
a figure derived from the facet values alone would be quietly short.
EPC is the raw score, not a band, and a lower score is better — a non-domestic
certificate measures CO₂ emissions rather than running costs, so the scale runs the
opposite way to a residential one. Band A is 0–25, G is over 150. Fetch
/v2/reference/commercial/commercialepcband for the thresholds rather than
hardcoding them.
Sub-type counts need a single classification. classificationTypes entries carry
their subTypes only when the request narrows to exactly one classification type.
Sub-type ids repeat across families — 1 means one thing under Offices and another under
Retail — and the index does not record which family a stored sub-type belongs to, so with
several in play a count cannot be attributed to one and is omitted rather than guessed.
Every option entry carries the same id, value and label as the listing bodies, so a
selected facet can be matched straight against a listing field. value is the one to
match on; id is for the filters that take numbers.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
