Returns the filter metadata for the website listings — option lists, counts and ranges.

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.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Query Params
int32
0 to 2147483647
int32
1 to 100
string
enum

Sort options for the website listing search. "Relevance" is Typesense's own
text ranking and only means anything alongside q.

Allowed:
string
enum

Sales or lettings — the site's For sale / To let tabs. Omit for both.

Allowed:
string

Free text over address, town, county, postcode, outcode, reference and
unit names.

string
string
string
double

Centre latitude for a radius search. Requires Lng and Radius.

double

Centre longitude for a radius search. Requires Lat and Radius.

double

Search radius in miles. Requires Lat and Lng. Listings without
coordinates are excluded from a radius search rather than silently ranked last.

ClassificationTypes
array of objects

One or more classification types. A listing carries the classification of
what is marketed: the unit's for an individual-unit listing, otherwise the
building's.

ClassificationTypes
Allowed:
ClassificationSubTypes
array of int32s

Subtype ids within the selected types, matching any.

ClassificationSubTypes
UseClasses
array of objects

Use classes, matching any.

UseClasses
Amenities
array of objects

Amenities, matching all — the design's wording is "listings that
have all the amenities you pick".

Amenities
string
enum
Allowed:
SalesMarketingStatuses
array of objects

Sales marketing statuses to include — the "include Sold STC" toggle. Implies sales,
so it is filtered within that track only.

Deliberately separate from Open.Api.Models.Commercial.CommercialWebListingQueryParams.LettingsMarketingStatuses rather than one
shared list: the two enums collide on their underlying numbers (2 is Sold STC
for sales but Reserved for lettings, 3 is Sold STCM against Let Agreed), so a single
list could not say which was meant.

SalesMarketingStatuses
Allowed:
LettingsMarketingStatuses
array of objects

Lettings marketing statuses to include — the "include Let Agreed" toggle.
Implies lettings. See Open.Api.Models.Commercial.CommercialWebListingQueryParams.SalesMarketingStatuses for why the two are
separate.

LettingsMarketingStatuses
Allowed:
int64

Lower bound of the caller's budget. Matching is range overlap: a
listing matches when any part of its price range falls inside the caller's, so a
multi-let building surfaces whenever one of its units fits. Compared against sale
price for sales listings and annualised rent for lettings.

int64
double

Size bounds in square feet, matched as range overlap like price.

double
int32

Lower bound of the EPC score.

On a non-domestic EPC a lower score is better — it measures CO₂ emissions, not

running costs, so the scale runs the opposite way to a domestic certificate. Band A is
0–25 and band G is over 150, and a score below 0 is A+.

So a caller wanting "A or B only" sets Open.Api.Models.Commercial.CommercialWebListingQueryParams.MaxEpc to 50, notOpen.Api.Models.Commercial.CommercialWebListingQueryParams.MinEpc. Using MinEpc for that returns the least efficient buildings.

The index carries the raw score rather than the band, so the band conversion is the
caller's: A+ <0, A 0–25, B 26–50, C 51–75, D 76–100, E 101–125, F 126–150, G 150+.

int32

Upper bound of the EPC score, and the one a "minimum band" filter wants —
see Open.Api.Models.Commercial.CommercialWebListingQueryParams.MinEpc for why.

string
enum

Lettings only — type of let.

Allowed:
int32

Lettings only — contract length bounds in months. Where a listing covers
several units with differing terms the index holds the shortest available, so
these bound that figure.

int32
int32
1 to 3650

Only listings first listed within this many days.

boolean

Return facet counts for the filter groups. Off by default because it
costs Typesense extra work on every query.

Headers
string
enum
Defaults to application/json

Generated from available response content types

Allowed:
Responses

Language
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
text/plain
application/json
text/json